From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH] drm/i915: Use drm_i915_private as the native pointer for intel_uncore.c Date: Mon, 09 May 2016 18:59:58 +0300 Message-ID: <1462809598.5343.12.camel@linux.intel.com> References: <1462802303-22902-1-git-send-email-chris@chris-wilson.co.uk> 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 A986D89D56 for ; Mon, 9 May 2016 15:58:15 +0000 (UTC) In-Reply-To: <1462802303-22902-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gbWEsIDIwMTYtMDUtMDkgYXQgMTQ6NTggKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBQ YXNzIGRybV9pOTE1X3ByaXZhdGUgdG8gdGhlIHVuY29yZSBpbml0L2Zpbmkgcm91dGluZXMgYW5k IHRoZWlyCj4gc3Vic2VydmllbnRzIGFzIGl0IGlzIHRoZWlyIG5hdGl2ZSB0eXBlLgo+IAo+IMKg wqDCoHRleHTCoMKgwqDCoGRhdGHCoMKgwqDCoMKgYnNzwqDCoMKgwqDCoGRlY8KgwqDCoMKgwqBo ZXggZmlsZW5hbWUKPiA2MzA5OTc4IDM1Nzg3NzjCoMKgNjk2MzIwIDEwNTg1MDc2wqDCoMKgwqDC oMKgwqDCoMKgYTE4M2Y0IHZtbGludXgKPiA2MzA5NTMwIDM1Nzg3NzjCoMKgNjk2MzIwIDEwNTg0 NjI4wqDCoMKgwqDCoMKgwqDCoMKgYTE4MjM0IHZtbGludXgKPiAKPiBhIG1vZGVzdCA0MDAgYnl0 ZXMgb2Ygc2F2aW5nLCBidXQgNjAgbGluZXMgb2YgY29kZSBkZWxldGVkIQoKUGxlYXNlLCBkbyBj b3B5ICYgcGFzdGUgdGhlIHNlZCBjb21tYW5kIG9yIGNvY2NpIGZpbGUgdG8gdGhlIGNvbW1pdApt ZXNzYWdlLCBvdGhlcndpc2UgbG9va3MgZmluZSB0byBtZS4gSSB3b3VsZCBkbyB0aGlzIGZvciBw bGVudHkgb2YKb3RoZXIgZnVuY3Rpb25zIHRvbyBhbmQgdGhlIGZvciB0aGUgcy9kZXZfcHJpdi9p OTE1Ly4gRG8geW91IGhhdmUgYQpwYXRjaCBmb3IgdGhlIHByZWNlZGluZyBzL2k5MTUvaTkxNV9t b2R1bGUvIHBhdGNoLCBvciBzaG91bGQgSSBnbyBhbmQKd3JpdGUgaXQ/CgpSZXZpZXdlZC1ieTog Sm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgoKUmVnYXJk cywgSm9vbmFzCgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmPCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDQgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZG1hLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDEzICstCj4gwqBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAyNiArLS0K PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB8wqDCoDE4ICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuY8KgwqDC oMKgwqDCoMKgwqB8wqDCoMKgOSArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmjCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8wqDCoMKgMyArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA1ICstCj4gwqBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmPCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA0 ICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqB8wqDCoMKgNyArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmjCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuY8KgwqDCoMKgwqDCoMKgfMKgwqDCoDkgKy0KPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMjIgKy0KPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDM0 MiArKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmPCoMKgwqDCoMKgwqDCoMKgfCAxNjIgKysrKysrKy0tLS0tLS0KPiDCoDE1 IGZpbGVzIGNoYW5nZWQsIDI4MyBpbnNlcnRpb25zKCspLCAzNDUgZGVsZXRpb25zKC0pCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA2Njk4OTU3ZWRlM2YuLjQyOGNh OTk4Y2QyZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTQ5OTAs NyArNDk5MCw3IEBAIGk5MTVfbWF4X2ZyZXFfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gwqAK PiDCoAlkZXZfcHJpdi0+cnBzLm1heF9mcmVxX3NvZnRsaW1pdCA9IHZhbDsKPiDCoAo+IC0JaW50 ZWxfc2V0X3JwcyhkZXYsIHZhbCk7Cj4gKwlpbnRlbF9zZXRfcnBzKGRldl9wcml2LCB2YWwpOwo+ IMKgCj4gwqAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+IMKgCj4gQEAg LTUwNTcsNyArNTA1Nyw3IEBAIGk5MTVfbWluX2ZyZXFfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwp Cj4gwqAKPiDCoAlkZXZfcHJpdi0+cnBzLm1pbl9mcmVxX3NvZnRsaW1pdCA9IHZhbDsKPiDCoAo+ IC0JaW50ZWxfc2V0X3JwcyhkZXYsIHZhbCk7Cj4gKwlpbnRlbF9zZXRfcnBzKGRldl9wcml2LCB2 YWwpOwo+IMKgCj4gwqAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+IMKg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gaW5kZXggNDZhYzFkYTY0YTA5Li45MjA4ZjVlM2M3 MzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiBAQCAtMjIzLDggKzIyMyw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAo+IMKgCQkJcmV0dXJuIC1FTk9ERVY7Cj4gwqAJCWJyZWFrOwo+IMKgCWNhc2UgSTkxNV9QQVJB TV9IQVNfR1BVX1JFU0VUOgo+IC0JCXZhbHVlID0gaTkxNS5lbmFibGVfaGFuZ2NoZWNrICYmCj4g LQkJCWludGVsX2hhc19ncHVfcmVzZXQoZGV2KTsKPiArCQl2YWx1ZSA9IGk5MTUuZW5hYmxlX2hh bmdjaGVjayAmJiBpbnRlbF9oYXNfZ3B1X3Jlc2V0KGRldl9wcml2KTsKPiDCoAkJYnJlYWs7Cj4g wqAJY2FzZSBJOTE1X1BBUkFNX0hBU19SRVNPVVJDRV9TVFJFQU1FUjoKPiDCoAkJdmFsdWUgPSBI QVNfUkVTT1VSQ0VfU1RSRUFNRVIoZGV2KTsKPiBAQCAtNDI3LDYgKzQyNiw4IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50X29wcyBpOTE1X3N3aXRjaGVyb29fb3Bz ID0gewo+IMKgCj4gwqBzdGF0aWMgdm9pZCBpOTE1X2dlbV9maW5pKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gwqB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gKwo+IMKgCS8qCj4gwqAJwqAqIE5laXRoZXIgdGhlIEJJT1MsIG91cnNlbHZl cyBvciBhbnkgb3RoZXIga2VybmVsCj4gwqAJwqAqIGV4cGVjdHMgdGhlIHN5c3RlbSB0byBiZSBp biBleGVjbGlzdHMgbW9kZSBvbiBzdGFydHVwLAo+IEBAIC00NDcsNyArNDQ4LDcgQEAgc3RhdGlj IHZvaWQgaTkxNV9nZW1fZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCcKgKiBtYWNo aW5lIGluIGFuIHVudXNhYmxlIGNvbmRpdGlvbi4KPiDCoAnCoCovCj4gwqAJaWYgKEhBU19IV19D T05URVhUUyhkZXYpKSB7Cj4gLQkJaW50IHJlc2V0ID0gaW50ZWxfZ3B1X3Jlc2V0KGRldiwgQUxM X0VOR0lORVMpOwo+ICsJCWludCByZXNldCA9IGludGVsX2dwdV9yZXNldChkZXZfcHJpdiwgQUxM X0VOR0lORVMpOwo+IMKgCQlXQVJOX09OKHJlc2V0ICYmIHJlc2V0ICE9IC1FTk9ERVYpOwo+IMKg CX0KPiDCoAo+IEBAIC0xMTg5LDcgKzExOTAsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2lu aXRfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJaWYgKHJldCA8 IDApCj4gwqAJCWdvdG8gcHV0X2JyaWRnZTsKPiDCoAo+IC0JaW50ZWxfdW5jb3JlX2luaXQoZGV2 KTsKPiArCWludGVsX3VuY29yZV9pbml0KGRldl9wcml2KTsKPiDCoAo+IMKgCXJldHVybiAwOwo+ IMKgCj4gQEAgLTEyMDcsNyArMTIwOCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX2NsZWFu dXBfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gwqAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gwqAKPiAtCWludGVsX3VuY29y ZV9maW5pKGRldik7Cj4gKwlpbnRlbF91bmNvcmVfZmluaShkZXZfcHJpdik7Cj4gwqAJaTkxNV9t bWlvX2NsZWFudXAoZGV2KTsKPiDCoAlwY2lfZGV2X3B1dChkZXZfcHJpdi0+YnJpZGdlX2Rldik7 Cj4gwqB9Cj4gQEAgLTEyODIsNyArMTI4Myw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5p dF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqAJcG1fcW9zX2FkZF9y ZXF1ZXN0KCZkZXZfcHJpdi0+cG1fcW9zLCBQTV9RT1NfQ1BVX0RNQV9MQVRFTkNZLAo+IMKgCQkJ wqDCoMKgUE1fUU9TX0RFRkFVTFRfVkFMVUUpOwo+IMKgCj4gLQlpbnRlbF91bmNvcmVfc2FuaXRp emUoZGV2KTsKPiArCWludGVsX3VuY29yZV9zYW5pdGl6ZShkZXZfcHJpdik7Cj4gwqAKPiDCoAlp bnRlbF9vcHJlZ2lvbl9zZXR1cChkZXYpOwo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g aW5kZXggZThmN2EwOTcwNzNjLi4yZDk3Yzk3ZGVjZTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKPiBAQCAtNjA2LDcgKzYwNiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fc3VzcGVuZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCj4gwqAJaW50ZWxfZ3VjX3N1c3BlbmQoZGV2KTsK PiDCoAo+IC0JaW50ZWxfc3VzcGVuZF9ndF9wb3dlcnNhdmUoZGV2KTsKPiArCWludGVsX3N1c3Bl bmRfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsKPiDCoAo+IMKgCWludGVsX2Rpc3BsYXlfc3VzcGVu ZChkZXYpOwo+IMKgCj4gQEAgLTYyNiw3ICs2MjYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3N1 c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAlvcHJlZ2lvbl90YXJnZXRfc3RhdGUg PSBzdXNwZW5kX3RvX2lkbGUoZGV2X3ByaXYpID8gUENJX0QxIDogUENJX0QzY29sZDsKPiDCoAlp bnRlbF9vcHJlZ2lvbl9ub3RpZnlfYWRhcHRlcihkZXYsIG9wcmVnaW9uX3RhcmdldF9zdGF0ZSk7 Cj4gwqAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfcmVzZXQoZGV2LCBmYWxzZSk7Cj4gKwlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX3Jlc2V0KGRldl9wcml2LCBmYWxzZSk7Cj4gwqAJaW50ZWxf b3ByZWdpb25fZmluaShkZXYpOwo+IMKgCj4gwqAJaW50ZWxfZmJkZXZfc2V0X3N1c3BlbmQoZGV2 LCBGQklORk9fU1RBVEVfU1VTUEVOREVELCB0cnVlKTsKPiBAQCAtODYxLDkgKzg2MSw5IEBAIHN0 YXRpYyBpbnQgaTkxNV9kcm1fcmVzdW1lX2Vhcmx5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g wqAJCURSTV9FUlJPUigiUmVzdW1lIHByZXBhcmUgZmFpbGVkOiAlZCwgY29udGludWluZyBhbnl3 YXlcbiIsCj4gwqAJCQnCoMKgcmV0KTsKPiDCoAo+IC0JaW50ZWxfdW5jb3JlX2Vhcmx5X3Nhbml0 aXplKGRldiwgdHJ1ZSk7Cj4gKwlpbnRlbF91bmNvcmVfZWFybHlfc2FuaXRpemUoZGV2X3ByaXYs IHRydWUpOwo+IMKgCj4gLQlpZiAoSVNfQlJPWFRPTihkZXYpKSB7Cj4gKwlpZiAoSVNfQlJPWFRP TihkZXZfcHJpdikpIHsKPiDCoAkJaWYgKCFkZXZfcHJpdi0+c3VzcGVuZGVkX3RvX2lkbGUpCj4g wqAJCQlnZW45X3Nhbml0aXplX2RjX3N0YXRlKGRldl9wcml2KTsKPiDCoAkJYnh0X2Rpc2FibGVf ZGM5KGRldl9wcml2KTsKPiBAQCAtODcxLDcgKzg3MSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1f cmVzdW1lX2Vhcmx5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCWhzd19kaXNhYmxlX3Bj OChkZXZfcHJpdik7Cj4gwqAJfQo+IMKgCj4gLQlpbnRlbF91bmNvcmVfc2FuaXRpemUoZGV2KTsK PiArCWludGVsX3VuY29yZV9zYW5pdGl6ZShkZXZfcHJpdik7Cj4gwqAKPiDCoAlpZiAoSVNfQlJP WFRPTihkZXZfcHJpdikgfHwKPiDCoAnCoMKgwqDCoCEoZGV2X3ByaXYtPnN1c3BlbmRlZF90b19p ZGxlICYmIGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQpKQo+IEBAIC05MjEsNyArOTIxLDcgQEAg aW50IGk5MTVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCXVu c2lnbmVkIHJlc2V0X2NvdW50ZXI7Cj4gwqAJaW50IHJldDsKPiDCoAo+IC0JaW50ZWxfcmVzZXRf Z3RfcG93ZXJzYXZlKGRldik7Cj4gKwlpbnRlbF9yZXNldF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYp Owo+IMKgCj4gwqAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IMKgCj4gQEAgLTkz Nyw3ICs5MzcsNyBAQCBpbnQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gwqAKPiDCoAlpOTE1X2dlbV9yZXNldChkZXYpOwo+IMKgCj4gLQlyZXQgPSBpbnRl bF9ncHVfcmVzZXQoZGV2LCBBTExfRU5HSU5FUyk7Cj4gKwlyZXQgPSBpbnRlbF9ncHVfcmVzZXQo ZGV2X3ByaXYsIEFMTF9FTkdJTkVTKTsKPiDCoAo+IMKgCS8qIEFsc28gcmVzZXQgdGhlIGdwdSBo YW5nbWFuLiAqLwo+IMKgCWlmIChlcnJvci0+c3RvcF9yaW5ncyAhPSAwKSB7Cj4gQEAgLTk5Miw3 ICs5OTIsNyBAQCBpbnQgaTkxNV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gwqAJwqAqIG9mIHJlLWluaXQgYWZ0ZXIgcmVzZXQuCj4gwqAJwqAqLwo+IMKgCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+IDUpCj4gLQkJaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2ZShk ZXYpOwo+ICsJCWludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+IMKgCj4gwqAJ cmV0dXJuIDA7Cj4gwqAKPiBAQCAtMTQ2OSw3ICsxNDY5LDcgQEAgc3RhdGljIGludCBpbnRlbF9y dW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKQo+IMKgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAJaW50IHJldDsKPiDC oAo+IC0JaWYgKFdBUk5fT05fT05DRSghKGRldl9wcml2LT5ycHMuZW5hYmxlZCAmJiBpbnRlbF9l bmFibGVfcmM2KGRldikpKSkKPiArCWlmIChXQVJOX09OX09OQ0UoIShkZXZfcHJpdi0+cnBzLmVu YWJsZWQgJiYgaW50ZWxfZW5hYmxlX3JjNigpKSkpCj4gwqAJCXJldHVybiAtRU5PREVWOwo+IMKg Cj4gwqAJaWYgKFdBUk5fT05fT05DRSghSEFTX1JVTlRJTUVfUE0oZGV2KSkpCj4gQEAgLTE1MDgs NyArMTUwOCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZp Y2UgKmRldmljZSkKPiDCoAo+IMKgCWludGVsX2d1Y19zdXNwZW5kKGRldik7Cj4gwqAKPiAtCWlu dGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKGRldik7Cj4gKwlpbnRlbF9zdXNwZW5kX2d0X3Bvd2Vy c2F2ZShkZXZfcHJpdik7Cj4gwqAJaW50ZWxfcnVudGltZV9wbV9kaXNhYmxlX2ludGVycnVwdHMo ZGV2X3ByaXYpOwo+IMKgCj4gwqAJcmV0ID0gMDsKPiBAQCAtMTUzMCw3ICsxNTMwLDcgQEAgc3Rh dGljIGludCBpbnRlbF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKQo+IMKg CQlyZXR1cm4gcmV0Owo+IMKgCX0KPiDCoAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXNl dChkZXYsIGZhbHNlKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdha2VfcmVzZXQoZGV2X3ByaXYs IGZhbHNlKTsKPiDCoAo+IMKgCWVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGRldl9wcml2KTsK PiDCoAlXQVJOX09OX09OQ0UoYXRvbWljX3JlYWQoJmRldl9wcml2LT5wbS53YWtlcmVmX2NvdW50 KSk7Cj4gQEAgLTE2MTEsNyArMTYxMSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGltZV9yZXN1 bWUoc3RydWN0IGRldmljZSAqZGV2aWNlKQo+IMKgCcKgKiB3ZSBjYW4gZG8gaXMgdG8gaG9wZSB0 aGF0IHRoaW5ncyB3aWxsIHN0aWxsIHdvcmsgKGFuZCBkaXNhYmxlIFJQTSkuCj4gwqAJwqAqLwo+ IMKgCWk5MTVfZ2VtX2luaXRfc3dpenpsaW5nKGRldik7Cj4gLQlnZW42X3VwZGF0ZV9yaW5nX2Zy ZXEoZGV2KTsKPiArCWdlbjZfdXBkYXRlX3JpbmdfZnJlcShkZXZfcHJpdik7Cj4gwqAKPiDCoAlp bnRlbF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiDCoAo+IEBAIC0x NjIzLDcgKzE2MjMsNyBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBk ZXZpY2UgKmRldmljZSkKPiDCoAlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmICFJU19D SEVSUllWSUVXKGRldl9wcml2KSkKPiDCoAkJaW50ZWxfaHBkX2luaXQoZGV2X3ByaXYpOwo+IMKg Cj4gLQlpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKGRldik7Cj4gKwlpbnRlbF9lbmFibGVfZ3Rf cG93ZXJzYXZlKGRldl9wcml2KTsKPiDCoAo+IMKgCWVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRz KGRldl9wcml2KTsKPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDI2ZTdkZTQx NTk2Ni4uNGFiZDM5ZjMyYzBmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTI3 NzcsOCArMjc3Nyw4IEBAIGV4dGVybiB2b2lkIGk5MTVfZHJpdmVyX3Bvc3RjbG9zZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+IMKgZXh0ZXJuIGxvbmcgaTkxNV9jb21wYXRfaW9jdGwoc3RydWN0 IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsCj4gwqAJCQnCoMKgwqDCoMKgwqB1bnNpZ25l ZCBsb25nIGFyZyk7Cj4gwqAjZW5kaWYKPiAtZXh0ZXJuIGludCBpbnRlbF9ncHVfcmVzZXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGVuZ2luZV9tYXNrKTsKPiAtZXh0ZXJuIGJvb2wgaW50 ZWxfaGFzX2dwdV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArZXh0ZXJuIGludCBp bnRlbF9ncHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgZW5n aW5lX21hc2spOwo+ICtleHRlcm4gYm9vbCBpbnRlbF9oYXNfZ3B1X3Jlc2V0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gwqBleHRlcm4gaW50IGk5MTVfcmVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiDCoGV4dGVybiBpbnQgaW50ZWxfZ3VjX3Jl c2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gwqBleHRlcm4gdm9pZCBp bnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKPiBAQCAtMjgwNywxNCArMjgwNywxNSBAQCBleHRlcm4gdm9pZCBpbnRlbF9pcnFfaW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IMKgaW50IGludGVsX2lycV9pbnN0 YWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gwqB2b2lkIGludGVsX2ly cV91bmluc3RhbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiDCoAo+IC1l eHRlcm4gdm9pZCBpbnRlbF91bmNvcmVfc2FuaXRpemUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 Cj4gLWV4dGVybiB2b2lkIGludGVsX3VuY29yZV9lYXJseV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICtleHRlcm4gdm9pZCBpbnRlbF91bmNvcmVfc2FuaXRpemUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArZXh0ZXJuIHZvaWQgaW50ZWxfdW5jb3JlX2Vh cmx5X3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCQkJ Ym9vbCByZXN0b3JlX2ZvcmNld2FrZSk7Cj4gLWV4dGVybiB2b2lkIGludGVsX3VuY29yZV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICtleHRlcm4gdm9pZCBpbnRlbF91bmNvcmVfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IMKgZXh0ZXJuIGJvb2wgaW50 ZWxfdW5jb3JlX3VuY2xhaW1lZF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gwqBleHRlcm4gYm9vbCBpbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVj dGlvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC1leHRlcm4gdm9pZCBp bnRlbF91bmNvcmVfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAtZXh0ZXJuIHZvaWQg aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29s IHJlc3RvcmUpOwo+ICtleHRlcm4gdm9pZCBpbnRlbF91bmNvcmVfZmluaShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICtleHRlcm4gdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCQnCoGJv b2wgcmVzdG9yZSk7Cj4gwqBjb25zdCBjaGFyICppbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFp bl90b19zdHIoY29uc3QgZW51bSBmb3JjZXdha2VfZG9tYWluX2lkIGlkKTsKPiDCoHZvaWQgaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+IMKgCQkJCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZG9tYWlucyk7Cj4gQEAgLTM1NDcsMTEg KzM1NDgsMTAgQEAgZXh0ZXJuIHZvaWQgaTkxNV9yZWRpc2FibGVfdmdhKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOwo+IMKgZXh0ZXJuIHZvaWQgaTkxNV9yZWRpc2FibGVfdmdhX3Bvd2VyX29uKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IMKgZXh0ZXJuIGJvb2wgaXJvbmxha2Vfc2V0X2RycHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCB2YWwpOwo+IMKgZXh0ZXJuIHZv aWQgaW50ZWxfaW5pdF9wY2hfcmVmY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC1leHRl cm4gdm9pZCBpbnRlbF9zZXRfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IHZhbCk7Cj4g K2V4dGVybiB2b2lkIGludGVsX3NldF9ycHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCB1OCB2YWwpOwo+IMKgZXh0ZXJuIHZvaWQgaW50ZWxfc2V0X21lbW9yeV9jeHNyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAkJCQnCoMKgYm9vbCBlbmFibGUpOwo+ IMKgZXh0ZXJuIHZvaWQgaW50ZWxfZGV0ZWN0X3BjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK PiAtZXh0ZXJuIGludCBpbnRlbF9lbmFibGVfcmM2KGNvbnN0IHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwo+IMKgCj4gwqBleHRlcm4gYm9vbCBpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gwqBpbnQgaTkxNV9yZWdfcmVhZF9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jCj4gaW5kZXggNjY3ZjBlODU5NjcxLi40MWJiYjZhMjQzNWUgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0yMjc5LDEyICsyMjc5LDExIEBAIHN0 YXRpYyB2b2lkIHVuZG9faWRsaW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg Ym9vbCBpbnRlcnJ1cHRpYmxlKQo+IMKgCQlkZXZfcHJpdi0+bW0uaW50ZXJydXB0aWJsZSA9IGlu dGVycnVwdGlibGU7Cj4gwqB9Cj4gwqAKPiAtdm9pZCBpOTE1X2NoZWNrX2FuZF9jbGVhcl9mYXVs dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArdm9pZCBpOTE1X2NoZWNrX2FuZF9jbGVhcl9m YXVsdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gwqAKPiAtCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA8IDYpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDYpCj4gwqAJCXJl dHVybjsKPiDCoAo+IMKgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7Cj4gQEAg LTIzMjgsNyArMjMyNyw3IEBAIHZvaWQgaTkxNV9nZW1fc3VzcGVuZF9ndHRfbWFwcGluZ3Moc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ IMKgCQlyZXR1cm47Cj4gwqAKPiAtCWk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhkZXYpOwo+ ICsJaTkxNV9jaGVja19hbmRfY2xlYXJfZmF1bHRzKGRldl9wcml2KTsKPiDCoAo+IMKgCWdndHQt PmJhc2UuY2xlYXJfcmFuZ2UoJmdndHQtPmJhc2UsIGdndHQtPmJhc2Uuc3RhcnQsIGdndHQtPmJh c2UudG90YWwsCj4gwqAJCQnCoMKgwqDCoMKgdHJ1ZSk7Cj4gQEAgLTMyNDAsNyArMzIzOSw3IEBA IHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiDCoAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiDCoAlib29sIGZsdXNoOwo+IMKgCj4gLQlp OTE1X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoZGV2KTsKPiArCWk5MTVfY2hlY2tfYW5kX2NsZWFy X2ZhdWx0cyhkZXZfcHJpdik7Cj4gwqAKPiDCoAkvKiBGaXJzdCBmaWxsIG91ciBwb3J0aW9uIG9m IHRoZSBHVFQgd2l0aCBzY3JhdGNoIHBhZ2VzICovCj4gwqAJZ2d0dC0+YmFzZS5jbGVhcl9yYW5n ZSgmZ2d0dC0+YmFzZSwgZ2d0dC0+YmFzZS5zdGFydCwgZ2d0dC0+YmFzZS50b3RhbCwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IGluZGV4IDE4YWYzYWYxODc1NC4uMTQ0ODcwZWE1 NDg4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAtNTM1LDcgKzUz NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3BwZ3R0X3B1dChzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQpCj4gwqAJCWtyZWZfcHV0KCZwcGd0dC0+cmVmLCBpOTE1X3BwZ3R0X3JlbGVh c2UpOwo+IMKgfQo+IMKgCj4gLXZvaWQgaTkxNV9jaGVja19hbmRfY2xlYXJfZmF1bHRzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IMKgdm9pZCBpOTE1X2dlbV9zdXNw ZW5kX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiDCoHZvaWQgaTkxNV9n ZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gwqAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggYTMwNGIw ZWFkMDk5Li4xNjkyNDJhOGFkZmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfc3VibWlzc2lvbi5jCj4gQEAgLTE1OCw4ICsxNTgsNyBAQCBzdGF0aWMgaW50IGhvc3QyZ3Vj X3NhbXBsZV9mb3JjZXdha2Uoc3RydWN0IGludGVsX2d1YyAqZ3VjLAo+IMKgCj4gwqAJZGF0YVsw XSA9IEhPU1QyR1VDX0FDVElPTl9TQU1QTEVfRk9SQ0VXQUtFOwo+IMKgCS8qIFdhUnNEaXNhYmxl Q29hcnNlUG93ZXJHYXRpbmc6c2tsLGJ4dCAqLwo+IC0JaWYgKCFpbnRlbF9lbmFibGVfcmM2KGRl dikgfHwKPiAtCcKgwqDCoMKgTkVFRFNfV2FSc0Rpc2FibGVDb2Fyc2VQb3dlckdhdGluZyhkZXYp KQo+ICsJaWYgKCFpbnRlbF9lbmFibGVfcmM2KCkgfHwgTkVFRFNfV2FSc0Rpc2FibGVDb2Fyc2VQ b3dlckdhdGluZyhkZXYpKQo+IMKgCQlkYXRhWzFdID0gMDsKPiDCoAllbHNlCj4gwqAJCS8qIGJp dCAwIGFuZCAxIGFyZSBmb3IgUmVuZGVyIGFuZCBNZWRpYSBkb21haW4gc2VwYXJhdGVseSAqLwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IGExNjMwMzdkZGJkOC4uMmZhMjYxNTlkNmU1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTMzNiw5ICszMzYsOCBAQCB2b2lk IGdlbjZfZGlzYWJsZV9wbV9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 aW50MzJfdCBtYXNrKQo+IMKgCV9fZ2VuNl9kaXNhYmxlX3BtX2lycShkZXZfcHJpdiwgbWFzayk7 Cj4gwqB9Cj4gwqAKPiAtdm9pZCBnZW42X3Jlc2V0X3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gK3ZvaWQgZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCWk5MTVfcmVnX3QgcmVnID0gZ2Vu Nl9wbV9paXIoZGV2X3ByaXYpOwo+IMKgCj4gwqAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmly cV9sb2NrKTsKPiBAQCAtMTE2OCw3ICsxMTY3LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9wbV9ycHNf d29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gwqAJbmV3X2RlbGF5ICs9IGFkajsKPiDC oAluZXdfZGVsYXkgPSBjbGFtcF90KGludCwgbmV3X2RlbGF5LCBtaW4sIG1heCk7Cj4gwqAKPiAt CWludGVsX3NldF9ycHMoZGV2X3ByaXYtPmRldiwgbmV3X2RlbGF5KTsKPiArCWludGVsX3NldF9y cHMoZGV2X3ByaXYsIG5ld19kZWxheSk7Cj4gwqAKPiDCoAltdXRleF91bmxvY2soJmRldl9wcml2 LT5ycHMuaHdfbG9jayk7Cj4gwqBvdXQ6Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfc3lzZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+IGlu ZGV4IDJkNTc2YjdmZjI5OS4uZDAxYWRkNjQ4ZTgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c3lzZnMuYwo+IEBAIC0zOTcsNyArMzk3LDcgQEAgc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFf bWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gwqAJLyogV2Ugc3RpbGwgbmVlZCAqX3Nl dF9ycHMgdG8gcHJvY2VzcyB0aGUgbmV3IG1heF9kZWxheSBhbmQKPiDCoAnCoCogdXBkYXRlIHRo ZSBpbnRlcnJ1cHQgbGltaXRzIGFuZCBQTUlOVFJNU0sgZXZlbiB0aG91Z2gKPiDCoAnCoCogZnJl cXVlbmN5IHJlcXVlc3QgbWF5IGJlIHVuY2hhbmdlZC4gKi8KPiAtCWludGVsX3NldF9ycHMoZGV2 LCB2YWwpOwo+ICsJaW50ZWxfc2V0X3JwcyhkZXZfcHJpdiwgdmFsKTsKPiDCoAo+IMKgCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiDCoAo+IEBAIC00NjEsNyArNDYxLDcg QEAgc3RhdGljIHNzaXplX3QgZ3RfbWluX2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtk ZXYsCj4gwqAJLyogV2Ugc3RpbGwgbmVlZCAqX3NldF9ycHMgdG8gcHJvY2VzcyB0aGUgbmV3IG1p bl9kZWxheSBhbmQKPiDCoAnCoCogdXBkYXRlIHRoZSBpbnRlcnJ1cHQgbGltaXRzIGFuZCBQTUlO VFJNU0sgZXZlbiB0aG91Z2gKPiDCoAnCoCogZnJlcXVlbmN5IHJlcXVlc3QgbWF5IGJlIHVuY2hh bmdlZC4gKi8KPiAtCWludGVsX3NldF9ycHMoZGV2LCB2YWwpOwo+ICsJaW50ZWxfc2V0X3Jwcyhk ZXZfcHJpdiwgdmFsKTsKPiDCoAo+IMKgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19s b2NrKTsKPiDCoAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCj4gaW5kZXggZDAyZWZiOGNhZDRk Li5kNWE3YTVlN2VlN2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 Z3B1LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwo+IEBAIC01OCwx NSArNTgsMTQgQEAKPiDCoCAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHRoZSBpbml0aWFs aXphdGlvbiBzdGFnZSwgdG8gZGV0ZWN0IHdoZXRoZXIKPiDCoCAqIHJ1bm5pbmcgb24gYSB2R1BV Lgo+IMKgICovCj4gLXZvaWQgaTkxNV9jaGVja192Z3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gK3ZvaWQgaTkxNV9jaGVja192Z3B1KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiDCoHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKPiDCoAl1aW50NjRfdCBtYWdpYzsKPiDCoAl1aW50MzJfdCB2ZXJzaW9uOwo+IMKgCj4g wqAJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qgdmd0X2lmKSAhPSBWR1RfUFZJTkZPX1NJWkUp Owo+IMKgCj4gLQlpZiAoIUlTX0hBU1dFTEwoZGV2KSkKPiArCWlmICghSVNfSEFTV0VMTChkZXZf cHJpdikpCj4gwqAJCXJldHVybjsKPiDCoAo+IMKgCW1hZ2ljID0gX19yYXdfaTkxNV9yZWFkNjQo ZGV2X3ByaXYsIHZndGlmX3JlZyhtYWdpYykpOwo+IEBAIC0xMzYsNyArMTM1LDcgQEAgc3RhdGlj IGludCB2Z3RfYmFsbG9vbl9zcGFjZShzdHJ1Y3QgZHJtX21tICptbSwKPiDCoAo+IMKgLyoqCj4g wqAgKiBpbnRlbF92Z3RfYmFsbG9vbiAtIGJhbGxvb24gb3V0IHJlc2VydmVkIGdyYXBoaWNzIGFk ZHJlc3MgdHJ1bmtzCj4gLSAqIEBkZXY6IGRybSBkZXZpY2UKPiArICogQGRldl9wcml2OiBpOTE1 IGRldmljZQo+IMKgICoKPiDCoCAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHRoZSBpbml0 aWFsaXphdGlvbiBzdGFnZSwgdG8gYmFsbG9vbiBvdXQgdGhlCj4gwqAgKiBncmFwaGljIGFkZHJl c3Mgc3BhY2UgYWxsb2NhdGVkIHRvIG90aGVyIHZHUFVzLCBieSBtYXJraW5nIHRoZXNlIHNwYWNl cyBhcwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCj4gaW5kZXggM2M4M2I0N2I1ZjY5Li4yMWZm Y2ZlYTVmNWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAo+IEBAIC0xMTAsNyArMTEw LDcgQEAgc3RydWN0IHZndF9pZiB7Cj4gwqAjZGVmaW5lIFZHVF9EUlZfRElTUExBWV9OT1RfUkVB RFkgMAo+IMKgI2RlZmluZSBWR1RfRFJWX0RJU1BMQVlfUkVBRFnCoMKgwqDCoMKgMcKgwqAvKiBy ZWFkeSBmb3IgZGlzcGxheSBzd2l0Y2ggKi8KPiDCoAo+IC1leHRlcm4gdm9pZCBpOTE1X2NoZWNr X3ZncHUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK2V4dGVybiB2b2lkIGk5MTVfY2hlY2tf dmdwdShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IMKgZXh0ZXJuIGludCBp bnRlbF92Z3RfYmFsbG9vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiDCoGV4dGVybiB2b2lk IGludGVsX3ZndF9kZWJhbGxvb24odm9pZCk7Cj4gwqAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gaW5kZXggM2M2YjdiOWFmZjA4Li5lNGI0OWFhNGFiOGQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTE1MjgzLDcgKzE1MjgzLDcgQEAgdm9p ZCBpbnRlbF9tb2Rlc2V0X2luaXRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAlkZXZf cHJpdi0+YXRvbWljX2NkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+Y2RjbGtfZnJlcTsKPiDCoAo+IMKg CWludGVsX2luaXRfY2xvY2tfZ2F0aW5nKGRldik7Cj4gLQlpbnRlbF9lbmFibGVfZ3RfcG93ZXJz YXZlKGRldik7Cj4gKwlpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsKPiDCoH0K PiDCoAo+IMKgLyoKPiBAQCAtMTYwMTEsMTEgKzE2MDExLDEyIEBAIHJldHJ5Ogo+IMKgCj4gwqB2 b2lkIGludGVsX21vZGVzZXRfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoHsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiDC oAlzdHJ1Y3QgZHJtX2NydGMgKmM7Cj4gwqAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKPiDCoAlpbnQgcmV0Owo+IMKgCj4gLQlpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShkZXYpOwo+ ICsJaW50ZWxfaW5pdF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+IMKgCj4gwqAJaW50ZWxfbW9k ZXNldF9pbml0X2h3KGRldik7Cj4gwqAKPiBAQCAtMTYwNjIsNyArMTYwNjMsNyBAQCB2b2lkIGlu dGVsX21vZGVzZXRfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAJc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+IMKgCj4gLQlpbnRlbF9kaXNhYmxlX2d0X3Bv d2Vyc2F2ZShkZXYpOwo+ICsJaW50ZWxfZGlzYWJsZV9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+ IMKgCj4gwqAJaW50ZWxfYmFja2xpZ2h0X3VucmVnaXN0ZXIoZGV2KTsKPiDCoAo+IEBAIC0xNjA5 NCw3ICsxNjA5NSw3IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gwqAKPiDCoAlpbnRlbF9jbGVhbnVwX292ZXJsYXkoZGV2KTsKPiDCoAo+IC0J aW50ZWxfY2xlYW51cF9ndF9wb3dlcnNhdmUoZGV2KTsKPiArCWludGVsX2NsZWFudXBfZ3RfcG93 ZXJzYXZlKGRldl9wcml2KTsKPiDCoAo+IMKgCWludGVsX3RlYXJkb3duX2dtYnVzKGRldik7Cj4g wqB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA5NGE0NGFmMzdlZjcuLjFhM2U2 OWU1ZjlmNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTEwMzIsNyArMTAz Miw3IEBAIHZvaWQgZ2VuNV9lbmFibGVfZ3RfaXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdWludDMyX3QgbWFzayk7Cj4gwqB2b2lkIGdlbjVfZGlzYWJsZV9ndF9pcnEoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1aW50MzJfdCBtYXNrKTsKPiDCoHZvaWQg Z2VuNl9lbmFibGVfcG1faXJxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdWlu dDMyX3QgbWFzayk7Cj4gwqB2b2lkIGdlbjZfZGlzYWJsZV9wbV9pcnEoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1aW50MzJfdCBtYXNrKTsKPiAtdm9pZCBnZW42X3Jlc2V0X3Jw c19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICt2b2lkIGdlbjZfcmVzZXRf cnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiDCoHZv aWQgZ2VuNl9lbmFibGVfcnBzX2ludGVycnVwdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPiDCoHZvaWQgZ2VuNl9kaXNhYmxlX3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gwqB1MzIgZ2VuNl9zYW5pdGl6ZV9ycHNfcG1fbWFz ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBtYXNrKTsKPiBAQCAtMTYx MiwxMyArMTYxMiwxMyBAQCB2b2lkIGludGVsX2luaXRfY2xvY2tfZ2F0aW5nX2hvb2tzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gwqB2b2lkIGludGVsX3BtX3NldHVwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IMKgdm9pZCBpbnRlbF9ncHVfaXBzX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiDCoHZvaWQgaW50ZWxfZ3B1X2lwc190ZWFy ZG93bih2b2lkKTsKPiAtdm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKPiAtdm9pZCBpbnRlbF9jbGVhbnVwX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKPiAtdm9pZCBpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpOwo+IC12b2lkIGludGVsX2Rpc2FibGVfZ3RfcG93ZXJzYXZlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+IC12b2lkIGludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC12b2lkIGludGVsX3Jlc2V0X2d0X3Bvd2Vyc2F2ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAtdm9pZCBnZW42X3VwZGF0ZV9yaW5nX2ZyZXEoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK3ZvaWQgaW50ZWxfaW5pdF9ndF9wb3dlcnNhdmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBpbnRlbF9jbGVhbnVwX2d0 X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIGlu dGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKPiArdm9pZCBpbnRlbF9kaXNhYmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIGludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgaW50ZWxfcmVzZXRfZ3RfcG93 ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgZ2VuNl91 cGRhdGVfcmluZ19mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gwqB2 b2lkIGdlbjZfcnBzX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiDC oHZvaWQgZ2VuNl9ycHNfcmVzZXRfZWkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKPiDCoHZvaWQgZ2VuNl9ycHNfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+IEBAIC0xNjMzLDcgKzE2MzMsMTEgQEAgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJCQnCoMKgc3RydWN0IHNrbF9k ZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLyk7Cj4gwqB1aW50MzJfdCBpbGtfcGlwZV9waXhl bF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gwqBi b29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC1pbnQgc2Fu aXRpemVfcmM2X29wdGlvbihjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgZW5hYmxl X3JjNik7Cj4gK2ludCBzYW5pdGl6ZV9yYzZfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgaW50IGVuYWJsZV9yYzYpOwo+ICtzdGF0aWMgaW5saW5lIGludCBpbnRlbF9l bmFibGVfcmM2KHZvaWQpCj4gK3sKPiArCXJldHVybiBpOTE1LmVuYWJsZV9yYzY7Cj4gK30KPiDC oAo+IMKgLyogaW50ZWxfc2R2by5jICovCj4gwqBib29sIGludGVsX3Nkdm9faW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDI5OWI2Y2Q2 MWY2OS4uYzZkZTdhMTk3YTg0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTQ0 MTksMTIgKzQ0MTksMTAgQEAgc3RhdGljIHUzMiBnZW42X3Jwc19wbV9tYXNrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggdmFsKQo+IMKgLyogZ2VuNl9zZXRfcnBzIGlzIGNh bGxlZCB0byB1cGRhdGUgdGhlIGZyZXF1ZW5jeSByZXF1ZXN0LCBidXQgc2hvdWxkIGFsc28gYmUK PiDCoCAqIGNhbGxlZCB3aGVuIHRoZSByYW5nZSAobWluX2RlbGF5IGFuZCBtYXhfZGVsYXkpIGlz IG1vZGlmaWVkIHNvIHRoYXQgd2UgY2FuCj4gwqAgKiB1cGRhdGUgdGhlIEdFTjZfUlBfSU5URVJS VVBUX0xJTUlUUyByZWdpc3RlciBhY2NvcmRpbmdseS4gKi8KPiAtc3RhdGljIHZvaWQgZ2VuNl9z ZXRfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IHZhbCkKPiArc3RhdGljIHZvaWQgZ2Vu Nl9zZXRfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggdmFsKQo+IMKg ewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAtCj4gwqAJLyogV2FHc3ZEaXNhYmxlVHVyYm86IFdvcmthcm91bmQgdG8gZGlzYWJsZSB0 dXJibyBvbiBCWFQgQSogKi8KPiAtCWlmIChJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURf QTEpKQo+ICsJaWYgKElTX0JYVF9SRVZJRChkZXZfcHJpdiwgMCwgQlhUX1JFVklEX0ExKSkKPiDC oAkJcmV0dXJuOwo+IMKgCj4gwqAJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+ cnBzLmh3X2xvY2spKTsKPiBAQCAtNDQzNywxMCArNDQzNSwxMCBAQCBzdGF0aWMgdm9pZCBnZW42 X3NldF9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggdmFsKQo+IMKgCWlmICh2YWwgIT0g ZGV2X3ByaXYtPnJwcy5jdXJfZnJlcSkgewo+IMKgCQlnZW42X3NldF9ycHNfdGhyZXNob2xkcyhk ZXZfcHJpdiwgdmFsKTsKPiDCoAo+IC0JCWlmIChJU19HRU45KGRldikpCj4gKwkJaWYgKElTX0dF TjkoZGV2X3ByaXYpKQo+IMKgCQkJSTkxNV9XUklURShHRU42X1JQTlNXUkVRLAo+IMKgCQkJCcKg wqDCoEdFTjlfRlJFUVVFTkNZKHZhbCkpOwo+IC0JCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8 fCBJU19CUk9BRFdFTEwoZGV2KSkKPiArCQllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8 fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+IMKgCQkJSTkxNV9XUklURShHRU42X1JQTlNXUkVR LAo+IMKgCQkJCcKgwqDCoEhTV19GUkVRVUVOQ1kodmFsKSk7Cj4gwqAJCWVsc2UKPiBAQCAtNDQ2 MiwxNSArNDQ2MCwxMyBAQCBzdGF0aWMgdm9pZCBnZW42X3NldF9ycHMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdTggdmFsKQo+IMKgCXRyYWNlX2ludGVsX2dwdV9mcmVxX2NoYW5nZShpbnRlbF9n cHVfZnJlcShkZXZfcHJpdiwgdmFsKSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgdmFsbGV5 dmlld19zZXRfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IHZhbCkKPiArc3RhdGljIHZv aWQgdmFsbGV5dmlld19zZXRfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTggdmFsKQo+IMKgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiAtCj4gwqAJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spKTsKPiDCoAlXQVJOX09OKHZhbCA+IGRldl9wcml2LT5ycHMubWF4X2Zy ZXEpOwo+IMKgCVdBUk5fT04odmFsIDwgZGV2X3ByaXYtPnJwcy5taW5fZnJlcSk7Cj4gwqAKPiAt CWlmIChXQVJOX09OQ0UoSVNfQ0hFUlJZVklFVyhkZXYpICYmICh2YWwgJiAxKSwKPiArCWlmIChX QVJOX09OQ0UoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgJiYgKHZhbCAmIDEpLAo+IMKgCQnCoMKg wqDCoMKgwqAiT2RkIEdQVSBmcmVxIHZhbHVlXG4iKSkKPiDCoAkJdmFsICY9IH4xOwo+IMKgCj4g QEAgLTQ1MDMsNyArNDQ5OSw3IEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRfcnBzX2lkbGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCS8qIFdha2UgdXAgdGhlIG1lZGlhIHdl bGwsIGFzIHRoYXQgdGFrZXMgYSBsb3QgbGVzcwo+IMKgCcKgKiBwb3dlciB0aGFuIHRoZSBSZW5k ZXIgd2VsbC4gKi8KPiDCoAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9S Q0VXQUtFX01FRElBKTsKPiAtCXZhbGxleXZpZXdfc2V0X3JwcyhkZXZfcHJpdi0+ZGV2LCB2YWwp Owo+ICsJdmFsbGV5dmlld19zZXRfcnBzKGRldl9wcml2LCB2YWwpOwo+IMKgCWludGVsX3VuY29y ZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfTUVESUEpOwo+IMKgfQo+IMKgCj4g QEAgLTQ1MjEsMTQgKzQ1MTcsMTIgQEAgdm9pZCBnZW42X3Jwc19idXN5KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAo+IMKgdm9pZCBnZW42X3Jwc19pZGxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBkZXZfcHJpdi0+ZGV2Owo+IC0KPiDCoAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOwo+IMKgCWlmIChkZXZfcHJpdi0+cnBzLmVuYWJsZWQpIHsKPiAtCQlpZiAoSVNfVkFM TEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkKPiArCQlpZiAoSVNfVkFMTEVZVklF VyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gwqAJCQl2bHZfc2V0X3Jw c19pZGxlKGRldl9wcml2KTsKPiDCoAkJZWxzZQo+IC0JCQlnZW42X3NldF9ycHMoZGV2X3ByaXYt PmRldiwgZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEpOwo+ICsJCQlnZW42X3NldF9ycHMoZGV2X3By aXYsIGRldl9wcml2LT5ycHMuaWRsZV9mcmVxKTsKPiDCoAkJZGV2X3ByaXYtPnJwcy5sYXN0X2Fk aiA9IDA7Cj4gwqAJCUk5MTVfV1JJVEUoR0VONl9QTUlOVFJNU0ssIDB4ZmZmZmZmZmYpOwo+IMKg CX0KPiBAQCAtNDU3Niw0OSArNDU3MCwzOSBAQCB2b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDCoAlzcGluX3VubG9jaygmZGV2X3ByaXYtPnJw cy5jbGllbnRfbG9jayk7Cj4gwqB9Cj4gwqAKPiAtdm9pZCBpbnRlbF9zZXRfcnBzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHU4IHZhbCkKPiArdm9pZCBpbnRlbF9zZXRfcnBzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggdmFsKQo+IMKgewo+IC0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4gLQkJdmFsbGV5dmlld19zZXRfcnBzKGRl diwgdmFsKTsKPiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVX KGRldl9wcml2KSkKPiArCQl2YWxsZXl2aWV3X3NldF9ycHMoZGV2X3ByaXYsIHZhbCk7Cj4gwqAJ ZWxzZQo+IC0JCWdlbjZfc2V0X3JwcyhkZXYsIHZhbCk7Cj4gKwkJZ2VuNl9zZXRfcnBzKGRldl9w cml2LCB2YWwpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIGdlbjlfZGlzYWJsZV9yYzYoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiArc3RhdGljIHZvaWQgZ2VuOV9kaXNhYmxlX3JjNihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0KPiDCoAlJOTE1X1dSSVRF KEdFTjZfUkNfQ09OVFJPTCwgMCk7Cj4gwqAJSTkxNV9XUklURShHRU45X1BHX0VOQUJMRSwgMCk7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgZ2VuOV9kaXNhYmxlX3JwcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICtzdGF0aWMgdm9pZCBnZW45X2Rpc2FibGVfcnBzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQo+IMKgCUk5MTVfV1JJVEUoR0VONl9SUF9D T05UUk9MLCAwKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZCBnZW42X2Rpc2FibGVfcnBzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIGdlbjZfZGlzYWJsZV9ycHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgewo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCj4gwqAJSTkxNV9XUklU RShHRU42X1JDX0NPTlRST0wsIDApOwo+IMKgCUk5MTVfV1JJVEUoR0VONl9SUE5TV1JFUSwgMSA8 PCAzMSk7Cj4gwqAJSTkxNV9XUklURShHRU42X1JQX0NPTlRST0wsIDApOwo+IMKgfQo+IMKgCj4g LXN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfZGlzYWJsZV9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiArc3RhdGljIHZvaWQgY2hlcnJ5dmlld19kaXNhYmxlX3JwcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0KPiDCoAlJOTE1X1dSSVRFKEdFTjZfUkNfQ09O VFJPTCwgMCk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgdmFsbGV5dmlld19kaXNhYmxlX3Jw cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2Rpc2Fi bGVfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQo+IMKg CS8qIHdlJ3JlIGRvaW5nIGZvcmNld2FrZSBiZWZvcmUgRGlzYWJsaW5nIFJDNiwKPiDCoAnCoCog VGhpcyB3aGF0IHRoZSBCSU9TIGV4cGVjdHMgd2hlbiBnb2luZyBpbnRvIHN1c3BlbmQgKi8KPiDC oAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4g QEAgLTQ2MjgsMTUgKzQ2MTIsMTUgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19kaXNhYmxlX3Jw cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0 KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZCBpbnRl bF9wcmludF9yYzZfaW5mbyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgbW9kZSkKPiArc3Rh dGljIHZvaWQgaW50ZWxfcHJpbnRfcmM2X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1MzIgbW9kZSkKPiDCoHsKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNf Q0hFUlJZVklFVyhkZXYpKSB7Cj4gKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNf Q0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiDCoAkJaWYgKG1vZGUgJiAoR0VON19SQ19DVExfVE9f TU9ERSB8IEdFTjZfUkNfQ1RMX0VJX01PREUoMSkpKQo+IMKgCQkJbW9kZSA9IEdFTjZfUkNfQ1RM X1JDNl9FTkFCTEU7Cj4gwqAJCWVsc2UKPiDCoAkJCW1vZGUgPSAwOwo+IMKgCX0KPiAtCWlmIChI QVNfUkM2cChkZXYpKQo+ICsJaWYgKEhBU19SQzZwKGRldl9wcml2KSkKPiDCoAkJRFJNX0RFQlVH X0tNUygiRW5hYmxpbmcgUkM2IHN0YXRlczogUkM2ICVzIFJDNnAgJXMgUkM2cHAgJXNcbiIsCj4g wqAJCQnCoMKgwqDCoMKgwqBvbm9mZihtb2RlICYgR0VONl9SQ19DVExfUkM2X0VOQUJMRSksCj4g wqAJCQnCoMKgwqDCoMKgwqBvbm9mZihtb2RlICYgR0VONl9SQ19DVExfUkM2cF9FTkFCTEUpLAo+ IEBAIC00NjQ3LDkgKzQ2MzEsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmludF9yYzZfaW5mbyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgbW9kZSkKPiDCoAkJCcKgwqDCoMKgwqDCoG9ub2Zm KG1vZGUgJiBHRU42X1JDX0NUTF9SQzZfRU5BQkxFKSk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGJv b2wgYnh0X2NoZWNrX2Jpb3NfcmM2X3NldHVwKGNvbnN0IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gK3N0YXRpYyBib29sIGJ4dF9jaGVja19iaW9zX3JjNl9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gwqAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZf cHJpdi0+Z2d0dDsKPiDCoAlib29sIGVuYWJsZV9yYzYgPSB0cnVlOwo+IMKgCXVuc2lnbmVkIGxv bmcgcmM2X2N0eF9iYXNlOwo+IEBAIC00NjkwLDE2ICs0NjczLDE2IEBAIHN0YXRpYyBib29sIGJ4 dF9jaGVja19iaW9zX3JjNl9zZXR1cChjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKg CXJldHVybiBlbmFibGVfcmM2Owo+IMKgfQo+IMKgCj4gLWludCBzYW5pdGl6ZV9yYzZfb3B0aW9u KGNvbnN0IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfcmM2KQo+ICtpbnQgc2Fu aXRpemVfcmM2X29wdGlvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBl bmFibGVfcmM2KQo+IMKgewo+IMKgCS8qIE5vIFJDNiBiZWZvcmUgSXJvbmxha2UgYW5kIGNvZGUg aXMgZ29uZSBmb3IgaWxrLiAqLwo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNikKPiAr CWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDwgNikKPiDCoAkJcmV0dXJuIDA7Cj4gwqAK PiDCoAlpZiAoIWVuYWJsZV9yYzYpCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gLQlpZiAoSVNfQlJP WFRPTihkZXYpICYmICFieHRfY2hlY2tfYmlvc19yYzZfc2V0dXAoZGV2KSkgewo+ICsJaWYgKElT X0JST1hUT04oZGV2X3ByaXYpICYmICFieHRfY2hlY2tfYmlvc19yYzZfc2V0dXAoZGV2X3ByaXYp KSB7Cj4gwqAJCURSTV9JTkZPKCJSQzYgZGlzYWJsZWQgYnkgQklPU1xuIik7Cj4gwqAJCXJldHVy biAwOwo+IMKgCX0KPiBAQCAtNDcwOCw3ICs0NjkxLDcgQEAgaW50IHNhbml0aXplX3JjNl9vcHRp b24oY29uc3Qgc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGVuYWJsZV9yYzYpCj4gwqAJaWYg KGVuYWJsZV9yYzYgPj0gMCkgewo+IMKgCQlpbnQgbWFzazsKPiDCoAo+IC0JCWlmIChIQVNfUkM2 cChkZXYpKQo+ICsJCWlmIChIQVNfUkM2cChkZXZfcHJpdikpCj4gwqAJCQltYXNrID0gSU5URUxf UkM2X0VOQUJMRSB8IElOVEVMX1JDNnBfRU5BQkxFIHwKPiDCoAkJCcKgwqDCoMKgwqDCoMKgSU5U RUxfUkM2cHBfRU5BQkxFOwo+IMKgCQllbHNlCj4gQEAgLTQ3MjEsMjAgKzQ3MDQsMTQgQEAgaW50 IHNhbml0aXplX3JjNl9vcHRpb24oY29uc3Qgc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGVu YWJsZV9yYzYpCj4gwqAJCXJldHVybiBlbmFibGVfcmM2ICYgbWFzazsKPiDCoAl9Cj4gwqAKPiAt CWlmIChJU19JVllCUklER0UoZGV2KSkKPiArCWlmIChJU19JVllCUklER0UoZGV2X3ByaXYpKQo+ IMKgCQlyZXR1cm4gKElOVEVMX1JDNl9FTkFCTEUgfCBJTlRFTF9SQzZwX0VOQUJMRSk7Cj4gwqAK PiDCoAlyZXR1cm4gSU5URUxfUkM2X0VOQUJMRTsKPiDCoH0KPiDCoAo+IC1pbnQgaW50ZWxfZW5h YmxlX3JjNihjb25zdCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IC17Cj4gLQlyZXR1cm4gaTkx NS5lbmFibGVfcmM2Owo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBnZW42X2luaXRfcnBzX2ZyZXF1 ZW5jaWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIGdlbjZfaW5pdF9y cHNfZnJlcXVlbmNpZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgewo+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiDCoAl1aW50MzJfdCBycF9zdGF0ZV9jYXA7Cj4gwqAJdTMyIGRkY2Nfc3RhdHVzID0gMDsKPiDC oAlpbnQgcmV0Owo+IEBAIC00NzQyLDcgKzQ3MTksNyBAQCBzdGF0aWMgdm9pZCBnZW42X2luaXRf cnBzX2ZyZXF1ZW5jaWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJLyogQWxsIG9mIHRo ZXNlIHZhbHVlcyBhcmUgaW4gdW5pdHMgb2YgNTBNSHogKi8KPiDCoAlkZXZfcHJpdi0+cnBzLmN1 cl9mcmVxCQk9IDA7Cj4gwqAJLyogc3RhdGljIHZhbHVlcyBmcm9tIEhXOiBSUDAgPiBSUDEgPiBS UG4gKG1pbl9mcmVxKSAqLwo+IC0JaWYgKElTX0JST1hUT04oZGV2KSkgewo+ICsJaWYgKElTX0JS T1hUT04oZGV2X3ByaXYpKSB7Cj4gwqAJCXJwX3N0YXRlX2NhcCA9IEk5MTVfUkVBRChCWFRfUlBf U1RBVEVfQ0FQKTsKPiDCoAkJZGV2X3ByaXYtPnJwcy5ycDBfZnJlcSA9IChycF9zdGF0ZV9jYXAg Pj4gMTYpICYgMHhmZjsKPiDCoAkJZGV2X3ByaXYtPnJwcy5ycDFfZnJlcSA9IChycF9zdGF0ZV9j YXAgPj7CoMKgOCkgJiAweGZmOwo+IEBAIC00NzU4LDggKzQ3MzUsOCBAQCBzdGF0aWMgdm9pZCBn ZW42X2luaXRfcnBzX2ZyZXF1ZW5jaWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJZGV2 X3ByaXYtPnJwcy5tYXhfZnJlcQkJPSBkZXZfcHJpdi0+cnBzLnJwMF9mcmVxOwo+IMKgCj4gwqAJ ZGV2X3ByaXYtPnJwcy5lZmZpY2llbnRfZnJlcSA9IGRldl9wcml2LT5ycHMucnAxX2ZyZXE7Cj4g LQlpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpIHx8Cj4gLQnCoMKgwqDC oElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKSB7Cj4gKwlpZiAoSVNfSEFTV0VM TChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fAo+ICsJwqDCoMKgwqBJU19T S1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKPiDCoAkJcmV0ID0g c2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwKPiDCoAkJCQkJSFNXX1BDT0RFX0RZTkFN SUNfRFVUWV9DWUNMRV9DT05UUk9MLAo+IMKgCQkJCQkmZGRjY19zdGF0dXMpOwo+IEBAIC00Nzcx LDcgKzQ3NDgsNyBAQCBzdGF0aWMgdm9pZCBnZW42X2luaXRfcnBzX2ZyZXF1ZW5jaWVzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCQkJCWRldl9wcml2LT5ycHMubWF4X2ZyZXEpOwo+IMKg CX0KPiDCoAo+IC0JaWYgKElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKSB7Cj4g KwlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7Cj4g wqAJCS8qIFN0b3JlIHRoZSBmcmVxdWVuY3kgdmFsdWVzIGluIDE2LjY2IE1IWiB1bml0cywgd2hp Y2ggaXMKPiDCoAkJwqDCoMKgdGhlIG5hdHVyYWwgaGFyZHdhcmUgdW5pdCBmb3IgU0tMICovCj4g wqAJCWRldl9wcml2LT5ycHMucnAwX2ZyZXEgKj0gR0VOOV9GUkVRX1NDQUxFUjsKPiBAQCAtNDc4 OCw3ICs0NzY1LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCQlkZXZfcHJpdi0+cnBzLm1heF9mcmVxX3NvZnRsaW1p dCA9IGRldl9wcml2LT5ycHMubWF4X2ZyZXE7Cj4gwqAKPiDCoAlpZiAoZGV2X3ByaXYtPnJwcy5t aW5fZnJlcV9zb2Z0bGltaXQgPT0gMCkgewo+IC0JCWlmIChJU19IQVNXRUxMKGRldikgfHwgSVNf QlJPQURXRUxMKGRldikpCj4gKwkJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FE V0VMTChkZXZfcHJpdikpCj4gwqAJCQlkZXZfcHJpdi0+cnBzLm1pbl9mcmVxX3NvZnRsaW1pdCA9 Cj4gwqAJCQkJbWF4X3QoaW50LCBkZXZfcHJpdi0+cnBzLmVmZmljaWVudF9mcmVxLAo+IMKgCQkJ CcKgwqDCoMKgwqDCoGludGVsX2ZyZXFfb3Bjb2RlKGRldl9wcml2LCA0NTApKTsKPiBAQCAtNDc5 OSwxNiArNDc3NiwxNCBAQCBzdGF0aWMgdm9pZCBnZW42X2luaXRfcnBzX2ZyZXF1ZW5jaWVzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqB9Cj4gwqAKPiDCoC8qIFNlZSB0aGUgR2VuOV9HVF9Q TV9Qcm9ncmFtbWluZ19HdWlkZSBkb2MgZm9yIHRoZSBiZWxvdyAqLwo+IC1zdGF0aWMgdm9pZCBn ZW45X2VuYWJsZV9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArc3RhdGljIHZvaWQgZ2Vu OV9lbmFibGVfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g LQo+IMKgCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxM KTsKPiDCoAo+IC0JZ2VuNl9pbml0X3Jwc19mcmVxdWVuY2llcyhkZXYpOwo+ICsJZ2VuNl9pbml0 X3Jwc19mcmVxdWVuY2llcyhkZXZfcHJpdik7Cj4gwqAKPiDCoAkvKiBXYUdzdkRpc2FibGVUdXJi bzogV29ya2Fyb3VuZCB0byBkaXNhYmxlIHR1cmJvIG9uIEJYVCBBKiAqLwo+IC0JaWYgKElTX0JY VF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsKPiArCWlmIChJU19CWFRfUkVWSUQoZGV2 X3ByaXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsKPiDCoAkJLyoKPiDCoAkJwqAqIEJJT1MgY291bGQg bGVhdmUgdGhlIEh3IFR1cmJvIGVuYWJsZWQsIHNvIG5lZWQgdG8gZXhwbGljaXRseQo+IMKgCQnC oCogY2xlYXIgb3V0IHRoZSBDb250cm9sIHJlZ2lzdGVyIGp1c3QgdG8gYXZvaWQgaW5jb25zaXRl bmN5Cj4gQEAgLTQ4MTgsNyArNDc5Myw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfZW5hYmxlX3Jwcyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCQnCoCogaWYgdGhlIFR1cmJvIGlzIGxlZnQgZW5h YmxlZCBpbiB0aGUgQ29udHJvbCByZWdpc3RlciwgYXMgdGhlCj4gwqAJCcKgKiBVcC9Eb3duIGlu dGVycnVwdHMgd291bGQgcmVtYWluIG1hc2tlZC4KPiDCoAkJwqAqLwo+IC0JCWdlbjlfZGlzYWJs ZV9ycHMoZGV2KTsKPiArCQlnZW45X2Rpc2FibGVfcnBzKGRldl9wcml2KTsKPiDCoAkJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+IMKgCQlyZXR1 cm47Cj4gwqAJfQo+IEBAIC00ODM3LDE0ICs0ODEyLDEzIEBAIHN0YXRpYyB2b2lkIGdlbjlfZW5h YmxlX3JwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCcKgKiBVcC9Eb3duIEVJICYgdGhy ZXNob2xkIHJlZ2lzdGVycywgYXMgd2VsbCBhcyB0aGUgUlBfQ09OVFJPTCwKPiDCoAnCoCogUlBf SU5URVJSVVBUX0xJTUlUUyAmIFJQTlNXUkVRIHJlZ2lzdGVycyAqLwo+IMKgCWRldl9wcml2LT5y cHMucG93ZXIgPSBISUdIX1BPV0VSOyAvKiBmb3JjZSBhIHJlc2V0ICovCj4gLQlnZW42X3NldF9y cHMoZGV2X3ByaXYtPmRldiwgZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEpOwo+ICsJZ2VuNl9zZXRf cnBzKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSk7Cj4gwqAKPiDCoAlpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gwqB9Cj4gwqAK PiAtc3RhdGljIHZvaWQgZ2VuOV9lbmFibGVfcmM2KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g K3N0YXRpYyB2b2lkIGdlbjlfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+IMKgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiDCoAl1 aW50MzJfdCByYzZfbWFzayA9IDA7Cj4gwqAKPiBAQCAtNDg2MSw3ICs0ODM1LDcgQEAgc3RhdGlj IHZvaWQgZ2VuOV9lbmFibGVfcmM2KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJLyogMmI6 IFByb2dyYW0gUkM2IHRocmVzaG9sZHMuKi8KPiDCoAo+IMKgCS8qIFdhUnNEb3VibGVSYzZXcmxX aXRoQ29hcnNlUG93ZXJHYXRpbmc6IERvdWJsaW5nIFdSTCBvbmx5IHdoZW4gQ1BHIGlzIGVuYWJs ZWQgKi8KPiAtCWlmIChJU19TS1lMQUtFKGRldikpCj4gKwlpZiAoSVNfU0tZTEFLRShkZXZfcHJp dikpCj4gwqAJCUk5MTVfV1JJVEUoR0VONl9SQzZfV0FLRV9SQVRFX0xJTUlULCAxMDggPDwgMTYp Owo+IMKgCWVsc2UKPiDCoAkJSTkxNV9XUklURShHRU42X1JDNl9XQUtFX1JBVEVfTElNSVQsIDU0 IDw8IDE2KTsKPiBAQCAtNDg3MCw3ICs0ODQ0LDcgQEAgc3RhdGljIHZvaWQgZ2VuOV9lbmFibGVf cmM2KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwg ZGV2X3ByaXYpCj4gwqAJCUk5MTVfV1JJVEUoUklOR19NQVhfSURMRShlbmdpbmUtPm1taW9fYmFz ZSksIDEwKTsKPiDCoAo+IC0JaWYgKEhBU19HVUNfVUNPREUoZGV2KSkKPiArCWlmIChIQVNfR1VD X1VDT0RFKGRldl9wcml2KSkKPiDCoAkJSTkxNV9XUklURShHVUNfTUFYX0lETEVfQ09VTlQsIDB4 QSk7Cj4gwqAKPiDCoAlJOTE1X1dSSVRFKEdFTjZfUkNfU0xFRVAsIDApOwo+IEBAIC00ODgwLDEy ICs0ODU0LDEyIEBAIHN0YXRpYyB2b2lkIGdlbjlfZW5hYmxlX3JjNihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+IMKgCUk5MTVfV1JJVEUoR0VOOV9SRU5ERVJfUEdfSURMRV9IWVNURVJFU0lTLCAy NSk7Cj4gwqAKPiDCoAkvKiAzYTogRW5hYmxlIFJDNiAqLwo+IC0JaWYgKGludGVsX2VuYWJsZV9y YzYoZGV2KSAmIElOVEVMX1JDNl9FTkFCTEUpCj4gKwlpZiAoaW50ZWxfZW5hYmxlX3JjNigpICYg SU5URUxfUkM2X0VOQUJMRSkKPiDCoAkJcmM2X21hc2sgPSBHRU42X1JDX0NUTF9SQzZfRU5BQkxF Owo+IMKgCURSTV9JTkZPKCJSQzYgJXNcbiIsIG9ub2ZmKHJjNl9tYXNrICYgR0VONl9SQ19DVExf UkM2X0VOQUJMRSkpOwo+IMKgCS8qIFdhUnNVc2VUaW1lb3V0TW9kZSAqLwo+IC0JaWYgKElTX1NL TF9SRVZJRChkZXYsIDAsIFNLTF9SRVZJRF9EMCkgfHwKPiAtCcKgwqDCoMKgSVNfQlhUX1JFVklE KGRldiwgMCwgQlhUX1JFVklEX0ExKSkgewo+ICsJaWYgKElTX1NLTF9SRVZJRChkZXZfcHJpdiwg MCwgU0tMX1JFVklEX0QwKSB8fAo+ICsJwqDCoMKgwqBJU19CWFRfUkVWSUQoZGV2X3ByaXYsIDAs IEJYVF9SRVZJRF9BMSkpIHsKPiDCoAkJSTkxNV9XUklURShHRU42X1JDNl9USFJFU0hPTEQsIDYy NSk7IC8qIDgwMHVzICovCj4gwqAJCUk5MTVfV1JJVEUoR0VONl9SQ19DT05UUk9MLCBHRU42X1JD X0NUTF9IV19FTkFCTEUgfAo+IMKgCQkJwqDCoMKgR0VON19SQ19DVExfVE9fTU9ERSB8Cj4gQEAg LTQ5MDEsMTkgKzQ4NzUsMTcgQEAgc3RhdGljIHZvaWQgZ2VuOV9lbmFibGVfcmM2KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gwqAJwqAqIDNiOiBFbmFibGUgQ29hcnNlIFBvd2VyIEdhdGluZyBv bmx5IHdoZW4gUkM2IGlzIGVuYWJsZWQuCj4gwqAJwqAqIFdhUnNEaXNhYmxlQ29hcnNlUG93ZXJH YXRpbmc6c2tsLGJ4dCAtIFJlbmRlci9NZWRpYSBQRyBuZWVkIHRvIGJlIGRpc2FibGVkIHdpdGgg UkM2Lgo+IMKgCcKgKi8KPiAtCWlmIChORUVEU19XYVJzRGlzYWJsZUNvYXJzZVBvd2VyR2F0aW5n KGRldikpCj4gKwlpZiAoTkVFRFNfV2FSc0Rpc2FibGVDb2Fyc2VQb3dlckdhdGluZyhkZXZfcHJp dikpCj4gwqAJCUk5MTVfV1JJVEUoR0VOOV9QR19FTkFCTEUsIDApOwo+IMKgCWVsc2UKPiDCoAkJ STkxNV9XUklURShHRU45X1BHX0VOQUJMRSwgKHJjNl9tYXNrICYgR0VONl9SQ19DVExfUkM2X0VO QUJMRSkgPwo+IMKgCQkJCShHRU45X1JFTkRFUl9QR19FTkFCTEUgfCBHRU45X01FRElBX1BHX0VO QUJMRSkgOiAwKTsKPiDCoAo+IMKgCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2 LCBGT1JDRVdBS0VfQUxMKTsKPiAtCj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgZ2VuOF9lbmFi bGVfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIGdlbjhfZW5hYmxl X3JwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiDCoAl1aW50MzJfdCByYzZfbWFzayA9IDA7Cj4g wqAKPiBAQCAtNDkyOCw3ICs0OTAwLDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9lbmFibGVfcnBzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJSTkxNV9XUklURShHRU42X1JDX0NPTlRST0wsIDAp Owo+IMKgCj4gwqAJLyogSW5pdGlhbGl6ZSBycHMgZnJlcXVlbmNpZXMgKi8KPiAtCWdlbjZfaW5p dF9ycHNfZnJlcXVlbmNpZXMoZGV2KTsKPiArCWdlbjZfaW5pdF9ycHNfZnJlcXVlbmNpZXMoZGV2 X3ByaXYpOwo+IMKgCj4gwqAJLyogMmI6IFByb2dyYW0gUkM2IHRocmVzaG9sZHMuKi8KPiDCoAlJ OTE1X1dSSVRFKEdFTjZfUkM2X1dBS0VfUkFURV9MSU1JVCwgNDAgPDwgMTYpOwo+IEBAIC00OTM3 LDE2ICs0OTA5LDE2IEBAIHN0YXRpYyB2b2lkIGdlbjhfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+IMKgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KQo+IMKgCQlJ OTE1X1dSSVRFKFJJTkdfTUFYX0lETEUoZW5naW5lLT5tbWlvX2Jhc2UpLCAxMCk7Cj4gwqAJSTkx NV9XUklURShHRU42X1JDX1NMRUVQLCAwKTsKPiAtCWlmIChJU19CUk9BRFdFTEwoZGV2KSkKPiAr CWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+IMKgCQlJOTE1X1dSSVRFKEdFTjZfUkM2X1RI UkVTSE9MRCwgNjI1KTsgLyogODAwdXMvMS4yOCBmb3IgVE8gKi8KPiDCoAllbHNlCj4gwqAJCUk5 MTVfV1JJVEUoR0VONl9SQzZfVEhSRVNIT0xELCA1MDAwMCk7IC8qIDUwLzEyNW1zIHBlciBFSSAq Lwo+IMKgCj4gwqAJLyogMzogRW5hYmxlIFJDNiAqLwo+IC0JaWYgKGludGVsX2VuYWJsZV9yYzYo ZGV2KSAmIElOVEVMX1JDNl9FTkFCTEUpCj4gKwlpZiAoaW50ZWxfZW5hYmxlX3JjNigpICYgSU5U RUxfUkM2X0VOQUJMRSkKPiDCoAkJcmM2X21hc2sgPSBHRU42X1JDX0NUTF9SQzZfRU5BQkxFOwo+ IC0JaW50ZWxfcHJpbnRfcmM2X2luZm8oZGV2LCByYzZfbWFzayk7Cj4gLQlpZiAoSVNfQlJPQURX RUxMKGRldikpCj4gKwlpbnRlbF9wcmludF9yYzZfaW5mbyhkZXZfcHJpdiwgcmM2X21hc2spOwo+ ICsJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gwqAJCUk5MTVfV1JJVEUoR0VONl9SQ19D T05UUk9MLCBHRU42X1JDX0NUTF9IV19FTkFCTEUgfAo+IMKgCQkJCUdFTjdfUkNfQ1RMX1RPX01P REUgfAo+IMKgCQkJCXJjNl9tYXNrKTsKPiBAQCAtNDk4NywxNCArNDk1OSwxMyBAQCBzdGF0aWMg dm9pZCBnZW44X2VuYWJsZV9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAkvKiA2OiBS aW5nIGZyZXF1ZW5jeSArIG92ZXJjbG9ja2luZyAob3VyIGRyaXZlciBkb2VzIHRoaXMgbGF0ZXIg Ki8KPiDCoAo+IMKgCWRldl9wcml2LT5ycHMucG93ZXIgPSBISUdIX1BPV0VSOyAvKiBmb3JjZSBh IHJlc2V0ICovCj4gLQlnZW42X3NldF9ycHMoZGV2X3ByaXYtPmRldiwgZGV2X3ByaXYtPnJwcy5p ZGxlX2ZyZXEpOwo+ICsJZ2VuNl9zZXRfcnBzKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmlkbGVf ZnJlcSk7Cj4gwqAKPiDCoAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgZ2VuNl9lbmFibGVfcnBzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIGdlbjZfZW5hYmxlX3JwcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKPiDCoAl1MzIgcmM2dmlkcywgcGN1X21ib3ggPSAwLCByYzZfbWFz ayA9IDA7Cj4gwqAJdTMyIGd0Zmlmb2RiZzsKPiBAQCAtNTAyMSw3ICs0OTkyLDcgQEAgc3RhdGlj IHZvaWQgZ2VuNl9lbmFibGVfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+IMKgCj4gwqAJ LyogSW5pdGlhbGl6ZSBycHMgZnJlcXVlbmNpZXMgKi8KPiAtCWdlbjZfaW5pdF9ycHNfZnJlcXVl bmNpZXMoZGV2KTsKPiArCWdlbjZfaW5pdF9ycHNfZnJlcXVlbmNpZXMoZGV2X3ByaXYpOwo+IMKg Cj4gwqAJLyogZGlzYWJsZSB0aGUgY291bnRlcnMgYW5kIHNldCBkZXRlcm1pbmlzdGljIHRocmVz aG9sZHMgKi8KPiDCoAlJOTE1X1dSSVRFKEdFTjZfUkNfQ09OVFJPTCwgMCk7Cj4gQEAgLTUwMzcs NyArNTAwOCw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+IMKgCj4gwqAJSTkxNV9XUklURShHRU42X1JDX1NMRUVQLCAwKTsKPiDCoAlJOTE1 X1dSSVRFKEdFTjZfUkMxZV9USFJFU0hPTEQsIDEwMDApOwo+IC0JaWYgKElTX0lWWUJSSURHRShk ZXYpKQo+ICsJaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gwqAJCUk5MTVfV1JJVEUoR0VO Nl9SQzZfVEhSRVNIT0xELCAxMjUwMDApOwo+IMKgCWVsc2UKPiDCoAkJSTkxNV9XUklURShHRU42 X1JDNl9USFJFU0hPTEQsIDUwMDAwKTsKPiBAQCAtNTA0NSwxMiArNTAxNiwxMiBAQCBzdGF0aWMg dm9pZCBnZW42X2VuYWJsZV9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAlJOTE1X1dS SVRFKEdFTjZfUkM2cHBfVEhSRVNIT0xELCA2NDAwMCk7IC8qIHVudXNlZCAqLwo+IMKgCj4gwqAJ LyogQ2hlY2sgaWYgd2UgYXJlIGVuYWJsaW5nIFJDNiAqLwo+IC0JcmM2X21vZGUgPSBpbnRlbF9l bmFibGVfcmM2KGRldl9wcml2LT5kZXYpOwo+ICsJcmM2X21vZGUgPSBpbnRlbF9lbmFibGVfcmM2 KCk7Cj4gwqAJaWYgKHJjNl9tb2RlICYgSU5URUxfUkM2X0VOQUJMRSkKPiDCoAkJcmM2X21hc2sg fD0gR0VONl9SQ19DVExfUkM2X0VOQUJMRTsKPiDCoAo+IMKgCS8qIFdlIGRvbid0IHVzZSB0aG9z ZSBvbiBIYXN3ZWxsICovCj4gLQlpZiAoIUlTX0hBU1dFTEwoZGV2KSkgewo+ICsJaWYgKCFJU19I QVNXRUxMKGRldl9wcml2KSkgewo+IMKgCQlpZiAocmM2X21vZGUgJiBJTlRFTF9SQzZwX0VOQUJM RSkKPiDCoAkJCXJjNl9tYXNrIHw9IEdFTjZfUkNfQ1RMX1JDNnBfRU5BQkxFOwo+IMKgCj4gQEAg LTUwNTgsNyArNTAyOSw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+IMKgCQkJcmM2X21hc2sgfD0gR0VONl9SQ19DVExfUkM2cHBfRU5BQkxF Owo+IMKgCX0KPiDCoAo+IC0JaW50ZWxfcHJpbnRfcmM2X2luZm8oZGV2LCByYzZfbWFzayk7Cj4g KwlpbnRlbF9wcmludF9yYzZfaW5mbyhkZXZfcHJpdiwgcmM2X21hc2spOwo+IMKgCj4gwqAJSTkx NV9XUklURShHRU42X1JDX0NPTlRST0wsCj4gwqAJCcKgwqDCoHJjNl9tYXNrIHwKPiBAQCAtNTA4 MiwxMyArNTA1MywxMyBAQCBzdGF0aWMgdm9pZCBnZW42X2VuYWJsZV9ycHMoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiDCoAl9Cj4gwqAKPiDCoAlkZXZfcHJpdi0+cnBzLnBvd2VyID0gSElHSF9Q T1dFUjsgLyogZm9yY2UgYSByZXNldCAqLwo+IC0JZ2VuNl9zZXRfcnBzKGRldl9wcml2LT5kZXYs IGRldl9wcml2LT5ycHMuaWRsZV9mcmVxKTsKPiArCWdlbjZfc2V0X3JwcyhkZXZfcHJpdiwgZGV2 X3ByaXYtPnJwcy5pZGxlX2ZyZXEpOwo+IMKgCj4gwqAJcmM2dmlkcyA9IDA7Cj4gwqAJcmV0ID0g c2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgR0VONl9QQ09ERV9SRUFEX1JDNlZJRFMs ICZyYzZ2aWRzKTsKPiAtCWlmIChJU19HRU42KGRldikgJiYgcmV0KSB7Cj4gKwlpZiAoSVNfR0VO NihkZXZfcHJpdikgJiYgcmV0KSB7Cj4gwqAJCURSTV9ERUJVR19EUklWRVIoIkNvdWxkbid0IGNo ZWNrIGZvciBCSU9TIHdvcmthcm91bmRcbiIpOwo+IC0JfSBlbHNlIGlmIChJU19HRU42KGRldikg JiYgKEdFTjZfREVDT0RFX1JDNl9WSUQocmM2dmlkcyAmIDB4ZmYpIDwgNDUwKSkgewo+ICsJfSBl bHNlIGlmIChJU19HRU42KGRldl9wcml2KSAmJiAoR0VONl9ERUNPREVfUkM2X1ZJRChyYzZ2aWRz ICYgMHhmZikgPCA0NTApKSB7Cj4gwqAJCURSTV9ERUJVR19EUklWRVIoIllvdSBzaG91bGQgdXBk YXRlIHlvdXIgQklPUy4gQ29ycmVjdGluZyBtaW5pbXVtIHJjNiB2b2x0YWdlICglZG1WLT4lZG1W KVxuIiwKPiDCoAkJCcKgwqBHRU42X0RFQ09ERV9SQzZfVklEKHJjNnZpZHMgJiAweGZmKSwgNDUw KTsKPiDCoAkJcmM2dmlkcyAmPSAweGZmZmYwMDsKPiBAQCAtNTEwMSw5ICs1MDcyLDggQEAgc3Rh dGljIHZvaWQgZ2VuNl9lbmFibGVfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwo+IMKgfQo+ IMKgCj4gLXN0YXRpYyB2b2lkIF9fZ2VuNl91cGRhdGVfcmluZ19mcmVxKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIF9fZ2VuNl91cGRhdGVfcmluZ19mcmVxKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gwqAJaW50IG1pbl9mcmVxID0gMTU7 Cj4gwqAJdW5zaWduZWQgaW50IGdwdV9mcmVxOwo+IMKgCXVuc2lnbmVkIGludCBtYXhfaWFfZnJl cSwgbWluX3JpbmdfZnJlcTsKPiBAQCAtNTEzMiw3ICs1MTAyLDcgQEAgc3RhdGljIHZvaWQgX19n ZW42X3VwZGF0ZV9yaW5nX2ZyZXEoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAkvKiBjb252 ZXJ0IEREUiBmcmVxdWVuY3kgZnJvbSB1bml0cyBvZiAyNjYuNk1IeiB0byBiYW5kd2lkdGggKi8K PiDCoAltaW5fcmluZ19mcmVxID0gbXVsdF9mcmFjKG1pbl9yaW5nX2ZyZXEsIDgsIDMpOwo+IMKg Cj4gLQlpZiAoSVNfU0tZTEFLRShkZXYpIHx8IElTX0tBQllMQUtFKGRldikpIHsKPiArCWlmIChJ U19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKPiDCoAkJLyog Q29udmVydCBHVCBmcmVxdWVuY3kgdG8gNTAgSFogdW5pdHMgKi8KPiDCoAkJbWluX2dwdV9mcmVx ID0gZGV2X3ByaXYtPnJwcy5taW5fZnJlcSAvIEdFTjlfRlJFUV9TQ0FMRVI7Cj4gwqAJCW1heF9n cHVfZnJlcSA9IGRldl9wcml2LT5ycHMubWF4X2ZyZXEgLyBHRU45X0ZSRVFfU0NBTEVSOwo+IEBA IC01MTUwLDE2ICs1MTIwLDE2IEBAIHN0YXRpYyB2b2lkIF9fZ2VuNl91cGRhdGVfcmluZ19mcmVx KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJCWludCBkaWZmID0gbWF4X2dwdV9mcmVxIC0g Z3B1X2ZyZXE7Cj4gwqAJCXVuc2lnbmVkIGludCBpYV9mcmVxID0gMCwgcmluZ19mcmVxID0gMDsK PiDCoAo+IC0JCWlmIChJU19TS1lMQUtFKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkgewo+ICsJ CWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKPiDC oAkJCS8qCj4gwqAJCQnCoCogcmluZ19mcmVxID0gMiAqIEdULiByaW5nX2ZyZXEgaXMgaW4gMTAw TUh6IHVuaXRzCj4gwqAJCQnCoCogTm8gZmxvb3IgcmVxdWlyZWQgZm9yIHJpbmcgZnJlcXVlbmN5 IG9uIFNLTC4KPiDCoAkJCcKgKi8KPiDCoAkJCXJpbmdfZnJlcSA9IGdwdV9mcmVxOwo+IC0JCX0g ZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+ICsJCX0gZWxzZSBpZiAoSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4KSB7Cj4gwqAJCQkvKiBtYXgoMiAqIEdULCBERFIp LiBOQjogR1QgaXMgNTBNSHogdW5pdHMgKi8KPiDCoAkJCXJpbmdfZnJlcSA9IG1heChtaW5fcmlu Z19mcmVxLCBncHVfZnJlcSk7Cj4gLQkJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldikpIHsKPiAr CQl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7Cj4gwqAJCQlyaW5nX2ZyZXEgPSBt dWx0X2ZyYWMoZ3B1X2ZyZXEsIDUsIDQpOwo+IMKgCQkJcmluZ19mcmVxID0gbWF4KG1pbl9yaW5n X2ZyZXEsIHJpbmdfZnJlcSk7Cj4gwqAJCQkvKiBsZWF2ZSBpYV9mcmVxIGFzIHRoZSBkZWZhdWx0 LCBjaG9zZW4gYnkgY3B1ZnJlcSAqLwo+IEBAIC01MTg2LDI2ICs1MTU2LDIzIEBAIHN0YXRpYyB2 b2lkIF9fZ2VuNl91cGRhdGVfcmluZ19mcmVxKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJ fQo+IMKgfQo+IMKgCj4gLXZvaWQgZ2VuNl91cGRhdGVfcmluZ19mcmVxKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gK3ZvaWQgZ2VuNl91cGRhdGVfcmluZ19mcmVxKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQo+IC0JaWYgKCFIQVNfQ09SRV9SSU5HX0ZSRVEo ZGV2KSkKPiArCWlmICghSEFTX0NPUkVfUklOR19GUkVRKGRldl9wcml2KSkKPiDCoAkJcmV0dXJu Owo+IMKgCj4gwqAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiAtCV9fZ2Vu Nl91cGRhdGVfcmluZ19mcmVxKGRldik7Cj4gKwlfX2dlbjZfdXBkYXRlX3JpbmdfZnJlcShkZXZf cHJpdik7Cj4gwqAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+IMKgfQo+ IMKgCj4gwqBzdGF0aWMgaW50IGNoZXJyeXZpZXdfcnBzX21heF9mcmVxKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBk ZXZfcHJpdi0+ZGV2Owo+IMKgCXUzMiB2YWwsIHJwMDsKPiDCoAo+IMKgCXZhbCA9IHZsdl9wdW5p dF9yZWFkKGRldl9wcml2LCBGQl9HRlhfRk1BWF9BVF9WTUFYX0ZVU0UpOwo+IMKgCj4gLQlzd2l0 Y2ggKElOVEVMX0lORk8oZGV2KS0+ZXVfdG90YWwpIHsKPiArCXN3aXRjaCAoSU5URUxfSU5GTyhk ZXZfcHJpdiktPmV1X3RvdGFsKSB7Cj4gwqAJY2FzZSA4Ogo+IMKgCQkvKiAoMiAqIDQpIGNvbmZp ZyAqLwo+IMKgCQlycDAgPSAodmFsID4+IEZCX0dGWF9GTUFYX0FUX1ZNQVhfMlNTNEVVX0ZVU0Vf U0hJRlQpOwo+IEBAIC01MzE2LDkgKzUyODMsOCBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2No ZWNrX3BjdHgoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCVdBUk5fT04o KHBjdHhfYWRkciA+PiBWTFZfUENCUl9BRERSX1NISUZUKSA9PSAwKTsKPiDCoH0KPiDCoAo+IC1z dGF0aWMgdm9pZCBjaGVycnl2aWV3X3NldHVwX3BjdHgoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiArc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiDCoAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2 LT5nZ3R0Owo+IMKgCXVuc2lnbmVkIGxvbmcgcGN0eF9wYWRkciwgcGFkZHI7Cj4gwqAJdTMyIHBj YnI7Cj4gQEAgLTUzMzcsMTUgKzUzMDMsMTQgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zZXR1 cF9wY3R4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJRFJNX0RFQlVHX0RSSVZFUigiUENC UjogMHglMDh4XG4iLCBJOTE1X1JFQUQoVkxWX1BDQlIpKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMg dm9pZCB2YWxsZXl2aWV3X3NldHVwX3BjdHgoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArc3Rh dGljIHZvaWQgdmFsbGV5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gwqAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnBjdHg7Cj4g wqAJdW5zaWduZWQgbG9uZyBwY3R4X3BhZGRyOwo+IMKgCXUzMiBwY2JyOwo+IMKgCWludCBwY3R4 X3NpemUgPSAyNCoxMDI0Owo+IMKgCj4gLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IMKgCj4gwqAJ cGNiciA9IEk5MTVfUkVBRChWTFZfUENCUik7Cj4gwqAJaWYgKHBjYnIpIHsKPiBAQCAtNTM3MCw3 ICs1MzM1LDcgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19zZXR1cF9wY3R4KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gwqAJwqAqIG92ZXJsYXAgd2l0aCBvdGhlciByYW5nZXMsIHN1Y2ggYXMg dGhlIGZyYW1lIGJ1ZmZlciwgcHJvdGVjdGVkCj4gwqAJwqAqIG1lbW9yeSwgb3IgYW55IG90aGVy IHJlbGV2YW50IHJhbmdlcy4KPiDCoAnCoCovCj4gLQlwY3R4ID0gaTkxNV9nZW1fb2JqZWN0X2Ny ZWF0ZV9zdG9sZW4oZGV2LCBwY3R4X3NpemUpOwo+ICsJcGN0eCA9IGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfc3RvbGVuKGRldl9wcml2LT5kZXYsIHBjdHhfc2l6ZSk7Cj4gwqAJaWYgKCFwY3R4KSB7 Cj4gwqAJCURSTV9ERUJVRygibm90IGVub3VnaCBzdG9sZW4gc3BhY2UgZm9yIFBDVFgsIGRpc2Fi bGluZ1xuIik7Cj4gwqAJCWdvdG8gb3V0Owo+IEBAIC01MzgyLDEzICs1MzQ3LDExIEBAIHN0YXRp YyB2b2lkIHZhbGxleXZpZXdfc2V0dXBfcGN0eChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKg b3V0Ogo+IMKgCURSTV9ERUJVR19EUklWRVIoIlBDQlI6IDB4JTA4eFxuIiwgSTkxNV9SRUFEKFZM Vl9QQ0JSKSk7Cj4gwqAJZGV2X3ByaXYtPnZsdl9wY3R4ID0gcGN0eDsKPiAtCW11dGV4X3VubG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIHZhbGxleXZpZXdfY2xlYW51 cF9wY3R4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIHZhbGxleXZpZXdf Y2xlYW51cF9wY3R4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g LQo+IMKgCWlmIChXQVJOX09OKCFkZXZfcHJpdi0+dmx2X3BjdHgpKQo+IMKgCQlyZXR1cm47Cj4g wqAKPiBAQCAtNTQwNywxMiArNTM3MCwxMSBAQCBzdGF0aWMgdm9pZCB2bHZfaW5pdF9ncGxsX3Jl Zl9mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAkJCcKgZGV2X3By aXYtPnJwcy5ncGxsX3JlZl9mcmVxKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZCB2YWxsZXl2 aWV3X2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2 b2lkIHZhbGxleXZpZXdfaW5pdF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+IMKgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAl1MzIgdmFsOwo+IMKgCj4gLQl2YWxsZXl2aWV3X3NldHVw X3BjdHgoZGV2KTsKPiArCXZhbGxleXZpZXdfc2V0dXBfcGN0eChkZXZfcHJpdik7Cj4gwqAKPiDC oAl2bHZfaW5pdF9ncGxsX3JlZl9mcmVxKGRldl9wcml2KTsKPiDCoAo+IEBAIC01NDY2LDEyICs1 NDI4LDExIEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfaW5pdF9ndF9wb3dlcnNhdmUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiDCoAltdXRleF91bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9j ayk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgY2hlcnJ5dmlld19pbml0X2d0X3Bvd2Vyc2F2 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2luaXRf Z3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g wqAJdTMyIHZhbDsKPiDCoAo+IC0JY2hlcnJ5dmlld19zZXR1cF9wY3R4KGRldik7Cj4gKwljaGVy cnl2aWV3X3NldHVwX3BjdHgoZGV2X3ByaXYpOwo+IMKgCj4gwqAJdmx2X2luaXRfZ3BsbF9yZWZf ZnJlcShkZXZfcHJpdik7Cj4gwqAKPiBAQCAtNTUzMSwxNCArNTQ5MiwxMyBAQCBzdGF0aWMgdm9p ZCBjaGVycnl2aWV3X2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g wqAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+IMKgfQo+IMKgCj4gLXN0 YXRpYyB2b2lkIHZhbGxleXZpZXdfY2xlYW51cF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiArc3RhdGljIHZvaWQgdmFsbGV5dmlld19jbGVhbnVwX2d0X3Bvd2Vyc2F2ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQl2YWxsZXl2aWV3X2Ns ZWFudXBfcGN0eChkZXYpOwo+ICsJdmFsbGV5dmlld19jbGVhbnVwX3BjdHgoZGV2X3ByaXYpOwo+ IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfZW5hYmxlX3JwcyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICtzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2VuYWJsZV9ycHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgewo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmU7Cj4gwqAJdTMyIGd0Zmlmb2RiZywgdmFsLCByYzZfbW9kZSA9IDAsIHBj YnI7Cj4gwqAKPiBAQCAtNTU4Myw4ICs1NTQzLDggQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19l bmFibGVfcnBzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gwqAJcGNiciA9IEk5MTVfUkVBRChW TFZfUENCUik7Cj4gwqAKPiDCoAkvKiAzOiBFbmFibGUgUkM2ICovCj4gLQlpZiAoKGludGVsX2Vu YWJsZV9yYzYoZGV2KSAmIElOVEVMX1JDNl9FTkFCTEUpICYmCj4gLQkJCQkJCShwY2JyID4+IFZM Vl9QQ0JSX0FERFJfU0hJRlQpKQo+ICsJaWYgKChpbnRlbF9lbmFibGVfcmM2KCkgJiBJTlRFTF9S QzZfRU5BQkxFKSAmJgo+ICsJwqDCoMKgwqAocGNiciA+PiBWTFZfUENCUl9BRERSX1NISUZUKSkK PiDCoAkJcmM2X21vZGUgPSBHRU43X1JDX0NUTF9UT19NT0RFOwo+IMKgCj4gwqAJSTkxNV9XUklU RShHRU42X1JDX0NPTlRST0wsIHJjNl9tb2RlKTsKPiBAQCAtNTYyOSwxNCArNTU4OSwxMyBAQCBz dGF0aWMgdm9pZCBjaGVycnl2aWV3X2VuYWJsZV9ycHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiDCoAkJCcKgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuaWRsZV9mcmVx KSwKPiDCoAkJCcKgZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEpOwo+IMKgCj4gLQl2YWxsZXl2aWV3 X3NldF9ycHMoZGV2X3ByaXYtPmRldiwgZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEpOwo+ICsJdmFs bGV5dmlld19zZXRfcnBzKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmlkbGVfZnJlcSk7Cj4gwqAK PiDCoAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7 Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgdmFsbGV5dmlld19lbmFibGVfcnBzKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIHZhbGxleXZpZXdfZW5hYmxlX3JwcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKPiDCoAl1MzIgZ3RmaWZvZGJnLCB2YWwsIHJjNl9tb2RlID0gMDsK PiDCoAo+IEBAIC01Njg5LDEwICs1NjQ4LDEwIEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfZW5h YmxlX3JwcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCQkJCcKgwqDCoMKgwqDCoFZMVl9N RURJQV9SQzZfQ09VTlRfRU4gfAo+IMKgCQkJCcKgwqDCoMKgwqDCoFZMVl9SRU5ERVJfUkM2X0NP VU5UX0VOKSk7Cj4gwqAKPiAtCWlmIChpbnRlbF9lbmFibGVfcmM2KGRldikgJiBJTlRFTF9SQzZf RU5BQkxFKQo+ICsJaWYgKGludGVsX2VuYWJsZV9yYzYoKSAmIElOVEVMX1JDNl9FTkFCTEUpCj4g wqAJCXJjNl9tb2RlID0gR0VON19SQ19DVExfVE9fTU9ERSB8IFZMVl9SQ19DVExfQ1RYX1JTVF9Q QVJBTExFTDsKPiDCoAo+IC0JaW50ZWxfcHJpbnRfcmM2X2luZm8oZGV2LCByYzZfbW9kZSk7Cj4g KwlpbnRlbF9wcmludF9yYzZfaW5mbyhkZXZfcHJpdiwgcmM2X21vZGUpOwo+IMKgCj4gwqAJSTkx NV9XUklURShHRU42X1JDX0NPTlRST0wsIHJjNl9tb2RlKTsKPiDCoAo+IEBAIC01NzE5LDcgKzU2 NzgsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2VuYWJsZV9ycHMoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiDCoAkJCcKgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMu aWRsZV9mcmVxKSwKPiDCoAkJCcKgZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEpOwo+IMKgCj4gLQl2 YWxsZXl2aWV3X3NldF9ycHMoZGV2X3ByaXYtPmRldiwgZGV2X3ByaXYtPnJwcy5pZGxlX2ZyZXEp Owo+ICsJdmFsbGV5dmlld19zZXRfcnBzKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmlkbGVfZnJl cSk7Cj4gwqAKPiDCoAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VX QUtFX0FMTCk7Cj4gwqB9Cj4gQEAgLTU4MDksMTAgKzU3NjgsOSBAQCBzdGF0aWMgdW5zaWduZWQg bG9uZyBfX2k5MTVfY2hpcHNldF92YWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+IMKgCj4gwqB1bnNpZ25lZCBsb25nIGk5MTVfY2hpcHNldF92YWwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRl dl9wcml2LT5kZXY7Cj4gwqAJdW5zaWduZWQgbG9uZyB2YWw7Cj4gwqAKPiAtCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiAhPSA1KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gIT0g NSkKPiDCoAkJcmV0dXJuIDA7Cj4gwqAKPiDCoAlzcGluX2xvY2tfaXJxKCZtY2hkZXZfbG9jayk7 Cj4gQEAgLTU4NTIsMTEgKzU4MTAsMTAgQEAgc3RhdGljIGludCBfcHh2aWRfdG9fdmQodTggcHh2 aWQpCj4gwqAKPiDCoHN0YXRpYyB1MzIgcHZpZF90b19leHR2aWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1OCBweHZpZCkKPiDCoHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBkZXZfcHJpdi0+ZGV2Owo+IMKgCWNvbnN0IGludCB2ZCA9IF9weHZpZF90b192ZChweHZp ZCk7Cj4gwqAJY29uc3QgaW50IHZtID0gdmQgLSAxMTI1Owo+IMKgCj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5pc19tb2JpbGUpCj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmlzX21vYmls ZSkKPiDCoAkJcmV0dXJuIHZtID4gMCA/IHZtIDogMDsKPiDCoAo+IMKgCXJldHVybiB2ZDsKPiBA QCAtNTg5Nyw5ICs1ODU0LDcgQEAgc3RhdGljIHZvaWQgX19pOTE1X3VwZGF0ZV9nZnhfdmFsKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAo+IMKgdm9pZCBpOTE1X3VwZGF0 ZV9nZnhfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+IC0KPiAtCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiAhPSA1KQo+ICsJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gIT0g NSkKPiDCoAkJcmV0dXJuOwo+IMKgCj4gwqAJc3Bpbl9sb2NrX2lycSgmbWNoZGV2X2xvY2spOwo+ IEBAIC01OTQ4LDEwICs1OTAzLDkgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pOTE1X2dmeF92 YWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCj4gwqB1bnNpZ25lZCBs b25nIGk5MTVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7 Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKPiDCoAl1bnNpZ25l ZCBsb25nIHZhbDsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuICE9IDUpCj4gKwlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiAhPSA1KQo+IMKgCQlyZXR1cm4gMDsKPiDCoAo+ IMKgCXNwaW5fbG9ja19pcnEoJm1jaGRldl9sb2NrKTsKPiBAQCAtNjE0MCw5ICs2MDk0LDggQEAg dm9pZCBpbnRlbF9ncHVfaXBzX3RlYXJkb3duKHZvaWQpCj4gwqAJc3Bpbl91bmxvY2tfaXJxKCZt Y2hkZXZfbG9jayk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9lbW9uKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3N0YXRpYyB2b2lkIGludGVsX2luaXRfZW1vbihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCXUzMiBsY2Z1c2U7Cj4g wqAJdTggcHh3WzE2XTsKPiDCoAlpbnQgaTsKPiBAQCAtNjIxMSwxMCArNjE2NCw4IEBAIHN0YXRp YyB2b2lkIGludGVsX2luaXRfZW1vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCWRldl9w cml2LT5pcHMuY29yciA9IChsY2Z1c2UgJiBMQ0ZVU0VfSElWX01BU0spOwo+IMKgfQo+IMKgCj4g LXZvaWQgaW50ZWxfaW5pdF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAr dm9pZCBpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwo+IC0KPiDCoAkvKgo+IMKgCcKgKiBSUE0gZGVwZW5kcyBvbiBSQzYgdG8g c2F2ZSByZXN0b3JlIHRoZSBHVCBIVyBjb250ZXh0LCBzbyBtYWtlIFJDNiBhCj4gwqAJwqAqIHJl cXVpcmVtZW50Lgo+IEBAIC02MjI0LDIwICs2MTc1LDE4IEBAIHZvaWQgaW50ZWxfaW5pdF9ndF9w b3dlcnNhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAkJaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOwo+IMKgCX0KPiDCoAo+IC0JaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKPiAt CQljaGVycnl2aWV3X2luaXRfZ3RfcG93ZXJzYXZlKGRldik7Cj4gLQllbHNlIGlmIChJU19WQUxM RVlWSUVXKGRldikpCj4gLQkJdmFsbGV5dmlld19pbml0X2d0X3Bvd2Vyc2F2ZShkZXYpOwo+ICsJ aWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+ICsJCWNoZXJyeXZpZXdfaW5pdF9ndF9wb3dl cnNhdmUoZGV2X3ByaXYpOwo+ICsJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpCj4g KwkJdmFsbGV5dmlld19pbml0X2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4gwqB9Cj4gwqAKPiAt dm9pZCBpbnRlbF9jbGVhbnVwX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICt2b2lkIGludGVsX2NsZWFudXBfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQo+IC0JaWYgKElTX0NIRVJSWVZJRVcoZGV2KSkKPiArCWlm IChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiDCoAkJcmV0dXJuOwo+IC0JZWxzZSBpZiAoSVNf VkFMTEVZVklFVyhkZXYpKQo+IC0JCXZhbGxleXZpZXdfY2xlYW51cF9ndF9wb3dlcnNhdmUoZGV2 KTsKPiArCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpKQo+ICsJCXZhbGxleXZpZXdf Y2xlYW51cF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+IMKgCj4gwqAJaWYgKCFpOTE1LmVuYWJs ZV9yYzYpCj4gwqAJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiBAQCAtNjI1Miwx NiArNjIwMSwxNCBAQCBzdGF0aWMgdm9pZCBnZW42X3N1c3BlbmRfcnBzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAo+IMKgLyoqCj4gwqAgKiBpbnRlbF9zdXNwZW5kX2d0 X3Bvd2Vyc2F2ZSAtIHN1c3BlbmQgUE0gd29yayBhbmQgaGVscGVyIHRocmVhZHMKPiAtICogQGRl djogZHJtIGRldmljZQo+ICsgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlCj4gwqAgKgo+IMKgICog V2UgZG9uJ3Qgd2FudCB0byBkaXNhYmxlIFJDNiBvciBvdGhlciBmZWF0dXJlcyBoZXJlLCB3ZSBq dXN0IHdhbnQKPiDCoCAqIHRvIG1ha2Ugc3VyZSBhbnkgd29yayB3ZSd2ZSBxdWV1ZWQgaGFzIGZp bmlzaGVkIGFuZCB3b24ndCBib3RoZXIKPiDCoCAqIHVzIHdoaWxlIHdlJ3JlIHN1c3BlbmRlZC4K PiDCoCAqLwo+IC12b2lkIGludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gK3ZvaWQgaW50ZWxfc3VzcGVuZF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCj4gwqAJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPCA2KQo+IMKgCQlyZXR1cm47Cj4gwqAKPiBAQCAtNjI3MSwyNSArNjIxOCwyMyBAQCB2 b2lkIGludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g wqAJZ2VuNl9ycHNfaWRsZShkZXZfcHJpdik7Cj4gwqB9Cj4gwqAKPiAtdm9pZCBpbnRlbF9kaXNh YmxlX2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt2b2lkIGludGVsX2Rp c2FibGVfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDC oHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gLQo+IC0JaWYgKElTX0lST05MQUtFX00oZGV2KSkgewo+ICsJaWYgKElTX0lST05MQUtF X00oZGV2X3ByaXYpKSB7Cj4gwqAJCWlyb25sYWtlX2Rpc2FibGVfZHJwcyhkZXZfcHJpdik7Cj4g LQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiAtCQlpbnRlbF9zdXNw ZW5kX2d0X3Bvd2Vyc2F2ZShkZXYpOwo+ICsJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2 KS0+Z2VuID49IDYpIHsKPiArCQlpbnRlbF9zdXNwZW5kX2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7 Cj4gwqAKPiDCoAkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiAtCQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+IC0JCQlnZW45X2Rpc2FibGVfcmM2KGRldik7 Cj4gLQkJCWdlbjlfZGlzYWJsZV9ycHMoZGV2KTsKPiAtCQl9IGVsc2UgaWYgKElTX0NIRVJSWVZJ RVcoZGV2KSkKPiAtCQkJY2hlcnJ5dmlld19kaXNhYmxlX3JwcyhkZXYpOwo+IC0JCWVsc2UgaWYg KElTX1ZBTExFWVZJRVcoZGV2KSkKPiAtCQkJdmFsbGV5dmlld19kaXNhYmxlX3JwcyhkZXYpOwo+ ICsJCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpIHsKPiArCQkJZ2VuOV9kaXNh YmxlX3JjNihkZXZfcHJpdik7Cj4gKwkJCWdlbjlfZGlzYWJsZV9ycHMoZGV2X3ByaXYpOwo+ICsJ CX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gKwkJCWNoZXJyeXZpZXdfZGlz YWJsZV9ycHMoZGV2X3ByaXYpOwo+ICsJCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYp KQo+ICsJCQl2YWxsZXl2aWV3X2Rpc2FibGVfcnBzKGRldl9wcml2KTsKPiDCoAkJZWxzZQo+IC0J CQlnZW42X2Rpc2FibGVfcnBzKGRldik7Cj4gKwkJCWdlbjZfZGlzYWJsZV9ycHMoZGV2X3ByaXYp Owo+IMKgCj4gwqAJCWRldl9wcml2LT5ycHMuZW5hYmxlZCA9IGZhbHNlOwo+IMKgCQltdXRleF91 bmxvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gQEAgLTYzMDEsMjcgKzYyNDYsMjYgQEAg c3RhdGljIHZvaWQgaW50ZWxfZ2VuNl9wb3dlcnNhdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiDCoAkJY29u dGFpbmVyX29mKHdvcmssIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlLAo+IMKgCQkJwqDCoMKgwqDC oHJwcy5kZWxheWVkX3Jlc3VtZV93b3JrLndvcmspOwo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGRldl9wcml2LT5kZXY7Cj4gwqAKPiDCoAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOwo+IMKgCj4gLQlnZW42X3Jlc2V0X3Jwc19pbnRlcnJ1cHRzKGRldik7Cj4gKwlnZW42 X3Jlc2V0X3Jwc19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiDCoAo+IC0JaWYgKElTX0NIRVJSWVZJ RVcoZGV2KSkgewo+IC0JCWNoZXJyeXZpZXdfZW5hYmxlX3JwcyhkZXYpOwo+IC0JfSBlbHNlIGlm IChJU19WQUxMRVlWSUVXKGRldikpIHsKPiAtCQl2YWxsZXl2aWV3X2VuYWJsZV9ycHMoZGV2KTsK PiAtCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+IC0JCWdlbjlfZW5h YmxlX3JjNihkZXYpOwo+IC0JCWdlbjlfZW5hYmxlX3JwcyhkZXYpOwo+IC0JCWlmIChJU19TS1lM QUtFKGRldikgfHwgSVNfS0FCWUxBS0UoZGV2KSkKPiAtCQkJX19nZW42X3VwZGF0ZV9yaW5nX2Zy ZXEoZGV2KTsKPiAtCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldikpIHsKPiAtCQlnZW44X2Vu YWJsZV9ycHMoZGV2KTsKPiAtCQlfX2dlbjZfdXBkYXRlX3JpbmdfZnJlcShkZXYpOwo+ICsJaWYg KElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gKwkJY2hlcnJ5dmlld19lbmFibGVfcnBzKGRl dl9wcml2KTsKPiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikpIHsKPiArCQl2 YWxsZXl2aWV3X2VuYWJsZV9ycHMoZGV2X3ByaXYpOwo+ICsJfSBlbHNlIGlmIChJTlRFTF9JTkZP KGRldl9wcml2KS0+Z2VuID49IDkpIHsKPiArCQlnZW45X2VuYWJsZV9yYzYoZGV2X3ByaXYpOwo+ ICsJCWdlbjlfZW5hYmxlX3JwcyhkZXZfcHJpdik7Cj4gKwkJaWYgKElTX1NLWUxBS0UoZGV2X3By aXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkKPiArCQkJX19nZW42X3VwZGF0ZV9yaW5nX2Zy ZXEoZGV2X3ByaXYpOwo+ICsJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4g KwkJZ2VuOF9lbmFibGVfcnBzKGRldl9wcml2KTsKPiArCQlfX2dlbjZfdXBkYXRlX3JpbmdfZnJl cShkZXZfcHJpdik7Cj4gwqAJfSBlbHNlIHsKPiAtCQlnZW42X2VuYWJsZV9ycHMoZGV2KTsKPiAt CQlfX2dlbjZfdXBkYXRlX3JpbmdfZnJlcShkZXYpOwo+ICsJCWdlbjZfZW5hYmxlX3JwcyhkZXZf cHJpdik7Cj4gKwkJX19nZW42X3VwZGF0ZV9yaW5nX2ZyZXEoZGV2X3ByaXYpOwo+IMKgCX0KPiDC oAo+IMKgCVdBUk5fT04oZGV2X3ByaXYtPnJwcy5tYXhfZnJlcSA8IGRldl9wcml2LT5ycHMubWlu X2ZyZXEpOwo+IEBAIC02MzM5LDIwICs2MjgzLDE4IEBAIHN0YXRpYyB2b2lkIGludGVsX2dlbjZf cG93ZXJzYXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+IMKgCWludGVsX3J1bnRp bWVfcG1fcHV0KGRldl9wcml2KTsKPiDCoH0KPiDCoAo+IC12b2lkIGludGVsX2VuYWJsZV9ndF9w b3dlcnNhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArdm9pZCBpbnRlbF9lbmFibGVfZ3Rf cG93ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQo+ IMKgCS8qIFBvd2Vyc2F2aW5nIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGhvc3Qgd2hlbiBpbnNpZGUg YSBWTSAqLwo+IMKgCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXZfcHJpdikpCj4gwqAJCXJldHVy bjsKPiDCoAo+IC0JaWYgKElTX0lST05MQUtFX00oZGV2KSkgewo+ICsJaWYgKElTX0lST05MQUtF X00oZGV2X3ByaXYpKSB7Cj4gwqAJCWlyb25sYWtlX2VuYWJsZV9kcnBzKGRldl9wcml2KTsKPiAt CQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQkJaW50ZWxfaW5pdF9lbW9uKGRl dik7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQl9IGVsc2UgaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpIHsKPiArCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJCWludGVsX2luaXRfZW1vbihkZXZfcHJpdik7Cj4gKwkJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJfSBlbHNlIGlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYpIHsKPiDCoAkJLyoKPiDCoAkJwqAqIFBD VSBjb21tdW5pY2F0aW9uIGlzIHNsb3cgYW5kIHRoaXMgZG9lc24ndCBuZWVkIHRvIGJlCj4gwqAJ CcKgKiBkb25lIGF0IGFueSBzcGVjaWZpYyB0aW1lLCBzbyBkbyB0aGlzIG91dCBvZiBvdXIgZmFz dCBwYXRoCj4gQEAgLTYzNzEsMTEgKzYzMTMsOSBAQCB2b2lkIGludGVsX2VuYWJsZV9ndF9wb3dl cnNhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAl9Cj4gwqB9Cj4gwqAKPiAtdm9pZCBp bnRlbF9yZXNldF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArdm9pZCBp bnRlbF9yZXNldF9ndF9wb3dlcnNhdmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+IMKgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiAtCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA2KQo+ICsJaWYgKElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA2KQo+IMKgCQlyZXR1cm47Cj4gwqAKPiDCoAlnZW42 X3N1c3BlbmRfcnBzKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ IGluZGV4IDRlYTJiZjJjMmE0YS4uMGM0OGFmMmYxYjdlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMKPiBAQCAtMjQ4LDkgKzI0OCw5IEBAIGludGVsX3VuY29yZV9md19yZWxl YXNlX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcikKPiDCoAlyZXR1cm4gSFJUSU1FUl9OT1JF U1RBUlQ7Cj4gwqB9Cj4gwqAKPiAtdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3Jlc2V0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgcmVzdG9yZSkKPiArdm9pZCBpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJ CcKgwqBib29sIHJlc3RvcmUpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IMKgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4g wqAJc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdha2VfZG9tYWluICpkb21haW47Cj4gwqAJaW50 IHJldHJ5X2NvdW50ID0gMTAwOwo+IEBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBpbnRlbF91bmNv cmVfZm9yY2V3YWtlX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgcmVzdG9yZSkK PiDCoAkJaWYgKGZ3KQo+IMKgCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dl dChkZXZfcHJpdiwgZncpOwo+IMKgCj4gLQkJaWYgKElTX0dFTjYoZGV2KSB8fCBJU19HRU43KGRl dikpCj4gKwkJaWYgKElTX0dFTjYoZGV2X3ByaXYpIHx8IElTX0dFTjcoZGV2X3ByaXYpKQo+IMKg CQkJZGV2X3ByaXYtPnVuY29yZS5maWZvX2NvdW50ID0KPiDCoAkJCQlmaWZvX2ZyZWVfZW50cmll cyhkZXZfcHJpdik7Cj4gwqAJfQo+IEBAIC00MDAsNDMgKzQwMCw0MiBAQCBjaGVja19mb3JfdW5j bGFpbWVkX21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCXJldHVy biBmYWxzZTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZCBfX2ludGVsX3VuY29yZV9lYXJseV9z YW5pdGl6ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICtzdGF0aWMgdm9pZCBfX2ludGVsX3Vu Y29yZV9lYXJseV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g wqAJCQkJCcKgwqBib29sIHJlc3RvcmVfZm9yY2V3YWtlKQo+IMKgewo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCj4gwqAJLyogY2xl YXIgb3V0IHVuY2xhaW1lZCByZWcgZGV0ZWN0aW9uIGJpdCAqLwo+IMKgCWlmIChjaGVja19mb3Jf dW5jbGFpbWVkX21taW8oZGV2X3ByaXYpKQo+IMKgCQlEUk1fREVCVUcoInVuY2xhaW1lZCBtbWlv IGRldGVjdGVkIG9uIHVuY29yZSBpbml0LCBjbGVhcmluZ1xuIik7Cj4gwqAKPiDCoAkvKiBjbGVh ciBvdXQgb2xkIEdUIEZJRk8gZXJyb3JzICovCj4gLQlpZiAoSVNfR0VONihkZXYpIHx8IElTX0dF TjcoZGV2KSkKPiArCWlmIChJU19HRU42KGRldl9wcml2KSB8fCBJU19HRU43KGRldl9wcml2KSkK PiDCoAkJX19yYXdfaTkxNV93cml0ZTMyKGRldl9wcml2LCBHVEZJRk9EQkcsCj4gwqAJCQkJwqDC oMKgX19yYXdfaTkxNV9yZWFkMzIoZGV2X3ByaXYsIEdURklGT0RCRykpOwo+IMKgCj4gwqAJLyog V2FEaXNhYmxlU2hhZG93UmVnRm9yQ3BkOmNodiAqLwo+IC0JaWYgKElTX0NIRVJSWVZJRVcoZGV2 KSkgewo+ICsJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gwqAJCV9fcmF3X2k5MTVf d3JpdGUzMihkZXZfcHJpdiwgR1RGSUZPQ1RMLAo+IMKgCQkJCcKgwqDCoF9fcmF3X2k5MTVfcmVh ZDMyKGRldl9wcml2LCBHVEZJRk9DVEwpIHwKPiDCoAkJCQnCoMKgwqBHVF9GSUZPX0NUTF9CTE9D S19BTExfUE9MSUNZX1NUQUxMIHwKPiDCoAkJCQnCoMKgwqBHVF9GSUZPX0NUTF9SQzZfUE9MSUNZ X1NUQUxMKTsKPiDCoAl9Cj4gwqAKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfcmVzZXQoZGV2 LCByZXN0b3JlX2ZvcmNld2FrZSk7Cj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3Jlc2V0KGRl dl9wcml2LCByZXN0b3JlX2ZvcmNld2FrZSk7Cj4gwqB9Cj4gwqAKPiAtdm9pZCBpbnRlbF91bmNv cmVfZWFybHlfc2FuaXRpemUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCByZXN0b3JlX2Zv cmNld2FrZSkKPiArdm9pZCBpbnRlbF91bmNvcmVfZWFybHlfc2FuaXRpemUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJwqBib29sIHJlc3RvcmVfZm9yY2V3YWtlKQo+ IMKgewo+IC0JX19pbnRlbF91bmNvcmVfZWFybHlfc2FuaXRpemUoZGV2LCByZXN0b3JlX2ZvcmNl d2FrZSk7Cj4gLQlpOTE1X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoZGV2KTsKPiArCV9faW50ZWxf dW5jb3JlX2Vhcmx5X3Nhbml0aXplKGRldl9wcml2LCByZXN0b3JlX2ZvcmNld2FrZSk7Cj4gKwlp OTE1X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoZGV2X3ByaXYpOwo+IMKgfQo+IMKgCj4gLXZvaWQg aW50ZWxfdW5jb3JlX3Nhbml0aXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3ZvaWQgaW50 ZWxfdW5jb3JlX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDC oHsKPiAtCWk5MTUuZW5hYmxlX3JjNiA9IHNhbml0aXplX3JjNl9vcHRpb24oZGV2LCBpOTE1LmVu YWJsZV9yYzYpOwo+ICsJaTkxNS5lbmFibGVfcmM2ID0gc2FuaXRpemVfcmM2X29wdGlvbihkZXZf cHJpdiwgaTkxNS5lbmFibGVfcmM2KTsKPiDCoAo+IMKgCS8qIEJJT1Mgb2Z0ZW4gbGVhdmVzIFJD NiBlbmFibGVkLCBidXQgZGlzYWJsZSBpdCBmb3IgaHcgaW5pdCAqLwo+IC0JaW50ZWxfZGlzYWJs ZV9ndF9wb3dlcnNhdmUoZGV2KTsKPiArCWludGVsX2Rpc2FibGVfZ3RfcG93ZXJzYXZlKGRldl9w cml2KTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHZvaWQgX19pbnRlbF91bmNvcmVfZm9yY2V3YWtl X2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTEyMzMsMTQgKzEy MzIsMTIgQEAgc3RhdGljIHZvaWQgZndfZG9tYWluX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+IMKgCWZ3X2RvbWFpbl9yZXNldChkKTsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgdm9pZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gK3N0YXRpYyB2b2lkIGludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCj4gwqAJaWYgKElOVEVMX0lORk8o ZGV2X3ByaXYpLT5nZW4gPD0gNSkKPiDCoAkJcmV0dXJuOwo+IMKgCj4gLQlpZiAoSVNfR0VOOShk ZXYpKSB7Cj4gKwlpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiDCoAkJZGV2X3ByaXYtPnVuY29y ZS5mdW5jcy5mb3JjZV93YWtlX2dldCA9IGZ3X2RvbWFpbnNfZ2V0Owo+IMKgCQlkZXZfcHJpdi0+ dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0ID0gZndfZG9tYWluc19wdXQ7Cj4gwqAJCWZ3X2Rv bWFpbl9pbml0KGRldl9wcml2LCBGV19ET01BSU5fSURfUkVOREVSLAo+IEBAIC0xMjUxLDkgKzEy NDgsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gwqAJCQnCoMKgwqDCoMKgwqDCoEZPUkNFV0FLRV9BQ0tfQkxJVFRF Ul9HRU45KTsKPiDCoAkJZndfZG9tYWluX2luaXQoZGV2X3ByaXYsIEZXX0RPTUFJTl9JRF9NRURJ QSwKPiDCoAkJCcKgwqDCoMKgwqDCoMKgRk9SQ0VXQUtFX01FRElBX0dFTjksIEZPUkNFV0FLRV9B Q0tfTUVESUFfR0VOOSk7Cj4gLQl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19D SEVSUllWSUVXKGRldikpIHsKPiArCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiDCoAkJZGV2X3ByaXYtPnVuY29yZS5mdW5j cy5mb3JjZV93YWtlX2dldCA9IGZ3X2RvbWFpbnNfZ2V0Owo+IC0JCWlmICghSVNfQ0hFUlJZVklF VyhkZXYpKQo+ICsJCWlmICghSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gwqAJCQlkZXZfcHJp di0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0ID0KPiDCoAkJCQlmd19kb21haW5zX3B1dF93 aXRoX2ZpZm87Cj4gwqAJCWVsc2UKPiBAQCAtMTI2MiwxNyArMTI1OSwxNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g wqAJCQnCoMKgwqDCoMKgwqDCoEZPUkNFV0FLRV9WTFYsIEZPUkNFV0FLRV9BQ0tfVkxWKTsKPiDC oAkJZndfZG9tYWluX2luaXQoZGV2X3ByaXYsIEZXX0RPTUFJTl9JRF9NRURJQSwKPiDCoAkJCcKg wqDCoMKgwqDCoMKgRk9SQ0VXQUtFX01FRElBX1ZMViwgRk9SQ0VXQUtFX0FDS19NRURJQV9WTFYp Owo+IC0JfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpIHsK PiArCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9w cml2KSkgewo+IMKgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0ID0KPiDC oAkJCWZ3X2RvbWFpbnNfZ2V0X3dpdGhfdGhyZWFkX3N0YXR1czsKPiAtCQlpZiAoSVNfSEFTV0VM TChkZXYpKQo+ICsJCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkKPiDCoAkJCWRldl9wcml2LT51 bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPQo+IMKgCQkJCWZ3X2RvbWFpbnNfcHV0X3dpdGhf ZmlmbzsKPiDCoAkJZWxzZQo+IMKgCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtl X3B1dCA9IGZ3X2RvbWFpbnNfcHV0Owo+IMKgCQlmd19kb21haW5faW5pdChkZXZfcHJpdiwgRldf RE9NQUlOX0lEX1JFTkRFUiwKPiDCoAkJCcKgwqDCoMKgwqDCoMKgRk9SQ0VXQUtFX01ULCBGT1JD RVdBS0VfQUNLX0hTVyk7Cj4gLQl9IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXYpKSB7Cj4gKwl9 IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpIHsKPiDCoAkJdTMyIGVjb2J1czsKPiDC oAo+IMKgCQkvKiBJVkIgY29uZmlncyBtYXkgdXNlIG11bHRpLXRocmVhZGVkIGZvcmNld2FrZSAq Lwo+IEBAIC0xMzAyLDExICsxMjk5LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2Rv bWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCQlmd19kb21haW5faW5pdChk ZXZfcHJpdiwgRldfRE9NQUlOX0lEX1JFTkRFUiwKPiDCoAkJCcKgwqDCoMKgwqDCoMKgRk9SQ0VX QUtFX01ULCBGT1JDRVdBS0VfTVRfQUNLKTsKPiDCoAo+IC0JCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiDCoAkJZndfZG9tYWluc19nZXRfd2l0aF90aHJlYWRfc3RhdHVzKGRldl9w cml2LCBGT1JDRVdBS0VfQUxMKTsKPiDCoAkJZWNvYnVzID0gX19yYXdfaTkxNV9yZWFkMzIoZGV2 X3ByaXYsIEVDT0JVUyk7Cj4gwqAJCWZ3X2RvbWFpbnNfcHV0X3dpdGhfZmlmbyhkZXZfcHJpdiwg Rk9SQ0VXQUtFX0FMTCk7Cj4gLQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g wqAKPiDCoAkJaWYgKCEoZWNvYnVzICYgRk9SQ0VXQUtFX01UX0VOQUJMRSkpIHsKPiDCoAkJCURS TV9JTkZPKCJObyBNVCBmb3JjZXdha2UgYXZhaWxhYmxlIG9uIEl2eWJyaWRnZSwgdGhpcyBjYW4g cmVzdWx0IGluIGlzc3Vlc1xuIik7Cj4gQEAgLTEzMTQsNyArMTMwOSw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDC oAkJCWZ3X2RvbWFpbl9pbml0KGRldl9wcml2LCBGV19ET01BSU5fSURfUkVOREVSLAo+IMKgCQkJ CcKgwqDCoMKgwqDCoMKgRk9SQ0VXQUtFLCBGT1JDRVdBS0VfQUNLKTsKPiDCoAkJfQo+IC0JfSBl bHNlIGlmIChJU19HRU42KGRldikpIHsKPiArCX0gZWxzZSBpZiAoSVNfR0VONihkZXZfcHJpdikp IHsKPiDCoAkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldCA9Cj4gwqAJCQlm d19kb21haW5zX2dldF93aXRoX3RocmVhZF9zdGF0dXM7Cj4gwqAJCWRldl9wcml2LT51bmNvcmUu ZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPQo+IEBAIC0xMzI3LDI2ICsxMzIyLDI0IEBAIHN0YXRpYyB2 b2lkIGludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiDCoAlXQVJOX09OKGRldl9wcml2LT51bmNvcmUuZndfZG9tYWlucyA9PSAwKTsKPiDCoH0KPiDC oAo+IC12b2lkIGludGVsX3VuY29yZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3Zv aWQgaW50ZWxfdW5jb3JlX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ IMKgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiAtCj4gLQlpOTE1X2NoZWNrX3ZncHUoZGV2KTsKPiArCWk5MTVfY2hlY2tfdmdwdShk ZXZfcHJpdik7Cj4gwqAKPiDCoAlpbnRlbF91bmNvcmVfZWRyYW1fZGV0ZWN0KGRldl9wcml2KTsK PiAtCWludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoZGV2KTsKPiAtCV9faW50ZWxfdW5jb3Jl X2Vhcmx5X3Nhbml0aXplKGRldiwgZmFsc2UpOwo+ICsJaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNf aW5pdChkZXZfcHJpdik7Cj4gKwlfX2ludGVsX3VuY29yZV9lYXJseV9zYW5pdGl6ZShkZXZfcHJp diwgZmFsc2UpOwo+IMKgCj4gwqAJZGV2X3ByaXYtPnVuY29yZS51bmNsYWltZWRfbW1pb19jaGVj ayA9IDE7Cj4gwqAKPiAtCXN3aXRjaCAoSU5URUxfSU5GTyhkZXYpLT5nZW4pIHsKPiArCXN3aXRj aCAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbikgewo+IMKgCWRlZmF1bHQ6Cj4gwqAJY2FzZSA5 Ogo+IMKgCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1MoZ2VuOSk7Cj4gwqAJCUFTU0lHTl9SRUFE X01NSU9fVkZVTkNTKGdlbjkpOwo+IMKgCQlicmVhazsKPiDCoAljYXNlIDg6Cj4gLQkJaWYgKElT X0NIRVJSWVZJRVcoZGV2KSkgewo+ICsJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+ IMKgCQkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKGNodik7Cj4gwqAJCQlBU1NJR05fUkVBRF9N TUlPX1ZGVU5DUyhjaHYpOwo+IMKgCj4gQEAgLTEzNTcsMTMgKzEzNTAsMTMgQEAgdm9pZCBpbnRl bF91bmNvcmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IMKgCQlicmVhazsKPiDCoAlj YXNlIDc6Cj4gwqAJY2FzZSA2Ogo+IC0JCWlmIChJU19IQVNXRUxMKGRldikpIHsKPiArCQlpZiAo SVNfSEFTV0VMTChkZXZfcHJpdikpIHsKPiDCoAkJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyho c3cpOwo+IMKgCQl9IGVsc2Ugewo+IMKgCQkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKGdlbjYp Owo+IMKgCQl9Cj4gwqAKPiAtCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gKwkJaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpKSB7Cj4gwqAJCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyh2 bHYpOwo+IMKgCQl9IGVsc2Ugewo+IMKgCQkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1MoZ2VuNik7 Cj4gQEAgLTEzODYsMTYgKzEzNzksMTYgQEAgdm9pZCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+IMKgCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyh2Z3B1KTsKPiDC oAl9Cj4gwqAKPiAtCWk5MTVfY2hlY2tfYW5kX2NsZWFyX2ZhdWx0cyhkZXYpOwo+ICsJaTkxNV9j aGVja19hbmRfY2xlYXJfZmF1bHRzKGRldl9wcml2KTsKPiDCoH0KPiDCoCN1bmRlZiBBU1NJR05f V1JJVEVfTU1JT19WRlVOQ1MKPiDCoCN1bmRlZiBBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUwo+IMKg Cj4gLXZvaWQgaW50ZWxfdW5jb3JlX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArdm9p ZCBpbnRlbF91bmNvcmVfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g wqB7Cj4gwqAJLyogUGFyYW5vaWE6IG1ha2Ugc3VyZSB3ZSBoYXZlIGRpc2FibGVkIGV2ZXJ5dGhp bmcgYmVmb3JlIHdlIGV4aXQuICovCj4gLQlpbnRlbF91bmNvcmVfc2FuaXRpemUoZGV2KTsKPiAt CWludGVsX3VuY29yZV9mb3JjZXdha2VfcmVzZXQoZGV2LCBmYWxzZSk7Cj4gKwlpbnRlbF91bmNv cmVfc2FuaXRpemUoZGV2X3ByaXYpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXNldChk ZXZfcHJpdiwgZmFsc2UpOwo+IMKgfQo+IMKgCj4gwqAjZGVmaW5lIEdFTl9SQU5HRShsLCBoKSBH RU5NQVNLKGgsIGwpCj4gQEAgLTE1MDYsNDQgKzE0OTksNDcgQEAgaW50IGk5MTVfZ2V0X3Jlc2V0 X3N0YXRzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gwqAJcmV0dXJuIDA7Cj4gwqB9 Cj4gwqAKPiAtc3RhdGljIGludCBpOTE1X3Jlc2V0X2NvbXBsZXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gK3N0YXRpYyBpbnQgaTkxNV9yZXNldF9jb21wbGV0ZShzdHJ1Y3QgcGNpX2RldiAq cGRldikKPiDCoHsKPiDCoAl1OCBnZHJzdDsKPiAtCXBjaV9yZWFkX2NvbmZpZ19ieXRlKGRldi0+ cGRldiwgSTkxNV9HRFJTVCwgJmdkcnN0KTsKPiArCXBjaV9yZWFkX2NvbmZpZ19ieXRlKHBkZXYs IEk5MTVfR0RSU1QsICZnZHJzdCk7Cj4gwqAJcmV0dXJuIChnZHJzdCAmIEdSRE9NX1JFU0VUX1NU QVRVUykgPT0gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGk5MTVfZG9fcmVzZXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgZW5naW5lX21hc2spCj4gK3N0YXRpYyBpbnQgaTkx NV9kb19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkIGVu Z2luZV9tYXNrKQo+IMKgewo+ICsJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZGV2 LT5wZGV2Owo+ICsKPiDCoAkvKiBhc3NlcnQgcmVzZXQgZm9yIGF0IGxlYXN0IDIwIHVzZWMgKi8K PiAtCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYtPnBkZXYsIEk5MTVfR0RSU1QsIEdSRE9NX1JF U0VUX0VOQUJMRSk7Cj4gKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUocGRldiwgSTkxNV9HRFJTVCwg R1JET01fUkVTRVRfRU5BQkxFKTsKPiDCoAl1ZGVsYXkoMjApOwo+IC0JcGNpX3dyaXRlX2NvbmZp Z19ieXRlKGRldi0+cGRldiwgSTkxNV9HRFJTVCwgMCk7Cj4gKwlwY2lfd3JpdGVfY29uZmlnX2J5 dGUocGRldiwgSTkxNV9HRFJTVCwgMCk7Cj4gwqAKPiAtCXJldHVybiB3YWl0X2ZvcihpOTE1X3Jl c2V0X2NvbXBsZXRlKGRldiksIDUwMCk7Cj4gKwlyZXR1cm4gd2FpdF9mb3IoaTkxNV9yZXNldF9j b21wbGV0ZShwZGV2KSwgNTAwKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGc0eF9yZXNldF9j b21wbGV0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtzdGF0aWMgaW50IGc0eF9yZXNldF9j b21wbGV0ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKPiDCoHsKPiDCoAl1OCBnZHJzdDsKPiAtCXBj aV9yZWFkX2NvbmZpZ19ieXRlKGRldi0+cGRldiwgSTkxNV9HRFJTVCwgJmdkcnN0KTsKPiArCXBj aV9yZWFkX2NvbmZpZ19ieXRlKHBkZXYsIEk5MTVfR0RSU1QsICZnZHJzdCk7Cj4gwqAJcmV0dXJu IChnZHJzdCAmIEdSRE9NX1JFU0VUX0VOQUJMRSkgPT0gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMg aW50IGczM19kb19yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBlbmdpbmVf bWFzaykKPiArc3RhdGljIGludCBnMzNfZG9fcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCB1bnNpZ25lZCBlbmdpbmVfbWFzaykKPiDCoHsKPiAtCXBjaV93cml0ZV9jb25m aWdfYnl0ZShkZXYtPnBkZXYsIEk5MTVfR0RSU1QsIEdSRE9NX1JFU0VUX0VOQUJMRSk7Cj4gLQly ZXR1cm4gd2FpdF9mb3IoZzR4X3Jlc2V0X2NvbXBsZXRlKGRldiksIDUwMCk7Cj4gKwlzdHJ1Y3Qg cGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kZXYtPnBkZXY7Cj4gKwlwY2lfd3JpdGVfY29uZmln X2J5dGUocGRldiwgSTkxNV9HRFJTVCwgR1JET01fUkVTRVRfRU5BQkxFKTsKPiArCXJldHVybiB3 YWl0X2ZvcihnNHhfcmVzZXRfY29tcGxldGUocGRldiksIDUwMCk7Cj4gwqB9Cj4gwqAKPiAtc3Rh dGljIGludCBnNHhfZG9fcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgZW5n aW5lX21hc2spCj4gK3N0YXRpYyBpbnQgZzR4X2RvX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgZW5naW5lX21hc2spCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IHBj aV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZGV2LT5wZGV2Owo+IMKgCWludCByZXQ7Cj4gwqAKPiAt CXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYtPnBkZXYsIEk5MTVfR0RSU1QsCj4gKwlwY2lfd3Jp dGVfY29uZmlnX2J5dGUocGRldiwgSTkxNV9HRFJTVCwKPiDCoAkJCcKgwqDCoMKgwqDCoEdSRE9N X1JFTkRFUiB8IEdSRE9NX1JFU0VUX0VOQUJMRSk7Cj4gLQlyZXQgPcKgwqB3YWl0X2ZvcihnNHhf cmVzZXRfY29tcGxldGUoZGV2KSwgNTAwKTsKPiArCXJldCA9wqDCoHdhaXRfZm9yKGc0eF9yZXNl dF9jb21wbGV0ZShwZGV2KSwgNTAwKTsKPiDCoAlpZiAocmV0KQo+IMKgCQlyZXR1cm4gcmV0Owo+ IMKgCj4gQEAgLTE1NTEsOSArMTU0Nyw5IEBAIHN0YXRpYyBpbnQgZzR4X2RvX3Jlc2V0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGVuZ2luZV9tYXNrKQo+IMKgCUk5MTVfV1JJVEUo VkRFQ0NMS19HQVRFX0QsIEk5MTVfUkVBRChWREVDQ0xLX0dBVEVfRCkgfCBWQ1BfVU5JVF9DTE9D S19HQVRFX0RJU0FCTEUpOwo+IMKgCVBPU1RJTkdfUkVBRChWREVDQ0xLX0dBVEVfRCk7Cj4gwqAK PiAtCXBjaV93cml0ZV9jb25maWdfYnl0ZShkZXYtPnBkZXYsIEk5MTVfR0RSU1QsCj4gKwlwY2lf d3JpdGVfY29uZmlnX2J5dGUocGRldiwgSTkxNV9HRFJTVCwKPiDCoAkJCcKgwqDCoMKgwqDCoEdS RE9NX01FRElBIHwgR1JET01fUkVTRVRfRU5BQkxFKTsKPiAtCXJldCA9wqDCoHdhaXRfZm9yKGc0 eF9yZXNldF9jb21wbGV0ZShkZXYpLCA1MDApOwo+ICsJcmV0ID3CoMKgd2FpdF9mb3IoZzR4X3Jl c2V0X2NvbXBsZXRlKHBkZXYpLCA1MDApOwo+IMKgCWlmIChyZXQpCj4gwqAJCXJldHVybiByZXQ7 Cj4gwqAKPiBAQCAtMTU2MSwxNCArMTU1NywxNCBAQCBzdGF0aWMgaW50IGc0eF9kb19yZXNldChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBlbmdpbmVfbWFzaykKPiDCoAlJOTE1X1dS SVRFKFZERUNDTEtfR0FURV9ELCBJOTE1X1JFQUQoVkRFQ0NMS19HQVRFX0QpICYgflZDUF9VTklU X0NMT0NLX0dBVEVfRElTQUJMRSk7Cj4gwqAJUE9TVElOR19SRUFEKFZERUNDTEtfR0FURV9EKTsK PiDCoAo+IC0JcGNpX3dyaXRlX2NvbmZpZ19ieXRlKGRldi0+cGRldiwgSTkxNV9HRFJTVCwgMCk7 Cj4gKwlwY2lfd3JpdGVfY29uZmlnX2J5dGUocGRldiwgSTkxNV9HRFJTVCwgMCk7Cj4gwqAKPiDC oAlyZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGlyb25sYWtlX2RvX3Jlc2V0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGVuZ2luZV9tYXNrKQo+ICtzdGF0aWMgaW50 IGlyb25sYWtlX2RvX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAr CQkJwqDCoMKgwqDCoHVuc2lnbmVkIGVuZ2luZV9tYXNrKQo+IMKgewo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAlpbnQgcmV0Owo+ IMKgCj4gwqAJSTkxNV9XUklURShJTEtfR0RTUiwKPiBAQCAtMTYxMiw3ICsxNjA4LDcgQEAgc3Rh dGljIGludCBnZW42X2h3X2RvbWFpbl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gwqAKPiDCoC8qKgo+IMKgICogZ2VuNl9yZXNldF9lbmdpbmVzIC0gcmVzZXQgaW5k aXZpZHVhbCBlbmdpbmVzCj4gLSAqIEBkZXY6IERSTSBkZXZpY2UKPiArICogQGRldl9wcml2OiBp OTE1IGRldmljZQo+IMKgICogQGVuZ2luZV9tYXNrOiBtYXNrIG9mIGludGVsX3JpbmdfZmxhZygp IGVuZ2luZXMgb3IgQUxMX0VOR0lORVMgZm9yIGZ1bGwgcmVzZXQKPiDCoCAqCj4gwqAgKiBUaGlz IGZ1bmN0aW9uIHdpbGwgcmVzZXQgdGhlIGluZGl2aWR1YWwgZW5naW5lcyB0aGF0IGFyZSBzZXQg aW4gZW5naW5lX21hc2suCj4gQEAgLTE2MjMsOSArMTYxOSw5IEBAIHN0YXRpYyBpbnQgZ2VuNl9o d19kb21haW5fcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IMKgICoK PiDCoCAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBub256ZXJvIG9uIGVycm9yLgo+IMKgICovCj4g LXN0YXRpYyBpbnQgZ2VuNl9yZXNldF9lbmdpbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVu c2lnbmVkIGVuZ2luZV9tYXNrKQo+ICtzdGF0aWMgaW50IGdlbjZfcmVzZXRfZW5naW5lcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCcKgwqDCoMKgwqDCoHVuc2lnbmVk IGVuZ2luZV9tYXNrKQo+IMKgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiDCoAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 Cj4gwqAJY29uc3QgdTMyIGh3X2VuZ2luZV9tYXNrW0k5MTVfTlVNX0VOR0lORVNdID0gewo+IMKg CQlbUkNTXSA9IEdFTjZfR1JET01fUkVOREVSLAo+IEBAIC0xNjQ3LDcgKzE2NDMsNyBAQCBzdGF0 aWMgaW50IGdlbjZfcmVzZXRfZW5naW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25l ZCBlbmdpbmVfbWFzaykKPiDCoAo+IMKgCXJldCA9IGdlbjZfaHdfZG9tYWluX3Jlc2V0KGRldl9w cml2LCBod19tYXNrKTsKPiDCoAo+IC0JaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXNldChkZXYs IHRydWUpOwo+ICsJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXNldChkZXZfcHJpdiwgdHJ1ZSk7 Cj4gwqAKPiDCoAlyZXR1cm4gcmV0Owo+IMKgfQo+IEBAIC0xNjg4LDE2ICsxNjg0LDE2IEBAIHN0 YXRpYyB2b2lkIGdlbjhfdW5yZXF1ZXN0X2VuZ2luZV9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4gwqAJCcKgwqDCoMKgwqDCoF9NQVNLRURfQklUX0RJU0FCTEUoUkVTRVRf Q1RMX1JFUVVFU1RfUkVTRVQpKTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGdlbjhfcmVzZXRf ZW5naW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBlbmdpbmVfbWFzaykKPiAr c3RhdGljIGludCBnZW44X3Jlc2V0X2VuZ2luZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICsJCQnCoMKgwqDCoMKgwqB1bnNpZ25lZCBlbmdpbmVfbWFzaykKPiDCoHsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g wqAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IMKgCj4gwqAJZm9yX2VhY2hfZW5n aW5lX21hc2tlZChlbmdpbmUsIGRldl9wcml2LCBlbmdpbmVfbWFzaykKPiDCoAkJaWYgKGdlbjhf cmVxdWVzdF9lbmdpbmVfcmVzZXQoZW5naW5lKSkKPiDCoAkJCWdvdG8gbm90X3JlYWR5Owo+IMKg Cj4gLQlyZXR1cm4gZ2VuNl9yZXNldF9lbmdpbmVzKGRldiwgZW5naW5lX21hc2spOwo+ICsJcmV0 dXJuIGdlbjZfcmVzZXRfZW5naW5lcyhkZXZfcHJpdiwgZW5naW5lX21hc2spOwo+IMKgCj4gwqBu b3RfcmVhZHk6Cj4gwqAJZm9yX2VhY2hfZW5naW5lX21hc2tlZChlbmdpbmUsIGRldl9wcml2LCBl bmdpbmVfbWFzaykKPiBAQCAtMTcwNiwzNSArMTcwMiwzNSBAQCBub3RfcmVhZHk6Cj4gwqAJcmV0 dXJuIC1FSU87Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCAoKmludGVsX2dldF9ncHVfcmVzZXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikpKHN0cnVjdCBkcm1fZGV2aWNlICosCj4gLQkJCQkJCQnC oMKgdW5zaWduZWQgZW5naW5lX21hc2spCj4gK3R5cGVkZWYgaW50ICgqcmVzZXRfZnVuYykoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKiwgdW5zaWduZWQgZW5naW5lX21hc2spOwo+ICsKPiArc3Rh dGljIHJlc2V0X2Z1bmMgaW50ZWxfZ2V0X2dwdV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gwqB7Cj4gwqAJaWYgKCFpOTE1LnJlc2V0KQo+IMKgCQlyZXR1cm4gTlVM TDsKPiDCoAo+IC0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpCj4gKwlpZiAoSU5URUxf SU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4KQo+IMKgCQlyZXR1cm4gZ2VuOF9yZXNldF9lbmdpbmVz Owo+IC0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNikKPiArCWVsc2UgaWYgKElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikKPiDCoAkJcmV0dXJuIGdlbjZfcmVzZXRfZW5n aW5lczsKPiAtCWVsc2UgaWYgKElTX0dFTjUoZGV2KSkKPiArCWVsc2UgaWYgKElTX0dFTjUoZGV2 X3ByaXYpKQo+IMKgCQlyZXR1cm4gaXJvbmxha2VfZG9fcmVzZXQ7Cj4gLQllbHNlIGlmIChJU19H NFgoZGV2KSkKPiArCWVsc2UgaWYgKElTX0c0WChkZXZfcHJpdikpCj4gwqAJCXJldHVybiBnNHhf ZG9fcmVzZXQ7Cj4gLQllbHNlIGlmIChJU19HMzMoZGV2KSkKPiArCWVsc2UgaWYgKElTX0czMyhk ZXZfcHJpdikpCj4gwqAJCXJldHVybiBnMzNfZG9fcmVzZXQ7Cj4gLQllbHNlIGlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSAzKQo+ICsJZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdl biA+PSAzKQo+IMKgCQlyZXR1cm4gaTkxNV9kb19yZXNldDsKPiDCoAllbHNlCj4gwqAJCXJldHVy biBOVUxMOwo+IMKgfQo+IMKgCj4gLWludCBpbnRlbF9ncHVfcmVzZXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdW5zaWduZWQgZW5naW5lX21hc2spCj4gK2ludCBpbnRlbF9ncHVfcmVzZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1bnNpZ25lZCBlbmdpbmVfbWFzaykKPiDC oHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK PiAtCWludCAoKnJlc2V0KShzdHJ1Y3QgZHJtX2RldmljZSAqLCB1bnNpZ25lZCk7Cj4gKwlyZXNl dF9mdW5jIHJlc2V0Owo+IMKgCWludCByZXQ7Cj4gwqAKPiAtCXJlc2V0ID0gaW50ZWxfZ2V0X2dw dV9yZXNldChkZXYpOwo+ICsJcmVzZXQgPSBpbnRlbF9nZXRfZ3B1X3Jlc2V0KGRldl9wcml2KTsK PiDCoAlpZiAocmVzZXQgPT0gTlVMTCkKPiDCoAkJcmV0dXJuIC1FTk9ERVY7Cj4gwqAKPiBAQCAt MTc0MiwxNSArMTczOCwxNSBAQCBpbnQgaW50ZWxfZ3B1X3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGVuZ2luZV9tYXNrKQo+IMKgCcKgKiByZXF1ZXN0IG1heSBiZSBkcm9w cGVkIGFuZCBuZXZlciBjb21wbGV0ZXMgKGNhdXNpbmcgLUVJTykuCj4gwqAJwqAqLwo+IMKgCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKPiAtCXJl dCA9IHJlc2V0KGRldiwgZW5naW5lX21hc2spOwo+ICsJcmV0ID0gcmVzZXQoZGV2X3ByaXYsIGVu Z2luZV9tYXNrKTsKPiDCoAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7Cj4gwqAKPiDCoAlyZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLWJvb2wgaW50 ZWxfaGFzX2dwdV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICtib29sIGludGVsX2hh c19ncHVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgewo+IC0J cmV0dXJuIGludGVsX2dldF9ncHVfcmVzZXQoZGV2KSAhPSBOVUxMOwo+ICsJcmV0dXJuIGludGVs X2dldF9ncHVfcmVzZXQoZGV2X3ByaXYpICE9IE5VTEw7Cj4gwqB9Cj4gwqAKPiDCoGludCBpbnRl bF9ndWNfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQotLSAKSm9vbmFz IExhaHRpbmVuCk9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCkludGVsIENvcnBvcmF0aW9u Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=