From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH 2/7] drm/vc4: Use drm_print_regset32() for our debug register dumping. Date: Fri, 22 Mar 2019 11:32:05 +0100 Message-ID: <812bbf5296596cf64f416e6eeb53db3e8ff9c2dc.camel@bootlin.com> References: <20190220210343.28157-1-eric@anholt.net> <20190220210343.28157-2-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) by gabe.freedesktop.org (Postfix) with ESMTPS id D434C6E31C for ; Fri, 22 Mar 2019 10:32:09 +0000 (UTC) In-Reply-To: <20190220210343.28157-2-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Eric Anholt , dri-devel@lists.freedesktop.org Cc: Maxime Ripard , linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org SGksCgpMZSBtZXJjcmVkaSAyMCBmw6l2cmllciAyMDE5IMOgIDEzOjAzIC0wODAwLCBFcmljIEFu aG9sdCBhIMOpY3JpdCA6Cj4gVGhpcyByZW1vdmVzIGEgYnVuY2ggb2YgZHVwbGljYXRlZCBib2ls ZXJwbGF0ZSBmb3IgdGhlIGRlYnVnZnMgdnMKPiBydW50aW1lIHByaW50ayBkZWJ1ZyBkdW1waW5n LgoKVGhpcyBpczoKClJldmlld2VkLWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxr b3dza2lAYm9vdGxpbi5jb20+CgpDaGVlcnMsCgpQYXVsCgo+IFNpZ25lZC1vZmYtYnk6IEVyaWMg QW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0 X2NydGMuYyB8ICA2OCArKysrKystLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rw aS5jICB8ICAyMyArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaCAgfCAgIDcg KysKPiAgZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHNpLmMgIHwgMTU1ICsrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2hkbWkuYyB8IDE1NiAr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9o dnMuYyAgfCAgODcgKysrKysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf dHhwLmMgIHwgIDI4ICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF92M2QuYyAgfCAx NzMgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS92 YzQvdmM0X3ZlYy5jICB8ICA2NyArKysrKystLS0tLS0tCj4gIDkgZmlsZXMgY2hhbmdlZCwgMzUw IGluc2VydGlvbnMoKyksIDQxNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfY3J0Yy5j Cj4gaW5kZXggNzMwMDA4ZDNkYTc2Li42ZDcwNzIwMjYwNTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf Y3J0Yy5jCj4gQEAgLTM1LDYgKzM1LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+ Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljX3VhcGkuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiAgI2luY2x1 ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPiAg I2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgo+IEBAIC02Nyw0MyArNjgsMjkgQEAg dG9fdmM0X2NydGNfc3RhdGUoc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAj ZGVmaW5lIENSVENfV1JJVEUob2Zmc2V0LCB2YWwpIHdyaXRlbCh2YWwsIHZjNF9jcnRjLT5yZWdz ICsgKG9mZnNldCkpCj4gICNkZWZpbmUgQ1JUQ19SRUFEKG9mZnNldCkgcmVhZGwodmM0X2NydGMt PnJlZ3MgKyAob2Zmc2V0KSkKPiAgCj4gLSNkZWZpbmUgQ1JUQ19SRUcocmVnKSB7IHJlZywgI3Jl ZyB9Cj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+IC0JdTMyIHJlZzsKPiAtCWNvbnN0IGNoYXIg Km5hbWU7Cj4gLX0gY3J0Y19yZWdzW10gPSB7Cj4gLQlDUlRDX1JFRyhQVl9DT05UUk9MKSwKPiAt CUNSVENfUkVHKFBWX1ZfQ09OVFJPTCksCj4gLQlDUlRDX1JFRyhQVl9WU1lOQ0RfRVZFTiksCj4g LQlDUlRDX1JFRyhQVl9IT1JaQSksCj4gLQlDUlRDX1JFRyhQVl9IT1JaQiksCj4gLQlDUlRDX1JF RyhQVl9WRVJUQSksCj4gLQlDUlRDX1JFRyhQVl9WRVJUQiksCj4gLQlDUlRDX1JFRyhQVl9WRVJU QV9FVkVOKSwKPiAtCUNSVENfUkVHKFBWX1ZFUlRCX0VWRU4pLAo+IC0JQ1JUQ19SRUcoUFZfSU5U RU4pLAo+IC0JQ1JUQ19SRUcoUFZfSU5UU1RBVCksCj4gLQlDUlRDX1JFRyhQVl9TVEFUKSwKPiAt CUNSVENfUkVHKFBWX0hBQ1RfQUNUKSwKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZWJ1Z2ZzX3Jl ZzMyIGNydGNfcmVnc1tdID0gewo+ICsJVkM0X1JFRzMyKFBWX0NPTlRST0wpLAo+ICsJVkM0X1JF RzMyKFBWX1ZfQ09OVFJPTCksCj4gKwlWQzRfUkVHMzIoUFZfVlNZTkNEX0VWRU4pLAo+ICsJVkM0 X1JFRzMyKFBWX0hPUlpBKSwKPiArCVZDNF9SRUczMihQVl9IT1JaQiksCj4gKwlWQzRfUkVHMzIo UFZfVkVSVEEpLAo+ICsJVkM0X1JFRzMyKFBWX1ZFUlRCKSwKPiArCVZDNF9SRUczMihQVl9WRVJU QV9FVkVOKSwKPiArCVZDNF9SRUczMihQVl9WRVJUQl9FVkVOKSwKPiArCVZDNF9SRUczMihQVl9J TlRFTiksCj4gKwlWQzRfUkVHMzIoUFZfSU5UU1RBVCksCj4gKwlWQzRfUkVHMzIoUFZfU1RBVCks Cj4gKwlWQzRfUkVHMzIoUFZfSEFDVF9BQ1QpLAo+ICB9Owo+ICAKPiAtc3RhdGljIHZvaWQgdmM0 X2NydGNfZHVtcF9yZWdzKHN0cnVjdCB2YzRfY3J0YyAqdmM0X2NydGMpCj4gLXsKPiAtCWludCBp Owo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNydGNfcmVncyk7IGkrKykgewo+ IC0JCURSTV9JTkZPKCIweCUwNHggKCVzKTogMHglMDh4XG4iLAo+IC0JCQkgY3J0Y19yZWdzW2ld LnJlZywgY3J0Y19yZWdzW2ldLm5hbWUsCj4gLQkJCSBDUlRDX1JFQUQoY3J0Y19yZWdzW2ldLnJl ZykpOwo+IC0JfQo+IC19Cj4gLQo+ICAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCj4gIGludCB2YzRf Y3J0Y19kZWJ1Z2ZzX3JlZ3Moc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIHsK PiAgCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gKHN0cnVjdCBkcm1faW5mb19ub2RlICop bS0+cHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5vci0+ZGV2 Owo+ICAJaW50IGNydGNfaW5kZXggPSAodWludHB0cl90KW5vZGUtPmluZm9fZW50LT5kYXRhOwo+ ICsJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1fc2VxX2ZpbGVfcHJpbnRlcihtKTsKPiAgCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCB2YzRfY3J0YyAqdmM0X2NydGM7Cj4gIAlp bnQgaTsKPiBAQCAtMTE4LDExICsxMDUsNyBAQCBpbnQgdmM0X2NydGNfZGVidWdmc19yZWdzKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCXJldHVybiAwOwo+ICAJdmM0X2Ny dGMgPSB0b192YzRfY3J0YyhjcnRjKTsKPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShjcnRjX3JlZ3MpOyBpKyspIHsKPiAtCQlzZXFfcHJpbnRmKG0sICIlcyAoMHglMDR4KTogMHgl MDh4XG4iLAo+IC0JCQkgICBjcnRjX3JlZ3NbaV0ubmFtZSwgY3J0Y19yZWdzW2ldLnJlZywKPiAt CQkJICAgQ1JUQ19SRUFEKGNydGNfcmVnc1tpXS5yZWcpKTsKPiAtCX0KPiArCWRybV9wcmludF9y ZWdzZXQzMigmcCwgJnZjNF9jcnRjLT5yZWdzZXQpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4g QEAgLTQzNCw4ICs0MTcsMTAgQEAgc3RhdGljIHZvaWQgdmM0X2NydGNfbW9kZV9zZXRfbm9mYihz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlib29sIGRlYnVnX2R1bXBfcmVncyA9IGZhbHNlOwo+ ICAKPiAgCWlmIChkZWJ1Z19kdW1wX3JlZ3MpIHsKPiAtCQlEUk1fSU5GTygiQ1JUQyAlZCByZWdz IGJlZm9yZTpcbiIsIGRybV9jcnRjX2luZGV4KGNydGMpKTsKPiAtCQl2YzRfY3J0Y19kdW1wX3Jl Z3ModmM0X2NydGMpOwo+ICsJCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2luZm9fcHJpbnRl cigmdmM0X2NydGMtPnBkZXYtPmRldik7Cj4gKwkJZGV2X2luZm8oJnZjNF9jcnRjLT5wZGV2LT5k ZXYsICJDUlRDICVkIHJlZ3MgYmVmb3JlOlxuIiwKPiArCQkJIGRybV9jcnRjX2luZGV4KGNydGMp KTsKPiArCQlkcm1fcHJpbnRfcmVnc2V0MzIoJnAsICZ2YzRfY3J0Yy0+cmVnc2V0KTsKPiAgCX0K PiAgCj4gIAlpZiAodmM0X2NydGMtPmNoYW5uZWwgPT0gMikgewo+IEBAIC00NzYsOCArNDYxLDEw IEBAIHN0YXRpYyB2b2lkIHZjNF9jcnRjX21vZGVfc2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICAJdmM0X2NydGNfbHV0X2xvYWQoY3J0Yyk7Cj4gIAo+ICAJaWYgKGRlYnVnX2R1bXBf cmVncykgewo+IC0JCURSTV9JTkZPKCJDUlRDICVkIHJlZ3MgYWZ0ZXI6XG4iLCBkcm1fY3J0Y19p bmRleChjcnRjKSk7Cj4gLQkJdmM0X2NydGNfZHVtcF9yZWdzKHZjNF9jcnRjKTsKPiArCQlzdHJ1 Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9pbmZvX3ByaW50ZXIoJnZjNF9jcnRjLT5wZGV2LT5kZXYp Owo+ICsJCWRldl9pbmZvKCZ2YzRfY3J0Yy0+cGRldi0+ZGV2LCAiQ1JUQyAlZCByZWdzIGFmdGVy OlxuIiwKPiArCQkJIGRybV9jcnRjX2luZGV4KGNydGMpKTsKPiArCQlkcm1fcHJpbnRfcmVnc2V0 MzIoJnAsICZ2YzRfY3J0Yy0+cmVnc2V0KTsKPiAgCX0KPiAgfQo+ICAKPiBAQCAtMTE2OSwxMSAr MTE1NiwxNiBAQCBzdGF0aWMgaW50IHZjNF9jcnRjX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4gIAlpZiAoIW1hdGNoKQo+ICAJCXJl dHVybiAtRU5PREVWOwo+ICAJdmM0X2NydGMtPmRhdGEgPSBtYXRjaC0+ZGF0YTsKPiArCXZjNF9j cnRjLT5wZGV2ID0gcGRldjsKPiAgCj4gIAl2YzRfY3J0Yy0+cmVncyA9IHZjNF9pb3JlbWFwX3Jl Z3MocGRldiwgMCk7Cj4gIAlpZiAoSVNfRVJSKHZjNF9jcnRjLT5yZWdzKSkKPiAgCQlyZXR1cm4g UFRSX0VSUih2YzRfY3J0Yy0+cmVncyk7Cj4gIAo+ICsJdmM0X2NydGMtPnJlZ3NldC5iYXNlID0g dmM0X2NydGMtPnJlZ3M7Cj4gKwl2YzRfY3J0Yy0+cmVnc2V0LnJlZ3MgPSBjcnRjX3JlZ3M7Cj4g Kwl2YzRfY3J0Yy0+cmVnc2V0Lm5yZWdzID0gQVJSQVlfU0laRShjcnRjX3JlZ3MpOwo+ICsKPiAg CS8qIEZvciBub3csIHdlIGNyZWF0ZSBqdXN0IHRoZSBwcmltYXJ5IGFuZCB0aGUgbGVnYWN5IGN1 cnNvcgo+ICAJICogcGxhbmVzLiAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gc3RhY2sgbW9yZSBwbGFu ZXMgb24gZWFzaWx5LAo+ICAJICogYnV0IHRvIGRvIHRoYXQgd2Ugd291bGQgbmVlZCB0byBjb21w dXRlIHRoZSBiYW5kd2lkdGgKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf ZHBpLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcGkuYwo+IGluZGV4IDE2OTUyMWU1NDdi YS4uOGJlMjI2NGY0OTZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rw aS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHBpLmMKPiBAQCAtMTAxLDYgKzEw MSw4IEBAIHN0cnVjdCB2YzRfZHBpIHsKPiAgCj4gIAlzdHJ1Y3QgY2xrICpwaXhlbF9jbG9jazsK PiAgCXN0cnVjdCBjbGsgKmNvcmVfY2xvY2s7Cj4gKwo+ICsJc3RydWN0IGRlYnVnZnNfcmVnc2V0 MzIgcmVnc2V0Owo+ICB9Owo+ICAKPiAgI2RlZmluZSBEUElfUkVBRChvZmZzZXQpIHJlYWRsKGRw aS0+cmVncyArIChvZmZzZXQpKQo+IEBAIC0xMTgsMTMgKzEyMCw5IEBAIHRvX3ZjNF9kcGlfZW5j b2RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIAlyZXR1cm4gY29udGFpbmVyX29m KGVuY29kZXIsIHN0cnVjdCB2YzRfZHBpX2VuY29kZXIsIGJhc2UuYmFzZSk7Cj4gIH0KPiAgCj4g LSNkZWZpbmUgRFBJX1JFRyhyZWcpIHsgcmVnLCAjcmVnIH0KPiAtc3RhdGljIGNvbnN0IHN0cnVj dCB7Cj4gLQl1MzIgcmVnOwo+IC0JY29uc3QgY2hhciAqbmFtZTsKPiAtfSBkcGlfcmVnc1tdID0g ewo+IC0JRFBJX1JFRyhEUElfQyksCj4gLQlEUElfUkVHKERQSV9JRCksCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgZGVidWdmc19yZWczMiBkcGlfcmVnc1tdID0gewo+ICsJVkM0X1JFRzMyKERQSV9D KSwKPiArCVZDNF9SRUczMihEUElfSUQpLAo+ICB9Owo+ICAKPiAgI2lmZGVmIENPTkZJR19ERUJV R19GUwo+IEBAIC0xMzQsMTYgKzEzMiwxMiBAQCBpbnQgdmM0X2RwaV9kZWJ1Z2ZzX3JlZ3Moc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gbm9kZS0+bWlub3ItPmRldjsKPiAgCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2 KGRldik7Cj4gIAlzdHJ1Y3QgdmM0X2RwaSAqZHBpID0gdmM0LT5kcGk7Cj4gLQlpbnQgaTsKPiAr CXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX3NlcV9maWxlX3ByaW50ZXIobSk7Cj4gIAo+ICAJ aWYgKCFkcGkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoZHBpX3JlZ3MpOyBpKyspIHsKPiAtCQlzZXFfcHJpbnRmKG0sICIlcyAoMHglMDR4KTogMHgl MDh4XG4iLAo+IC0JCQkgICBkcGlfcmVnc1tpXS5uYW1lLCBkcGlfcmVnc1tpXS5yZWcsCj4gLQkJ CSAgIERQSV9SRUFEKGRwaV9yZWdzW2ldLnJlZykpOwo+IC0JfQo+ICsJZHJtX3ByaW50X3JlZ3Nl dDMyKCZwLCAmZHBpLT5yZWdzZXQpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTMxNCw2 ICszMDgsOSBAQCBzdGF0aWMgaW50IHZjNF9kcGlfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPiAgCWRwaS0+cmVncyA9IHZjNF9pb3Jl bWFwX3JlZ3MocGRldiwgMCk7Cj4gIAlpZiAoSVNfRVJSKGRwaS0+cmVncykpCj4gIAkJcmV0dXJu IFBUUl9FUlIoZHBpLT5yZWdzKTsKPiArCWRwaS0+cmVnc2V0LmJhc2UgPSBkcGktPnJlZ3M7Cj4g KwlkcGktPnJlZ3NldC5yZWdzID0gZHBpX3JlZ3M7Cj4gKwlkcGktPnJlZ3NldC5ucmVncyA9IEFS UkFZX1NJWkUoZHBpX3JlZ3MpOwo+ICAKPiAgCWlmIChEUElfUkVBRChEUElfSUQpICE9IERQSV9J RF9WQUxVRSkgewo+ICAJCWRldl9lcnIoZGV2LCAiUG9ydCByZXR1cm5lZCAweCUwOHggZm9yIElE IGluc3RlYWQgb2YgMHglMDh4XG4iLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oCj4gaW5kZXggY2UxYWYw NmNjMTk3Li41MTFhZDg4NGQ5YzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92 YzRfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAo+IEBAIC0yODUs NiArMjg1LDcgQEAgc3RydWN0IHZjNF92M2Qgewo+ICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldjsKPiAgCXZvaWQgX19pb21lbSAqcmVnczsKPiAgCXN0cnVjdCBjbGsgKmNsazsKPiArCXN0 cnVjdCBkZWJ1Z2ZzX3JlZ3NldDMyIHJlZ3NldDsKPiAgfTsKPiAgCj4gIHN0cnVjdCB2YzRfaHZz IHsKPiBAQCAtMzAxLDYgKzMwMiw3IEBAIHN0cnVjdCB2YzRfaHZzIHsKPiAgCXNwaW5sb2NrX3Qg bW1fbG9jazsKPiAgCj4gIAlzdHJ1Y3QgZHJtX21tX25vZGUgbWl0Y2hlbGxfbmV0cmF2YWxpX2Zp bHRlcjsKPiArCXN0cnVjdCBkZWJ1Z2ZzX3JlZ3NldDMyIHJlZ3NldDsKPiAgfTsKPiAgCj4gIHN0 cnVjdCB2YzRfcGxhbmUgewo+IEBAIC00MTAsNiArNDEyLDcgQEAgc3RydWN0IHZjNF9jcnRjX2Rh dGEgewo+ICAKPiAgc3RydWN0IHZjNF9jcnRjIHsKPiAgCXN0cnVjdCBkcm1fY3J0YyBiYXNlOwo+ ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldjsKPiAgCWNvbnN0IHN0cnVjdCB2YzRfY3J0 Y19kYXRhICpkYXRhOwo+ICAJdm9pZCBfX2lvbWVtICpyZWdzOwo+ICAKPiBAQCAtNDI2LDYgKzQy OSw4IEBAIHN0cnVjdCB2YzRfY3J0YyB7Cj4gIAl1MzIgY29iX3NpemU7Cj4gIAo+ICAJc3RydWN0 IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Cj4gKwo+ICsJc3RydWN0IGRlYnVnZnNf cmVnc2V0MzIgcmVnc2V0Owo+ICB9Owo+ICAKPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdmM0X2Ny dGMgKgo+IEBAIC00MzksNiArNDQ0LDggQEAgdG9fdmM0X2NydGMoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICAjZGVmaW5lIEhWU19SRUFEKG9mZnNldCkgcmVhZGwodmM0LT5odnMtPnJlZ3MgKyBv ZmZzZXQpCj4gICNkZWZpbmUgSFZTX1dSSVRFKG9mZnNldCwgdmFsKSB3cml0ZWwodmFsLCB2YzQt Pmh2cy0+cmVncyArIG9mZnNldCkKPiAgCj4gKyNkZWZpbmUgVkM0X1JFRzMyKHJlZykgeyAubmFt ZSA9ICNyZWcsIC5vZmZzZXQgPSByZWcgfQo+ICsKPiAgc3RydWN0IHZjNF9leGVjX2luZm8gewo+ ICAJLyogU2VxdWVuY2UgbnVtYmVyIGZvciB0aGlzIGJpbi9yZW5kZXIgam9iLiAqLwo+ICAJdWlu dDY0X3Qgc2Vxbm87Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2RzaS5j IGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHNpLmMKPiBpbmRleCAxMTcwMmUxZDkwMTEuLjgw NmNmYWEyYTZhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kc2kuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2RzaS5jCj4gQEAgLTU0NSw2ICs1NDUsOCBA QCBzdHJ1Y3QgdmM0X2RzaSB7Cj4gIAo+ICAJc3RydWN0IGNvbXBsZXRpb24geGZlcl9jb21wbGV0 aW9uOwo+ICAJaW50IHhmZXJfcmVzdWx0Owo+ICsKPiArCXN0cnVjdCBkZWJ1Z2ZzX3JlZ3NldDMy IHJlZ3NldDsKPiAgfTsKPiAgCj4gICNkZWZpbmUgaG9zdF90b19kc2koaG9zdCkgY29udGFpbmVy X29mKGhvc3QsIHN0cnVjdCB2YzRfZHNpLCBkc2lfaG9zdCkKPiBAQCAtNjA1LDgyICs2MDcsNTYg QEAgdG9fdmM0X2RzaV9lbmNvZGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAgCXJl dHVybiBjb250YWluZXJfb2YoZW5jb2Rlciwgc3RydWN0IHZjNF9kc2lfZW5jb2RlciwgYmFzZS5i YXNlKTsKPiAgfQo+ICAKPiAtI2RlZmluZSBEU0lfUkVHKHJlZykgeyByZWcsICNyZWcgfQo+IC1z dGF0aWMgY29uc3Qgc3RydWN0IHsKPiAtCXUzMiByZWc7Cj4gLQljb25zdCBjaGFyICpuYW1lOwo+ IC19IGRzaTBfcmVnc1tdID0gewo+IC0JRFNJX1JFRyhEU0kwX0NUUkwpLAo+IC0JRFNJX1JFRyhE U0kwX1NUQVQpLAo+IC0JRFNJX1JFRyhEU0kwX0hTVFhfVE9fQ05UKSwKPiAtCURTSV9SRUcoRFNJ MF9MUFJYX1RPX0NOVCksCj4gLQlEU0lfUkVHKERTSTBfVEFfVE9fQ05UKSwKPiAtCURTSV9SRUco RFNJMF9QUl9UT19DTlQpLAo+IC0JRFNJX1JFRyhEU0kwX0RJU1AwX0NUUkwpLAo+IC0JRFNJX1JF RyhEU0kwX0RJU1AxX0NUUkwpLAo+IC0JRFNJX1JFRyhEU0kwX0lOVF9TVEFUKSwKPiAtCURTSV9S RUcoRFNJMF9JTlRfRU4pLAo+IC0JRFNJX1JFRyhEU0kwX1BIWUMpLAo+IC0JRFNJX1JFRyhEU0kw X0hTX0NMVDApLAo+IC0JRFNJX1JFRyhEU0kwX0hTX0NMVDEpLAo+IC0JRFNJX1JFRyhEU0kwX0hT X0NMVDIpLAo+IC0JRFNJX1JFRyhEU0kwX0hTX0RMVDMpLAo+IC0JRFNJX1JFRyhEU0kwX0hTX0RM VDQpLAo+IC0JRFNJX1JFRyhEU0kwX0hTX0RMVDUpLAo+IC0JRFNJX1JFRyhEU0kwX0hTX0RMVDYp LAo+IC0JRFNJX1JFRyhEU0kwX0hTX0RMVDcpLAo+IC0JRFNJX1JFRyhEU0kwX1BIWV9BRkVDMCks Cj4gLQlEU0lfUkVHKERTSTBfUEhZX0FGRUMxKSwKPiAtCURTSV9SRUcoRFNJMF9JRCksCj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZGVidWdmc19yZWczMiBkc2kwX3JlZ3NbXSA9IHsKPiArCVZDNF9S RUczMihEU0kwX0NUUkwpLAo+ICsJVkM0X1JFRzMyKERTSTBfU1RBVCksCj4gKwlWQzRfUkVHMzIo RFNJMF9IU1RYX1RPX0NOVCksCj4gKwlWQzRfUkVHMzIoRFNJMF9MUFJYX1RPX0NOVCksCj4gKwlW QzRfUkVHMzIoRFNJMF9UQV9UT19DTlQpLAo+ICsJVkM0X1JFRzMyKERTSTBfUFJfVE9fQ05UKSwK PiArCVZDNF9SRUczMihEU0kwX0RJU1AwX0NUUkwpLAo+ICsJVkM0X1JFRzMyKERTSTBfRElTUDFf Q1RSTCksCj4gKwlWQzRfUkVHMzIoRFNJMF9JTlRfU1RBVCksCj4gKwlWQzRfUkVHMzIoRFNJMF9J TlRfRU4pLAo+ICsJVkM0X1JFRzMyKERTSTBfUEhZQyksCj4gKwlWQzRfUkVHMzIoRFNJMF9IU19D TFQwKSwKPiArCVZDNF9SRUczMihEU0kwX0hTX0NMVDEpLAo+ICsJVkM0X1JFRzMyKERTSTBfSFNf Q0xUMiksCj4gKwlWQzRfUkVHMzIoRFNJMF9IU19ETFQzKSwKPiArCVZDNF9SRUczMihEU0kwX0hT X0RMVDQpLAo+ICsJVkM0X1JFRzMyKERTSTBfSFNfRExUNSksCj4gKwlWQzRfUkVHMzIoRFNJMF9I U19ETFQ2KSwKPiArCVZDNF9SRUczMihEU0kwX0hTX0RMVDcpLAo+ICsJVkM0X1JFRzMyKERTSTBf UEhZX0FGRUMwKSwKPiArCVZDNF9SRUczMihEU0kwX1BIWV9BRkVDMSksCj4gKwlWQzRfUkVHMzIo RFNJMF9JRCksCj4gIH07Cj4gIAo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHsKPiAtCXUzMiByZWc7 Cj4gLQljb25zdCBjaGFyICpuYW1lOwo+IC19IGRzaTFfcmVnc1tdID0gewo+IC0JRFNJX1JFRyhE U0kxX0NUUkwpLAo+IC0JRFNJX1JFRyhEU0kxX1NUQVQpLAo+IC0JRFNJX1JFRyhEU0kxX0hTVFhf VE9fQ05UKSwKPiAtCURTSV9SRUcoRFNJMV9MUFJYX1RPX0NOVCksCj4gLQlEU0lfUkVHKERTSTFf VEFfVE9fQ05UKSwKPiAtCURTSV9SRUcoRFNJMV9QUl9UT19DTlQpLAo+IC0JRFNJX1JFRyhEU0kx X0RJU1AwX0NUUkwpLAo+IC0JRFNJX1JFRyhEU0kxX0RJU1AxX0NUUkwpLAo+IC0JRFNJX1JFRyhE U0kxX0lOVF9TVEFUKSwKPiAtCURTSV9SRUcoRFNJMV9JTlRfRU4pLAo+IC0JRFNJX1JFRyhEU0kx X1BIWUMpLAo+IC0JRFNJX1JFRyhEU0kxX0hTX0NMVDApLAo+IC0JRFNJX1JFRyhEU0kxX0hTX0NM VDEpLAo+IC0JRFNJX1JFRyhEU0kxX0hTX0NMVDIpLAo+IC0JRFNJX1JFRyhEU0kxX0hTX0RMVDMp LAo+IC0JRFNJX1JFRyhEU0kxX0hTX0RMVDQpLAo+IC0JRFNJX1JFRyhEU0kxX0hTX0RMVDUpLAo+ IC0JRFNJX1JFRyhEU0kxX0hTX0RMVDYpLAo+IC0JRFNJX1JFRyhEU0kxX0hTX0RMVDcpLAo+IC0J RFNJX1JFRyhEU0kxX1BIWV9BRkVDMCksCj4gLQlEU0lfUkVHKERTSTFfUEhZX0FGRUMxKSwKPiAt CURTSV9SRUcoRFNJMV9JRCksCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGVidWdmc19yZWczMiBk c2kxX3JlZ3NbXSA9IHsKPiArCVZDNF9SRUczMihEU0kxX0NUUkwpLAo+ICsJVkM0X1JFRzMyKERT STFfU1RBVCksCj4gKwlWQzRfUkVHMzIoRFNJMV9IU1RYX1RPX0NOVCksCj4gKwlWQzRfUkVHMzIo RFNJMV9MUFJYX1RPX0NOVCksCj4gKwlWQzRfUkVHMzIoRFNJMV9UQV9UT19DTlQpLAo+ICsJVkM0 X1JFRzMyKERTSTFfUFJfVE9fQ05UKSwKPiArCVZDNF9SRUczMihEU0kxX0RJU1AwX0NUUkwpLAo+ ICsJVkM0X1JFRzMyKERTSTFfRElTUDFfQ1RSTCksCj4gKwlWQzRfUkVHMzIoRFNJMV9JTlRfU1RB VCksCj4gKwlWQzRfUkVHMzIoRFNJMV9JTlRfRU4pLAo+ICsJVkM0X1JFRzMyKERTSTFfUEhZQyks Cj4gKwlWQzRfUkVHMzIoRFNJMV9IU19DTFQwKSwKPiArCVZDNF9SRUczMihEU0kxX0hTX0NMVDEp LAo+ICsJVkM0X1JFRzMyKERTSTFfSFNfQ0xUMiksCj4gKwlWQzRfUkVHMzIoRFNJMV9IU19ETFQz KSwKPiArCVZDNF9SRUczMihEU0kxX0hTX0RMVDQpLAo+ICsJVkM0X1JFRzMyKERTSTFfSFNfRExU NSksCj4gKwlWQzRfUkVHMzIoRFNJMV9IU19ETFQ2KSwKPiArCVZDNF9SRUczMihEU0kxX0hTX0RM VDcpLAo+ICsJVkM0X1JFRzMyKERTSTFfUEhZX0FGRUMwKSwKPiArCVZDNF9SRUczMihEU0kxX1BI WV9BRkVDMSksCj4gKwlWQzRfUkVHMzIoRFNJMV9JRCksCj4gIH07Cj4gIAo+IC1zdGF0aWMgdm9p ZCB2YzRfZHNpX2R1bXBfcmVncyhzdHJ1Y3QgdmM0X2RzaSAqZHNpKQo+IC17Cj4gLQlpbnQgaTsK PiAtCj4gLQlpZiAoZHNpLT5wb3J0ID09IDApIHsKPiAtCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShkc2kwX3JlZ3MpOyBpKyspIHsKPiAtCQkJRFJNX0lORk8oIjB4JTA0eCAoJXMpOiAweCUw OHhcbiIsCj4gLQkJCQkgZHNpMF9yZWdzW2ldLnJlZywgZHNpMF9yZWdzW2ldLm5hbWUsCj4gLQkJ CQkgRFNJX1JFQUQoZHNpMF9yZWdzW2ldLnJlZykpOwo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4gLQkJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZHNpMV9yZWdzKTsgaSsrKSB7Cj4gLQkJCURSTV9J TkZPKCIweCUwNHggKCVzKTogMHglMDh4XG4iLAo+IC0JCQkJIGRzaTFfcmVnc1tpXS5yZWcsIGRz aTFfcmVnc1tpXS5uYW1lLAo+IC0JCQkJIERTSV9SRUFEKGRzaTFfcmVnc1tpXS5yZWcpKTsKPiAt CQl9Cj4gLQl9Cj4gLX0KPiAtCj4gICNpZmRlZiBDT05GSUdfREVCVUdfRlMKPiAgaW50IHZjNF9k c2lfZGVidWdmc19yZWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICB7Cj4g QEAgLTY4OSwyNCArNjY1LDEyIEBAIGludCB2YzRfZHNpX2RlYnVnZnNfcmVncyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRf ZGV2KGRybSk7Cj4gIAlpbnQgZHNpX2luZGV4ID0gKHVpbnRwdHJfdClub2RlLT5pbmZvX2VudC0+ ZGF0YTsKPiAgCXN0cnVjdCB2YzRfZHNpICpkc2kgPSAoZHNpX2luZGV4ID09IDEgPyB2YzQtPmRz aTEgOiBOVUxMKTsKPiAtCWludCBpOwo+ICsJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1fc2Vx X2ZpbGVfcHJpbnRlcihtKTsKPiAgCj4gIAlpZiAoIWRzaSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4g LQlpZiAoZHNpLT5wb3J0ID09IDApIHsKPiAtCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShk c2kwX3JlZ3MpOyBpKyspIHsKPiAtCQkJc2VxX3ByaW50ZihtLCAiMHglMDR4ICglcyk6IDB4JTA4 eFxuIiwKPiAtCQkJCSAgIGRzaTBfcmVnc1tpXS5yZWcsIGRzaTBfcmVnc1tpXS5uYW1lLAo+IC0J CQkJICAgRFNJX1JFQUQoZHNpMF9yZWdzW2ldLnJlZykpOwo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4g LQkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZHNpMV9yZWdzKTsgaSsrKSB7Cj4gLQkJCXNl cV9wcmludGYobSwgIjB4JTA0eCAoJXMpOiAweCUwOHhcbiIsCj4gLQkJCQkgICBkc2kxX3JlZ3Nb aV0ucmVnLCBkc2kxX3JlZ3NbaV0ubmFtZSwKPiAtCQkJCSAgIERTSV9SRUFEKGRzaTFfcmVnc1tp XS5yZWcpKTsKPiAtCQl9Cj4gLQl9Cj4gKwlkcm1fcHJpbnRfcmVnc2V0MzIoJnAsICZkc2ktPnJl Z3NldCk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtOTAwLDggKzg2NCw5IEBAIHN0YXRp YyB2b2lkIHZjNF9kc2lfZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQo+ICAJfQo+ICAKPiAgCWlmIChkZWJ1Z19kdW1wX3JlZ3MpIHsKPiAtCQlEUk1fSU5GTygiRFNJ IHJlZ3MgYmVmb3JlOlxuIik7Cj4gLQkJdmM0X2RzaV9kdW1wX3JlZ3MoZHNpKTsKPiArCQlzdHJ1 Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9pbmZvX3ByaW50ZXIoJmRzaS0+cGRldi0+ZGV2KTsKPiAr CQlkZXZfaW5mbygmZHNpLT5wZGV2LT5kZXYsICJEU0kgcmVncyBiZWZvcmU6XG4iKTsKPiArCQlk cm1fcHJpbnRfcmVnc2V0MzIoJnAsICZkc2ktPnJlZ3NldCk7Cj4gIAl9Cj4gIAo+ICAJLyogUm91 bmQgdXAgdGhlIGNsa19zZXRfcmF0ZSgpIHJlcXVlc3Qgc2xpZ2h0bHksIHNpbmNlCj4gQEAgLTEx MzUsOCArMTEwMCw5IEBAIHN0YXRpYyB2b2lkIHZjNF9kc2lfZW5jb2Rlcl9lbmFibGUoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICAJZHJtX2JyaWRnZV9lbmFibGUoZHNpLT5icmlkZ2Up Owo+ICAKPiAgCWlmIChkZWJ1Z19kdW1wX3JlZ3MpIHsKPiAtCQlEUk1fSU5GTygiRFNJIHJlZ3Mg YWZ0ZXI6XG4iKTsKPiAtCQl2YzRfZHNpX2R1bXBfcmVncyhkc2kpOwo+ICsJCXN0cnVjdCBkcm1f cHJpbnRlciBwID0gZHJtX2luZm9fcHJpbnRlcigmZHNpLT5wZGV2LT5kZXYpOwo+ICsJCWRldl9p bmZvKCZkc2ktPnBkZXYtPmRldiwgIkRTSSByZWdzIGFmdGVyOlxuIik7Cj4gKwkJZHJtX3ByaW50 X3JlZ3NldDMyKCZwLCAmZHNpLT5yZWdzZXQpOwo+ICAJfQo+ICB9Cj4gIAo+IEBAIC0xNTI3LDYg KzE0OTMsMTUgQEAgc3RhdGljIGludCB2YzRfZHNpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4gIAlpZiAoSVNfRVJSKGRzaS0+cmVn cykpCj4gIAkJcmV0dXJuIFBUUl9FUlIoZHNpLT5yZWdzKTsKPiAgCj4gKwlkc2ktPnJlZ3NldC5i YXNlID0gZHNpLT5yZWdzOwo+ICsJaWYgKGRzaS0+cG9ydCA9PSAwKSB7Cj4gKwkJZHNpLT5yZWdz ZXQucmVncyA9IGRzaTBfcmVnczsKPiArCQlkc2ktPnJlZ3NldC5ucmVncyA9IEFSUkFZX1NJWkUo ZHNpMF9yZWdzKTsKPiArCX0gZWxzZSB7Cj4gKwkJZHNpLT5yZWdzZXQucmVncyA9IGRzaTFfcmVn czsKPiArCQlkc2ktPnJlZ3NldC5ucmVncyA9IEFSUkFZX1NJWkUoZHNpMV9yZWdzKTsKPiArCX0K PiArCj4gIAlpZiAoRFNJX1BPUlRfUkVBRChJRCkgIT0gRFNJX0lEX1ZBTFVFKSB7Cj4gIAkJZGV2 X2VycihkZXYsICJQb3J0IHJldHVybmVkIDB4JTA4eCBmb3IgSUQgaW5zdGVhZCBvZiAweCUwOHhc biIsCj4gIAkJCURTSV9QT1JUX1JFQUQoSUQpLCBEU0lfSURfVkFMVUUpOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3Zj NF9oZG1pLmMKPiBpbmRleCA4OGZkNWRmN2U3ZGMuLjM4YzkxNzJjZmU1MiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v dmM0L3ZjNF9oZG1pLmMKPiBAQCAtOTcsNiArOTcsOSBAQCBzdHJ1Y3QgdmM0X2hkbWkgewo+ICAK PiAgCXN0cnVjdCBjbGsgKnBpeGVsX2Nsb2NrOwo+ICAJc3RydWN0IGNsayAqaHNtX2Nsb2NrOwo+ ICsKPiArCXN0cnVjdCBkZWJ1Z2ZzX3JlZ3NldDMyIGhkbWlfcmVnc2V0Owo+ICsJc3RydWN0IGRl YnVnZnNfcmVnc2V0MzIgaGRfcmVnc2V0Owo+ICB9Owo+ICAKPiAgI2RlZmluZSBIRE1JX1JFQUQo b2Zmc2V0KSByZWFkbCh2YzQtPmhkbWktPmhkbWljb3JlX3JlZ3MgKyBvZmZzZXQpCj4gQEAgLTEz NCw2MSArMTM3LDU0IEBAIHRvX3ZjNF9oZG1pX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ICAJcmV0dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCB2 YzRfaGRtaV9jb25uZWN0b3IsIGJhc2UpOwo+ICB9Cj4gIAo+IC0jZGVmaW5lIEhETUlfUkVHKHJl ZykgeyByZWcsICNyZWcgfQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHsKPiAtCXUzMiByZWc7Cj4g LQljb25zdCBjaGFyICpuYW1lOwo+IC19IGhkbWlfcmVnc1tdID0gewo+IC0JSERNSV9SRUcoVkM0 X0hETUlfQ09SRV9SRVYpLAo+IC0JSERNSV9SRUcoVkM0X0hETUlfU1dfUkVTRVRfQ09OVFJPTCks Cj4gLQlIRE1JX1JFRyhWQzRfSERNSV9IT1RQTFVHX0lOVCksCj4gLQlIRE1JX1JFRyhWQzRfSERN SV9IT1RQTFVHKSwKPiAtCUhETUlfUkVHKFZDNF9IRE1JX01BSV9DSEFOTkVMX01BUCksCj4gLQlI RE1JX1JFRyhWQzRfSERNSV9NQUlfQ09ORklHKSwKPiAtCUhETUlfUkVHKFZDNF9IRE1JX01BSV9G T1JNQVQpLAo+IC0JSERNSV9SRUcoVkM0X0hETUlfQVVESU9fUEFDS0VUX0NPTkZJRyksCj4gLQlI RE1JX1JFRyhWQzRfSERNSV9SQU1fUEFDS0VUX0NPTkZJRyksCj4gLQlIRE1JX1JFRyhWQzRfSERN SV9IT1JaQSksCj4gLQlIRE1JX1JFRyhWQzRfSERNSV9IT1JaQiksCj4gLQlIRE1JX1JFRyhWQzRf SERNSV9GSUZPX0NUTCksCj4gLQlIRE1JX1JFRyhWQzRfSERNSV9TQ0hFRFVMRVJfQ09OVFJPTCks Cj4gLQlIRE1JX1JFRyhWQzRfSERNSV9WRVJUQTApLAo+IC0JSERNSV9SRUcoVkM0X0hETUlfVkVS VEExKSwKPiAtCUhETUlfUkVHKFZDNF9IRE1JX1ZFUlRCMCksCj4gLQlIRE1JX1JFRyhWQzRfSERN SV9WRVJUQjEpLAo+IC0JSERNSV9SRUcoVkM0X0hETUlfVFhfUEhZX1JFU0VUX0NUTCksCj4gLQlI RE1JX1JFRyhWQzRfSERNSV9UWF9QSFlfQ1RMMCksCj4gLQo+IC0JSERNSV9SRUcoVkM0X0hETUlf Q0VDX0NOVFJMXzEpLAo+IC0JSERNSV9SRUcoVkM0X0hETUlfQ0VDX0NOVFJMXzIpLAo+IC0JSERN SV9SRUcoVkM0X0hETUlfQ0VDX0NOVFJMXzMpLAo+IC0JSERNSV9SRUcoVkM0X0hETUlfQ0VDX0NO VFJMXzQpLAo+IC0JSERNSV9SRUcoVkM0X0hETUlfQ0VDX0NOVFJMXzUpLAo+IC0JSERNSV9SRUco VkM0X0hETUlfQ1BVX1NUQVRVUyksCj4gLQlIRE1JX1JFRyhWQzRfSERNSV9DUFVfTUFTS19TVEFU VVMpLAo+IC0KPiAtCUhETUlfUkVHKFZDNF9IRE1JX0NFQ19SWF9EQVRBXzEpLAo+IC0JSERNSV9S RUcoVkM0X0hETUlfQ0VDX1JYX0RBVEFfMiksCj4gLQlIRE1JX1JFRyhWQzRfSERNSV9DRUNfUlhf REFUQV8zKSwKPiAtCUhETUlfUkVHKFZDNF9IRE1JX0NFQ19SWF9EQVRBXzQpLAo+IC0JSERNSV9S RUcoVkM0X0hETUlfQ0VDX1RYX0RBVEFfMSksCj4gLQlIRE1JX1JFRyhWQzRfSERNSV9DRUNfVFhf REFUQV8yKSwKPiAtCUhETUlfUkVHKFZDNF9IRE1JX0NFQ19UWF9EQVRBXzMpLAo+IC0JSERNSV9S RUcoVkM0X0hETUlfQ0VDX1RYX0RBVEFfNCksCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGVidWdm c19yZWczMiBoZG1pX3JlZ3NbXSA9IHsKPiArCVZDNF9SRUczMihWQzRfSERNSV9DT1JFX1JFViks Cj4gKwlWQzRfUkVHMzIoVkM0X0hETUlfU1dfUkVTRVRfQ09OVFJPTCksCj4gKwlWQzRfUkVHMzIo VkM0X0hETUlfSE9UUExVR19JTlQpLAo+ICsJVkM0X1JFRzMyKFZDNF9IRE1JX0hPVFBMVUcpLAo+ ICsJVkM0X1JFRzMyKFZDNF9IRE1JX01BSV9DSEFOTkVMX01BUCksCj4gKwlWQzRfUkVHMzIoVkM0 X0hETUlfTUFJX0NPTkZJRyksCj4gKwlWQzRfUkVHMzIoVkM0X0hETUlfTUFJX0ZPUk1BVCksCj4g KwlWQzRfUkVHMzIoVkM0X0hETUlfQVVESU9fUEFDS0VUX0NPTkZJRyksCj4gKwlWQzRfUkVHMzIo VkM0X0hETUlfUkFNX1BBQ0tFVF9DT05GSUcpLAo+ICsJVkM0X1JFRzMyKFZDNF9IRE1JX0hPUlpB KSwKPiArCVZDNF9SRUczMihWQzRfSERNSV9IT1JaQiksCj4gKwlWQzRfUkVHMzIoVkM0X0hETUlf RklGT19DVEwpLAo+ICsJVkM0X1JFRzMyKFZDNF9IRE1JX1NDSEVEVUxFUl9DT05UUk9MKSwKPiAr CVZDNF9SRUczMihWQzRfSERNSV9WRVJUQTApLAo+ICsJVkM0X1JFRzMyKFZDNF9IRE1JX1ZFUlRB MSksCj4gKwlWQzRfUkVHMzIoVkM0X0hETUlfVkVSVEIwKSwKPiArCVZDNF9SRUczMihWQzRfSERN SV9WRVJUQjEpLAo+ICsJVkM0X1JFRzMyKFZDNF9IRE1JX1RYX1BIWV9SRVNFVF9DVEwpLAo+ICsJ VkM0X1JFRzMyKFZDNF9IRE1JX1RYX1BIWV9DVEwwKSwKPiArCj4gKwlWQzRfUkVHMzIoVkM0X0hE TUlfQ0VDX0NOVFJMXzEpLAo+ICsJVkM0X1JFRzMyKFZDNF9IRE1JX0NFQ19DTlRSTF8yKSwKPiAr CVZDNF9SRUczMihWQzRfSERNSV9DRUNfQ05UUkxfMyksCj4gKwlWQzRfUkVHMzIoVkM0X0hETUlf Q0VDX0NOVFJMXzQpLAo+ICsJVkM0X1JFRzMyKFZDNF9IRE1JX0NFQ19DTlRSTF81KSwKPiArCVZD NF9SRUczMihWQzRfSERNSV9DUFVfU1RBVFVTKSwKPiArCVZDNF9SRUczMihWQzRfSERNSV9DUFVf TUFTS19TVEFUVVMpLAo+ICsKPiArCVZDNF9SRUczMihWQzRfSERNSV9DRUNfUlhfREFUQV8xKSwK PiArCVZDNF9SRUczMihWQzRfSERNSV9DRUNfUlhfREFUQV8yKSwKPiArCVZDNF9SRUczMihWQzRf SERNSV9DRUNfUlhfREFUQV8zKSwKPiArCVZDNF9SRUczMihWQzRfSERNSV9DRUNfUlhfREFUQV80 KSwKPiArCVZDNF9SRUczMihWQzRfSERNSV9DRUNfVFhfREFUQV8xKSwKPiArCVZDNF9SRUczMihW QzRfSERNSV9DRUNfVFhfREFUQV8yKSwKPiArCVZDNF9SRUczMihWQzRfSERNSV9DRUNfVFhfREFU QV8zKSwKPiArCVZDNF9SRUczMihWQzRfSERNSV9DRUNfVFhfREFUQV80KSwKPiAgfTsKPiAgCj4g LXN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+IC0JdTMyIHJlZzsKPiAtCWNvbnN0IGNoYXIgKm5hbWU7 Cj4gLX0gaGRfcmVnc1tdID0gewo+IC0JSERNSV9SRUcoVkM0X0hEX01fQ1RMKSwKPiAtCUhETUlf UkVHKFZDNF9IRF9NQUlfQ1RMKSwKPiAtCUhETUlfUkVHKFZDNF9IRF9NQUlfVEhSKSwKPiAtCUhE TUlfUkVHKFZDNF9IRF9NQUlfRk1UKSwKPiAtCUhETUlfUkVHKFZDNF9IRF9NQUlfU01QKSwKPiAt CUhETUlfUkVHKFZDNF9IRF9WSURfQ1RMKSwKPiAtCUhETUlfUkVHKFZDNF9IRF9DU0NfQ1RMKSwK PiAtCUhETUlfUkVHKFZDNF9IRF9GUkFNRV9DT1VOVCksCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGVidWdmc19yZWczMiBoZF9yZWdzW10gPSB7Cj4gKwlWQzRfUkVHMzIoVkM0X0hEX01fQ1RMKSwK PiArCVZDNF9SRUczMihWQzRfSERfTUFJX0NUTCksCj4gKwlWQzRfUkVHMzIoVkM0X0hEX01BSV9U SFIpLAo+ICsJVkM0X1JFRzMyKFZDNF9IRF9NQUlfRk1UKSwKPiArCVZDNF9SRUczMihWQzRfSERf TUFJX1NNUCksCj4gKwlWQzRfUkVHMzIoVkM0X0hEX1ZJRF9DVEwpLAo+ICsJVkM0X1JFRzMyKFZD NF9IRF9DU0NfQ1RMKSwKPiArCVZDNF9SRUczMihWQzRfSERfRlJBTUVfQ09VTlQpLAo+ICB9Owo+ ICAKPiAgI2lmZGVmIENPTkZJR19ERUJVR19GUwo+IEBAIC0xOTcsNDEgKzE5MywxNiBAQCBpbnQg dmM0X2hkbWlfZGVidWdmc19yZWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ ICAJc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAoc3RydWN0IGRybV9pbmZvX25vZGUgKilt LT5wcml2YXRlOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG5vZGUtPm1pbm9yLT5kZXY7 Cj4gIAlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYpOwo+IC0JaW50IGk7Cj4g LQo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaGRtaV9yZWdzKTsgaSsrKSB7Cj4gLQkJ c2VxX3ByaW50ZihtLCAiJXMgKDB4JTA0eCk6IDB4JTA4eFxuIiwKPiAtCQkJICAgaGRtaV9yZWdz W2ldLm5hbWUsIGhkbWlfcmVnc1tpXS5yZWcsCj4gLQkJCSAgIEhETUlfUkVBRChoZG1pX3JlZ3Nb aV0ucmVnKSk7Cj4gLQl9Cj4gKwlzdHJ1Y3QgdmM0X2hkbWkgKmhkbWkgPSB2YzQtPmhkbWk7Cj4g KwlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9zZXFfZmlsZV9wcmludGVyKG0pOwo+ICAKPiAt CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhkX3JlZ3MpOyBpKyspIHsKPiAtCQlzZXFfcHJp bnRmKG0sICIlcyAoMHglMDR4KTogMHglMDh4XG4iLAo+IC0JCQkgICBoZF9yZWdzW2ldLm5hbWUs IGhkX3JlZ3NbaV0ucmVnLAo+IC0JCQkgICBIRF9SRUFEKGhkX3JlZ3NbaV0ucmVnKSk7Cj4gLQl9 Cj4gKwlkcm1fcHJpbnRfcmVnc2V0MzIoJnAsICZoZG1pLT5oZG1pX3JlZ3NldCk7Cj4gKwlkcm1f cHJpbnRfcmVnc2V0MzIoJnAsICZoZG1pLT5oZF9yZWdzZXQpOwo+ICAKPiAgCXJldHVybiAwOwo+ ICB9Cj4gICNlbmRpZiAvKiBDT05GSUdfREVCVUdfRlMgKi8KPiAgCj4gLXN0YXRpYyB2b2lkIHZj NF9oZG1pX2R1bXBfcmVncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IC17Cj4gLQlzdHJ1Y3Qg dmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYpOwo+IC0JaW50IGk7Cj4gLQo+IC0JZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUoaGRtaV9yZWdzKTsgaSsrKSB7Cj4gLQkJRFJNX0lORk8oIjB4 JTA0eCAoJXMpOiAweCUwOHhcbiIsCj4gLQkJCSBoZG1pX3JlZ3NbaV0ucmVnLCBoZG1pX3JlZ3Nb aV0ubmFtZSwKPiAtCQkJIEhETUlfUkVBRChoZG1pX3JlZ3NbaV0ucmVnKSk7Cj4gLQl9Cj4gLQlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShoZF9yZWdzKTsgaSsrKSB7Cj4gLQkJRFJNX0lORk8o IjB4JTA0eCAoJXMpOiAweCUwOHhcbiIsCj4gLQkJCSBoZF9yZWdzW2ldLnJlZywgaGRfcmVnc1tp XS5uYW1lLAo+IC0JCQkgSERfUkVBRChoZF9yZWdzW2ldLnJlZykpOwo+IC0JfQo+IC19Cj4gLQo+ ICBzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cwo+ICB2YzRfaGRtaV9jb25uZWN0b3Jf ZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCj4gIHsK PiBAQCAtNTYxLDggKzUzMiwxMSBAQCBzdGF0aWMgdm9pZCB2YzRfaGRtaV9lbmNvZGVyX2VuYWJs ZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gIAlIRE1JX1dSSVRFKFZDNF9IRE1JX1RY X1BIWV9SRVNFVF9DVEwsIDApOwo+ICAKPiAgCWlmIChkZWJ1Z19kdW1wX3JlZ3MpIHsKPiAtCQlE Uk1fSU5GTygiSERNSSByZWdzIGJlZm9yZTpcbiIpOwo+IC0JCXZjNF9oZG1pX2R1bXBfcmVncyhk ZXYpOwo+ICsJCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2luZm9fcHJpbnRlcigmaGRtaS0+ cGRldi0+ZGV2KTsKPiArCj4gKwkJZGV2X2luZm8oJmhkbWktPnBkZXYtPmRldiwgIkhETUkgcmVn cyBiZWZvcmU6XG4iKTsKPiArCQlkcm1fcHJpbnRfcmVnc2V0MzIoJnAsICZoZG1pLT5oZG1pX3Jl Z3NldCk7Cj4gKwkJZHJtX3ByaW50X3JlZ3NldDMyKCZwLCAmaGRtaS0+aGRfcmVnc2V0KTsKPiAg CX0KPiAgCj4gIAlIRF9XUklURShWQzRfSERfVklEX0NUTCwgMCk7Cj4gQEAgLTYzNyw4ICs2MTEs MTEgQEAgc3RhdGljIHZvaWQgdmM0X2hkbWlfZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyKQo+ICAJSERNSV9XUklURShWQzRfSERNSV9GSUZPX0NUTCwgVkM0X0hETUlf RklGT19DVExfTUFTVEVSX1NMQVZFX04pOwo+ICAKPiAgCWlmIChkZWJ1Z19kdW1wX3JlZ3MpIHsK PiAtCQlEUk1fSU5GTygiSERNSSByZWdzIGFmdGVyOlxuIik7Cj4gLQkJdmM0X2hkbWlfZHVtcF9y ZWdzKGRldik7Cj4gKwkJc3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1faW5mb19wcmludGVyKCZo ZG1pLT5wZGV2LT5kZXYpOwo+ICsKPiArCQlkZXZfaW5mbygmaGRtaS0+cGRldi0+ZGV2LCAiSERN SSByZWdzIGFmdGVyOlxuIik7Cj4gKwkJZHJtX3ByaW50X3JlZ3NldDMyKCZwLCAmaGRtaS0+aGRt aV9yZWdzZXQpOwo+ICsJCWRybV9wcmludF9yZWdzZXQzMigmcCwgJmhkbWktPmhkX3JlZ3NldCk7 Cj4gIAl9Cj4gIAo+ICAJSERfV1JJVEUoVkM0X0hEX1ZJRF9DVEwsCj4gQEAgLTEzMzMsNiArMTMx MCwxMyBAQCBzdGF0aWMgaW50IHZjNF9oZG1pX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4gIAlpZiAoSVNfRVJSKGhkbWktPmhkX3Jl Z3MpKQo+ICAJCXJldHVybiBQVFJfRVJSKGhkbWktPmhkX3JlZ3MpOwo+ICAKPiArCWhkbWktPmhk bWlfcmVnc2V0LmJhc2UgPSBoZG1pLT5oZG1pY29yZV9yZWdzOwo+ICsJaGRtaS0+aGRtaV9yZWdz ZXQucmVncyA9IGhkbWlfcmVnczsKPiArCWhkbWktPmhkbWlfcmVnc2V0Lm5yZWdzID0gQVJSQVlf U0laRShoZG1pX3JlZ3MpOwo+ICsJaGRtaS0+aGRfcmVnc2V0LmJhc2UgPSBoZG1pLT5oZF9yZWdz Owo+ICsJaGRtaS0+aGRfcmVnc2V0LnJlZ3MgPSBoZF9yZWdzOwo+ICsJaGRtaS0+aGRfcmVnc2V0 Lm5yZWdzID0gQVJSQVlfU0laRShoZF9yZWdzKTsKPiArCj4gIAloZG1pLT5waXhlbF9jbG9jayA9 IGRldm1fY2xrX2dldChkZXYsICJwaXhlbCIpOwo+ICAJaWYgKElTX0VSUihoZG1pLT5waXhlbF9j bG9jaykpIHsKPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgcGl4ZWwgY2xvY2tcbiIpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9odnMuYyBiL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X2h2cy5jCj4gaW5kZXggNWQ4Yzc0OWM5NzQ5Li40NTQwNWY3NmNkNDAgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfaHZzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF9odnMuYwo+IEBAIC0yNiw1NCArMjYsNDcgQEAKPiAgI2luY2x1ZGUg InZjNF9kcnYuaCIKPiAgI2luY2x1ZGUgInZjNF9yZWdzLmgiCj4gIAo+IC0jZGVmaW5lIEhWU19S RUcocmVnKSB7IHJlZywgI3JlZyB9Cj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgewo+IC0JdTMyIHJl ZzsKPiAtCWNvbnN0IGNoYXIgKm5hbWU7Cj4gLX0gaHZzX3JlZ3NbXSA9IHsKPiAtCUhWU19SRUco U0NBTEVSX0RJU1BDVFJMKSwKPiAtCUhWU19SRUcoU0NBTEVSX0RJU1BTVEFUKSwKPiAtCUhWU19S RUcoU0NBTEVSX0RJU1BJRCksCj4gLQlIVlNfUkVHKFNDQUxFUl9ESVNQRUNUUkwpLAo+IC0JSFZT X1JFRyhTQ0FMRVJfRElTUFBST0YpLAo+IC0JSFZTX1JFRyhTQ0FMRVJfRElTUERJVEhFUiksCj4g LQlIVlNfUkVHKFNDQUxFUl9ESVNQRU9MTiksCj4gLQlIVlNfUkVHKFNDQUxFUl9ESVNQTElTVDAp LAo+IC0JSFZTX1JFRyhTQ0FMRVJfRElTUExJU1QxKSwKPiAtCUhWU19SRUcoU0NBTEVSX0RJU1BM SVNUMiksCj4gLQlIVlNfUkVHKFNDQUxFUl9ESVNQTFNUQVQpLAo+IC0JSFZTX1JFRyhTQ0FMRVJf RElTUExBQ1QwKSwKPiAtCUhWU19SRUcoU0NBTEVSX0RJU1BMQUNUMSksCj4gLQlIVlNfUkVHKFND QUxFUl9ESVNQTEFDVDIpLAo+IC0JSFZTX1JFRyhTQ0FMRVJfRElTUENUUkwwKSwKPiAtCUhWU19S RUcoU0NBTEVSX0RJU1BCS0dORDApLAo+IC0JSFZTX1JFRyhTQ0FMRVJfRElTUFNUQVQwKSwKPiAt CUhWU19SRUcoU0NBTEVSX0RJU1BCQVNFMCksCj4gLQlIVlNfUkVHKFNDQUxFUl9ESVNQQ1RSTDEp LAo+IC0JSFZTX1JFRyhTQ0FMRVJfRElTUEJLR05EMSksCj4gLQlIVlNfUkVHKFNDQUxFUl9ESVNQ U1RBVDEpLAo+IC0JSFZTX1JFRyhTQ0FMRVJfRElTUEJBU0UxKSwKPiAtCUhWU19SRUcoU0NBTEVS X0RJU1BDVFJMMiksCj4gLQlIVlNfUkVHKFNDQUxFUl9ESVNQQktHTkQyKSwKPiAtCUhWU19SRUco U0NBTEVSX0RJU1BTVEFUMiksCj4gLQlIVlNfUkVHKFNDQUxFUl9ESVNQQkFTRTIpLAo+IC0JSFZT X1JFRyhTQ0FMRVJfRElTUEFMUEhBMiksCj4gLQlIVlNfUkVHKFNDQUxFUl9PTEVET0ZGUyksCj4g LQlIVlNfUkVHKFNDQUxFUl9PTEVEQ09FRjApLAo+IC0JSFZTX1JFRyhTQ0FMRVJfT0xFRENPRUYx KSwKPiAtCUhWU19SRUcoU0NBTEVSX09MRURDT0VGMiksCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGVidWdmc19yZWczMiBodnNfcmVnc1tdID0gewo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQQ1RS TCksCj4gKwlWQzRfUkVHMzIoU0NBTEVSX0RJU1BTVEFUKSwKPiArCVZDNF9SRUczMihTQ0FMRVJf RElTUElEKSwKPiArCVZDNF9SRUczMihTQ0FMRVJfRElTUEVDVFJMKSwKPiArCVZDNF9SRUczMihT Q0FMRVJfRElTUFBST0YpLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQRElUSEVSKSwKPiArCVZD NF9SRUczMihTQ0FMRVJfRElTUEVPTE4pLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQTElTVDAp LAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQTElTVDEpLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9E SVNQTElTVDIpLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQTFNUQVQpLAo+ICsJVkM0X1JFRzMy KFNDQUxFUl9ESVNQTEFDVDApLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQTEFDVDEpLAo+ICsJ VkM0X1JFRzMyKFNDQUxFUl9ESVNQTEFDVDIpLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQQ1RS TDApLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQQktHTkQwKSwKPiArCVZDNF9SRUczMihTQ0FM RVJfRElTUFNUQVQwKSwKPiArCVZDNF9SRUczMihTQ0FMRVJfRElTUEJBU0UwKSwKPiArCVZDNF9S RUczMihTQ0FMRVJfRElTUENUUkwxKSwKPiArCVZDNF9SRUczMihTQ0FMRVJfRElTUEJLR05EMSks Cj4gKwlWQzRfUkVHMzIoU0NBTEVSX0RJU1BTVEFUMSksCj4gKwlWQzRfUkVHMzIoU0NBTEVSX0RJ U1BCQVNFMSksCj4gKwlWQzRfUkVHMzIoU0NBTEVSX0RJU1BDVFJMMiksCj4gKwlWQzRfUkVHMzIo U0NBTEVSX0RJU1BCS0dORDIpLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQU1RBVDIpLAo+ICsJ VkM0X1JFRzMyKFNDQUxFUl9ESVNQQkFTRTIpLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9ESVNQQUxQ SEEyKSwKPiArCVZDNF9SRUczMihTQ0FMRVJfT0xFRE9GRlMpLAo+ICsJVkM0X1JFRzMyKFNDQUxF Ul9PTEVEQ09FRjApLAo+ICsJVkM0X1JFRzMyKFNDQUxFUl9PTEVEQ09FRjEpLAo+ICsJVkM0X1JF RzMyKFNDQUxFUl9PTEVEQ09FRjIpLAo+ICB9Owo+ICAKPiAgdm9pZCB2YzRfaHZzX2R1bXBfc3Rh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IHZjNF9kZXYgKnZjNCA9 IHRvX3ZjNF9kZXYoZGV2KTsKPiArCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX2luZm9fcHJp bnRlcigmdmM0LT5odnMtPnBkZXYtPmRldik7Cj4gIAlpbnQgaTsKPiAgCj4gLQlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShodnNfcmVncyk7IGkrKykgewo+IC0JCURSTV9JTkZPKCIweCUwNHgg KCVzKTogMHglMDh4XG4iLAo+IC0JCQkgaHZzX3JlZ3NbaV0ucmVnLCBodnNfcmVnc1tpXS5uYW1l LAo+IC0JCQkgSFZTX1JFQUQoaHZzX3JlZ3NbaV0ucmVnKSk7Cj4gLQl9Cj4gKwlkcm1fcHJpbnRf cmVnc2V0MzIoJnAsICZ2YzQtPmh2cy0+cmVnc2V0KTsKPiAgCj4gIAlEUk1fSU5GTygiSFZTIGN0 eDpcbiIpOwo+ICAJZm9yIChpID0gMDsgaSA8IDY0OyBpICs9IDQpIHsKPiBAQCAtOTIsMTMgKzg1 LDkgQEAgaW50IHZjNF9odnNfZGVidWdmc19yZWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQo+ICAJc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAoc3RydWN0IGRybV9pbmZv X25vZGUgKiltLT5wcml2YXRlOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG5vZGUtPm1p bm9yLT5kZXY7Cj4gIAlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2RldihkZXYpOwo+IC0J aW50IGk7Cj4gKwlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9zZXFfZmlsZV9wcmludGVyKG0p Owo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGh2c19yZWdzKTsgaSsrKSB7Cj4g LQkJc2VxX3ByaW50ZihtLCAiJXMgKDB4JTA0eCk6IDB4JTA4eFxuIiwKPiAtCQkJICAgaHZzX3Jl Z3NbaV0ubmFtZSwgaHZzX3JlZ3NbaV0ucmVnLAo+IC0JCQkgICBIVlNfUkVBRChodnNfcmVnc1tp XS5yZWcpKTsKPiAtCX0KPiArCWRybV9wcmludF9yZWdzZXQzMigmcCwgJnZjNC0+aHZzLT5yZWdz ZXQpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTE4NSw2ICsxNzQsMTAgQEAgc3RhdGlj IGludCB2YzRfaHZzX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0 ZXIsIHZvaWQgKmRhdGEpCj4gIAlpZiAoSVNfRVJSKGh2cy0+cmVncykpCj4gIAkJcmV0dXJuIFBU Ul9FUlIoaHZzLT5yZWdzKTsKPiAgCj4gKwlodnMtPnJlZ3NldC5iYXNlID0gaHZzLT5yZWdzOwo+ ICsJaHZzLT5yZWdzZXQucmVncyA9IGh2c19yZWdzOwo+ICsJaHZzLT5yZWdzZXQubnJlZ3MgPSBB UlJBWV9TSVpFKGh2c19yZWdzKTsKPiArCj4gIAlodnMtPmRsaXN0ID0gaHZzLT5yZWdzICsgU0NB TEVSX0RMSVNUX1NUQVJUOwo+ICAKPiAgCXNwaW5fbG9ja19pbml0KCZodnMtPm1tX2xvY2spOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF90eHAuYyBiL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X3R4cC5jCj4gaW5kZXggYWZiMWM0ZWM0ZjE4Li5jOGY4MDA2NGMxNzkgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdHhwLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdmM0L3ZjNF90eHAuYwo+IEBAIC0xNDgsNiArMTQ4LDcgQEAgc3RydWN0IHZjNF90 eHAgewo+ICAJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yIGNvbm5lY3RvcjsKPiAgCj4g IAl2b2lkIF9faW9tZW0gKnJlZ3M7Cj4gKwlzdHJ1Y3QgZGVidWdmc19yZWdzZXQzMiByZWdzZXQ7 Cj4gIH07Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCB2YzRfdHhwICplbmNvZGVyX3RvX3Zj NF90eHAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+IEBAIC0xNjAsMTYgKzE2MSwxMiBA QCBzdGF0aWMgaW5saW5lIHN0cnVjdCB2YzRfdHhwICpjb25uZWN0b3JfdG9fdmM0X3R4cChzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubikKPiAgCXJldHVybiBjb250YWluZXJfb2YoY29ubiwgc3Ry dWN0IHZjNF90eHAsIGNvbm5lY3Rvci5iYXNlKTsKPiAgfQo+ICAKPiAtI2RlZmluZSBUWFBfUkVH KHJlZykgeyByZWcsICNyZWcgfQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHsKPiAtCXUzMiByZWc7 Cj4gLQljb25zdCBjaGFyICpuYW1lOwo+IC19IHR4cF9yZWdzW10gPSB7Cj4gLQlUWFBfUkVHKFRY UF9EU1RfUFRSKSwKPiAtCVRYUF9SRUcoVFhQX0RTVF9QSVRDSCksCj4gLQlUWFBfUkVHKFRYUF9E SU0pLAo+IC0JVFhQX1JFRyhUWFBfRFNUX0NUUkwpLAo+IC0JVFhQX1JFRyhUWFBfUFJPR1JFU1Mp LAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRlYnVnZnNfcmVnMzIgdHhwX3JlZ3NbXSA9IHsKPiAr CVZDNF9SRUczMihUWFBfRFNUX1BUUiksCj4gKwlWQzRfUkVHMzIoVFhQX0RTVF9QSVRDSCksCj4g KwlWQzRfUkVHMzIoVFhQX0RJTSksCj4gKwlWQzRfUkVHMzIoVFhQX0RTVF9DVFJMKSwKPiArCVZD NF9SRUczMihUWFBfUFJPR1JFU1MpLAo+ICB9Owo+ICAKPiAgI2lmZGVmIENPTkZJR19ERUJVR19G Uwo+IEBAIC0xNzksMTYgKzE3NiwxMiBAQCBpbnQgdmM0X3R4cF9kZWJ1Z2ZzX3JlZ3Moc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g bm9kZS0+bWlub3ItPmRldjsKPiAgCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRl dik7Cj4gIAlzdHJ1Y3QgdmM0X3R4cCAqdHhwID0gdmM0LT50eHA7Cj4gLQlpbnQgaTsKPiArCXN0 cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX3NlcV9maWxlX3ByaW50ZXIobSk7Cj4gIAo+ICAJaWYg KCF0eHApCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo dHhwX3JlZ3MpOyBpKyspIHsKPiAtCQlzZXFfcHJpbnRmKG0sICIlcyAoMHglMDR4KTogMHglMDh4 XG4iLAo+IC0JCQkgICB0eHBfcmVnc1tpXS5uYW1lLCB0eHBfcmVnc1tpXS5yZWcsCj4gLQkJCSAg IFRYUF9SRUFEKHR4cF9yZWdzW2ldLnJlZykpOwo+IC0JfQo+ICsJZHJtX3ByaW50X3JlZ3NldDMy KCZwLCAmdHhwLT5yZWdzZXQpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTQxMCw2ICs0 MDMsOSBAQCBzdGF0aWMgaW50IHZjNF90eHBfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPiAgCXR4cC0+cmVncyA9IHZjNF9pb3JlbWFw X3JlZ3MocGRldiwgMCk7Cj4gIAlpZiAoSVNfRVJSKHR4cC0+cmVncykpCj4gIAkJcmV0dXJuIFBU Ul9FUlIodHhwLT5yZWdzKTsKPiArCXR4cC0+cmVnc2V0LmJhc2UgPSB0eHAtPnJlZ3M7Cj4gKwl0 eHAtPnJlZ3NldC5yZWdzID0gdHhwX3JlZ3M7Cj4gKwl0eHAtPnJlZ3NldC5ucmVncyA9IEFSUkFZ X1NJWkUodHhwX3JlZ3MpOwo+ICAKPiAgCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZCgmdHhwLT5j b25uZWN0b3IuYmFzZSwKPiAgCQkJCSAmdmM0X3R4cF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdjNkLmMgYi9kcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF92M2QuYwo+IGluZGV4IGU0N2UyOTQyNjA3OC4uZTFlNzI4ZTk1NTYyIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3YzZC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfdjNkLmMKPiBAQCAtMjMsODkgKzIzLDg1IEBACj4gICNpbmNsdWRl ICJ2YzRfcmVncy5oIgo+ICAKPiAgI2lmZGVmIENPTkZJR19ERUJVR19GUwo+IC0jZGVmaW5lIFJF R0RFRihyZWcpIHsgcmVnLCAjcmVnIH0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4gLQl1aW50 MzJfdCByZWc7Cj4gLQljb25zdCBjaGFyICpuYW1lOwo+IC19IHZjNF9yZWdfZGVmc1tdID0gewo+ IC0JUkVHREVGKFYzRF9JREVOVDApLAo+IC0JUkVHREVGKFYzRF9JREVOVDEpLAo+IC0JUkVHREVG KFYzRF9JREVOVDIpLAo+IC0JUkVHREVGKFYzRF9TQ1JBVENIKSwKPiAtCVJFR0RFRihWM0RfTDJD QUNUTCksCj4gLQlSRUdERUYoVjNEX1NMQ0FDVEwpLAo+IC0JUkVHREVGKFYzRF9JTlRDVEwpLAo+ IC0JUkVHREVGKFYzRF9JTlRFTkEpLAo+IC0JUkVHREVGKFYzRF9JTlRESVMpLAo+IC0JUkVHREVG KFYzRF9DVDBDUyksCj4gLQlSRUdERUYoVjNEX0NUMUNTKSwKPiAtCVJFR0RFRihWM0RfQ1QwRUEp LAo+IC0JUkVHREVGKFYzRF9DVDFFQSksCj4gLQlSRUdERUYoVjNEX0NUMENBKSwKPiAtCVJFR0RF RihWM0RfQ1QxQ0EpLAo+IC0JUkVHREVGKFYzRF9DVDAwUkEwKSwKPiAtCVJFR0RFRihWM0RfQ1Qw MVJBMCksCj4gLQlSRUdERUYoVjNEX0NUMExDKSwKPiAtCVJFR0RFRihWM0RfQ1QxTEMpLAo+IC0J UkVHREVGKFYzRF9DVDBQQyksCj4gLQlSRUdERUYoVjNEX0NUMVBDKSwKPiAtCVJFR0RFRihWM0Rf UENTKSwKPiAtCVJFR0RFRihWM0RfQkZDKSwKPiAtCVJFR0RFRihWM0RfUkZDKSwKPiAtCVJFR0RF RihWM0RfQlBDQSksCj4gLQlSRUdERUYoVjNEX0JQQ1MpLAo+IC0JUkVHREVGKFYzRF9CUE9BKSwK PiAtCVJFR0RFRihWM0RfQlBPUyksCj4gLQlSRUdERUYoVjNEX0JYQ0YpLAo+IC0JUkVHREVGKFYz RF9TUVJTVjApLAo+IC0JUkVHREVGKFYzRF9TUVJTVjEpLAo+IC0JUkVHREVGKFYzRF9TUUNOVEwp LAo+IC0JUkVHREVGKFYzRF9TUlFQQyksCj4gLQlSRUdERUYoVjNEX1NSUVVBKSwKPiAtCVJFR0RF RihWM0RfU1JRVUwpLAo+IC0JUkVHREVGKFYzRF9TUlFDUyksCj4gLQlSRUdERUYoVjNEX1ZQQUNO VEwpLAo+IC0JUkVHREVGKFYzRF9WUE1CQVNFKSwKPiAtCVJFR0RFRihWM0RfUENUUkMpLAo+IC0J UkVHREVGKFYzRF9QQ1RSRSksCj4gLQlSRUdERUYoVjNEX1BDVFIoMCkpLAo+IC0JUkVHREVGKFYz RF9QQ1RSUygwKSksCj4gLQlSRUdERUYoVjNEX1BDVFIoMSkpLAo+IC0JUkVHREVGKFYzRF9QQ1RS UygxKSksCj4gLQlSRUdERUYoVjNEX1BDVFIoMikpLAo+IC0JUkVHREVGKFYzRF9QQ1RSUygyKSks Cj4gLQlSRUdERUYoVjNEX1BDVFIoMykpLAo+IC0JUkVHREVGKFYzRF9QQ1RSUygzKSksCj4gLQlS RUdERUYoVjNEX1BDVFIoNCkpLAo+IC0JUkVHREVGKFYzRF9QQ1RSUyg0KSksCj4gLQlSRUdERUYo VjNEX1BDVFIoNSkpLAo+IC0JUkVHREVGKFYzRF9QQ1RSUyg1KSksCj4gLQlSRUdERUYoVjNEX1BD VFIoNikpLAo+IC0JUkVHREVGKFYzRF9QQ1RSUyg2KSksCj4gLQlSRUdERUYoVjNEX1BDVFIoNykp LAo+IC0JUkVHREVGKFYzRF9QQ1RSUyg3KSksCj4gLQlSRUdERUYoVjNEX1BDVFIoOCkpLAo+IC0J UkVHREVGKFYzRF9QQ1RSUyg4KSksCj4gLQlSRUdERUYoVjNEX1BDVFIoOSkpLAo+IC0JUkVHREVG KFYzRF9QQ1RSUyg5KSksCj4gLQlSRUdERUYoVjNEX1BDVFIoMTApKSwKPiAtCVJFR0RFRihWM0Rf UENUUlMoMTApKSwKPiAtCVJFR0RFRihWM0RfUENUUigxMSkpLAo+IC0JUkVHREVGKFYzRF9QQ1RS UygxMSkpLAo+IC0JUkVHREVGKFYzRF9QQ1RSKDEyKSksCj4gLQlSRUdERUYoVjNEX1BDVFJTKDEy KSksCj4gLQlSRUdERUYoVjNEX1BDVFIoMTMpKSwKPiAtCVJFR0RFRihWM0RfUENUUlMoMTMpKSwK PiAtCVJFR0RFRihWM0RfUENUUigxNCkpLAo+IC0JUkVHREVGKFYzRF9QQ1RSUygxNCkpLAo+IC0J UkVHREVGKFYzRF9QQ1RSKDE1KSksCj4gLQlSRUdERUYoVjNEX1BDVFJTKDE1KSksCj4gLQlSRUdE RUYoVjNEX0RCR0UpLAo+IC0JUkVHREVGKFYzRF9GREJHTyksCj4gLQlSRUdERUYoVjNEX0ZEQkdC KSwKPiAtCVJFR0RFRihWM0RfRkRCR1IpLAo+IC0JUkVHREVGKFYzRF9GREJHUyksCj4gLQlSRUdE RUYoVjNEX0VSUlNUQVQpLAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRlYnVnZnNfcmVnMzIgdjNk X3JlZ3NbXSA9IHsKPiArCVZDNF9SRUczMihWM0RfSURFTlQwKSwKPiArCVZDNF9SRUczMihWM0Rf SURFTlQxKSwKPiArCVZDNF9SRUczMihWM0RfSURFTlQyKSwKPiArCVZDNF9SRUczMihWM0RfU0NS QVRDSCksCj4gKwlWQzRfUkVHMzIoVjNEX0wyQ0FDVEwpLAo+ICsJVkM0X1JFRzMyKFYzRF9TTENB Q1RMKSwKPiArCVZDNF9SRUczMihWM0RfSU5UQ1RMKSwKPiArCVZDNF9SRUczMihWM0RfSU5URU5B KSwKPiArCVZDNF9SRUczMihWM0RfSU5URElTKSwKPiArCVZDNF9SRUczMihWM0RfQ1QwQ1MpLAo+ ICsJVkM0X1JFRzMyKFYzRF9DVDFDUyksCj4gKwlWQzRfUkVHMzIoVjNEX0NUMEVBKSwKPiArCVZD NF9SRUczMihWM0RfQ1QxRUEpLAo+ICsJVkM0X1JFRzMyKFYzRF9DVDBDQSksCj4gKwlWQzRfUkVH MzIoVjNEX0NUMUNBKSwKPiArCVZDNF9SRUczMihWM0RfQ1QwMFJBMCksCj4gKwlWQzRfUkVHMzIo VjNEX0NUMDFSQTApLAo+ICsJVkM0X1JFRzMyKFYzRF9DVDBMQyksCj4gKwlWQzRfUkVHMzIoVjNE X0NUMUxDKSwKPiArCVZDNF9SRUczMihWM0RfQ1QwUEMpLAo+ICsJVkM0X1JFRzMyKFYzRF9DVDFQ QyksCj4gKwlWQzRfUkVHMzIoVjNEX1BDUyksCj4gKwlWQzRfUkVHMzIoVjNEX0JGQyksCj4gKwlW QzRfUkVHMzIoVjNEX1JGQyksCj4gKwlWQzRfUkVHMzIoVjNEX0JQQ0EpLAo+ICsJVkM0X1JFRzMy KFYzRF9CUENTKSwKPiArCVZDNF9SRUczMihWM0RfQlBPQSksCj4gKwlWQzRfUkVHMzIoVjNEX0JQ T1MpLAo+ICsJVkM0X1JFRzMyKFYzRF9CWENGKSwKPiArCVZDNF9SRUczMihWM0RfU1FSU1YwKSwK PiArCVZDNF9SRUczMihWM0RfU1FSU1YxKSwKPiArCVZDNF9SRUczMihWM0RfU1FDTlRMKSwKPiAr CVZDNF9SRUczMihWM0RfU1JRUEMpLAo+ICsJVkM0X1JFRzMyKFYzRF9TUlFVQSksCj4gKwlWQzRf UkVHMzIoVjNEX1NSUVVMKSwKPiArCVZDNF9SRUczMihWM0RfU1JRQ1MpLAo+ICsJVkM0X1JFRzMy KFYzRF9WUEFDTlRMKSwKPiArCVZDNF9SRUczMihWM0RfVlBNQkFTRSksCj4gKwlWQzRfUkVHMzIo VjNEX1BDVFJDKSwKPiArCVZDNF9SRUczMihWM0RfUENUUkUpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDApKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoMCkpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDEpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoMSkpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDIpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoMikpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDMpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoMykpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDQpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoNCkpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDUpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoNSkpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDYpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoNikpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDcpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoNykpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDgpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoOCkpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDkpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoOSkpLAo+ICsJVkM0X1JFRzMyKFYzRF9Q Q1RSKDEwKSksCj4gKwlWQzRfUkVHMzIoVjNEX1BDVFJTKDEwKSksCj4gKwlWQzRfUkVHMzIoVjNE X1BDVFIoMTEpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoMTEpKSwKPiArCVZDNF9SRUczMihW M0RfUENUUigxMikpLAo+ICsJVkM0X1JFRzMyKFYzRF9QQ1RSUygxMikpLAo+ICsJVkM0X1JFRzMy KFYzRF9QQ1RSKDEzKSksCj4gKwlWQzRfUkVHMzIoVjNEX1BDVFJTKDEzKSksCj4gKwlWQzRfUkVH MzIoVjNEX1BDVFIoMTQpKSwKPiArCVZDNF9SRUczMihWM0RfUENUUlMoMTQpKSwKPiArCVZDNF9S RUczMihWM0RfUENUUigxNSkpLAo+ICsJVkM0X1JFRzMyKFYzRF9QQ1RSUygxNSkpLAo+ICsJVkM0 X1JFRzMyKFYzRF9EQkdFKSwKPiArCVZDNF9SRUczMihWM0RfRkRCR08pLAo+ICsJVkM0X1JFRzMy KFYzRF9GREJHQiksCj4gKwlWQzRfUkVHMzIoVjNEX0ZEQkdSKSwKPiArCVZDNF9SRUczMihWM0Rf RkRCR1MpLAo+ICsJVkM0X1JFRzMyKFYzRF9FUlJTVEFUKSwKPiAgfTsKPiAgCj4gIGludCB2YzRf djNkX2RlYnVnZnNfcmVncyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiBAQCAt MTEzLDEzICsxMDksOSBAQCBpbnQgdmM0X3YzZF9kZWJ1Z2ZzX3JlZ3Moc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICp1bnVzZWQpCj4gIAlzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9IChzdHJ1 Y3QgZHJtX2luZm9fbm9kZSAqKW0tPnByaXZhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gbm9kZS0+bWlub3ItPmRldjsKPiAgCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2 KGRldik7Cj4gLQlpbnQgaTsKPiArCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX3NlcV9maWxl X3ByaW50ZXIobSk7Cj4gIAo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodmM0X3JlZ19k ZWZzKTsgaSsrKSB7Cj4gLQkJc2VxX3ByaW50ZihtLCAiJXMgKDB4JTA0eCk6IDB4JTA4eFxuIiwK PiAtCQkJICAgdmM0X3JlZ19kZWZzW2ldLm5hbWUsIHZjNF9yZWdfZGVmc1tpXS5yZWcsCj4gLQkJ CSAgIFYzRF9SRUFEKHZjNF9yZWdfZGVmc1tpXS5yZWcpKTsKPiAtCX0KPiArCWRybV9wcmludF9y ZWdzZXQzMigmcCwgJnZjNC0+djNkLT5yZWdzZXQpOwo+ICAKPiAgCXJldHVybiAwOwo+ICB9Cj4g QEAgLTM1NCw2ICszNDYsOSBAQCBzdGF0aWMgaW50IHZjNF92M2RfYmluZChzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPiAgCXYzZC0+cmVncyA9 IHZjNF9pb3JlbWFwX3JlZ3MocGRldiwgMCk7Cj4gIAlpZiAoSVNfRVJSKHYzZC0+cmVncykpCj4g IAkJcmV0dXJuIFBUUl9FUlIodjNkLT5yZWdzKTsKPiArCXYzZC0+cmVnc2V0LmJhc2UgPSB2M2Qt PnJlZ3M7Cj4gKwl2M2QtPnJlZ3NldC5yZWdzID0gdjNkX3JlZ3M7Cj4gKwl2M2QtPnJlZ3NldC5u cmVncyA9IEFSUkFZX1NJWkUodjNkX3JlZ3MpOwo+ICAKPiAgCXZjNC0+djNkID0gdjNkOwo+ICAJ djNkLT52YzQgPSB2YzQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3Zl Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfdmVjLmMKPiBpbmRleCA4NThjM2E0ODMyMjku LjgzMjI3ZDI0NDBhYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF92ZWMu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3ZlYy5jCj4gQEAgLTE3Niw2ICsxNzYs OCBAQCBzdHJ1Y3QgdmM0X3ZlYyB7Cj4gIAlzdHJ1Y3QgY2xrICpjbG9jazsKPiAgCj4gIAljb25z dCBzdHJ1Y3QgdmM0X3ZlY190dl9tb2RlICp0dl9tb2RlOwo+ICsKPiArCXN0cnVjdCBkZWJ1Z2Zz X3JlZ3NldDMyIHJlZ3NldDsKPiAgfTsKPiAgCj4gICNkZWZpbmUgVkVDX1JFQUQob2Zmc2V0KSBy ZWFkbCh2ZWMtPnJlZ3MgKyAob2Zmc2V0KSkKPiBAQCAtMjIzLDM1ICsyMjUsMzEgQEAgc3RydWN0 IHZjNF92ZWNfdHZfbW9kZSB7Cj4gIAl2b2lkICgqbW9kZV9zZXQpKHN0cnVjdCB2YzRfdmVjICp2 ZWMpOwo+ICB9Owo+ICAKPiAtI2RlZmluZSBWRUNfUkVHKHJlZykgeyByZWcsICNyZWcgfQo+IC1z dGF0aWMgY29uc3Qgc3RydWN0IHsKPiAtCXUzMiByZWc7Cj4gLQljb25zdCBjaGFyICpuYW1lOwo+ IC19IHZlY19yZWdzW10gPSB7Cj4gLQlWRUNfUkVHKFZFQ19XU0VfQ09OVFJPTCksCj4gLQlWRUNf UkVHKFZFQ19XU0VfV1NTX0RBVEEpLAo+IC0JVkVDX1JFRyhWRUNfV1NFX1ZQU19EQVRBMSksCj4g LQlWRUNfUkVHKFZFQ19XU0VfVlBTX0NPTlRST0wpLAo+IC0JVkVDX1JFRyhWRUNfUkVWSUQpLAo+ IC0JVkVDX1JFRyhWRUNfQ09ORklHMCksCj4gLQlWRUNfUkVHKFZFQ19TQ0hQSCksCj4gLQlWRUNf UkVHKFZFQ19DTE1QMF9TVEFSVCksCj4gLQlWRUNfUkVHKFZFQ19DTE1QMF9FTkQpLAo+IC0JVkVD X1JFRyhWRUNfRlJFUTNfMiksCj4gLQlWRUNfUkVHKFZFQ19GUkVRMV8wKSwKPiAtCVZFQ19SRUco VkVDX0NPTkZJRzEpLAo+IC0JVkVDX1JFRyhWRUNfQ09ORklHMiksCj4gLQlWRUNfUkVHKFZFQ19J TlRFUlJVUFRfQ09OVFJPTCksCj4gLQlWRUNfUkVHKFZFQ19JTlRFUlJVUFRfU1RBVFVTKSwKPiAt CVZFQ19SRUcoVkVDX0ZDV19TRUNBTV9CKSwKPiAtCVZFQ19SRUcoVkVDX1NFQ0FNX0dBSU5fVkFM KSwKPiAtCVZFQ19SRUcoVkVDX0NPTkZJRzMpLAo+IC0JVkVDX1JFRyhWRUNfU1RBVFVTMCksCj4g LQlWRUNfUkVHKFZFQ19NQVNLMCksCj4gLQlWRUNfUkVHKFZFQ19DRkcpLAo+IC0JVkVDX1JFRyhW RUNfREFDX1RFU1QpLAo+IC0JVkVDX1JFRyhWRUNfREFDX0NPTkZJRyksCj4gLQlWRUNfUkVHKFZF Q19EQUNfTUlTQyksCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGVidWdmc19yZWczMiB2ZWNfcmVn c1tdID0gewo+ICsJVkM0X1JFRzMyKFZFQ19XU0VfQ09OVFJPTCksCj4gKwlWQzRfUkVHMzIoVkVD X1dTRV9XU1NfREFUQSksCj4gKwlWQzRfUkVHMzIoVkVDX1dTRV9WUFNfREFUQTEpLAo+ICsJVkM0 X1JFRzMyKFZFQ19XU0VfVlBTX0NPTlRST0wpLAo+ICsJVkM0X1JFRzMyKFZFQ19SRVZJRCksCj4g KwlWQzRfUkVHMzIoVkVDX0NPTkZJRzApLAo+ICsJVkM0X1JFRzMyKFZFQ19TQ0hQSCksCj4gKwlW QzRfUkVHMzIoVkVDX0NMTVAwX1NUQVJUKSwKPiArCVZDNF9SRUczMihWRUNfQ0xNUDBfRU5EKSwK PiArCVZDNF9SRUczMihWRUNfRlJFUTNfMiksCj4gKwlWQzRfUkVHMzIoVkVDX0ZSRVExXzApLAo+ ICsJVkM0X1JFRzMyKFZFQ19DT05GSUcxKSwKPiArCVZDNF9SRUczMihWRUNfQ09ORklHMiksCj4g KwlWQzRfUkVHMzIoVkVDX0lOVEVSUlVQVF9DT05UUk9MKSwKPiArCVZDNF9SRUczMihWRUNfSU5U RVJSVVBUX1NUQVRVUyksCj4gKwlWQzRfUkVHMzIoVkVDX0ZDV19TRUNBTV9CKSwKPiArCVZDNF9S RUczMihWRUNfU0VDQU1fR0FJTl9WQUwpLAo+ICsJVkM0X1JFRzMyKFZFQ19DT05GSUczKSwKPiAr CVZDNF9SRUczMihWRUNfU1RBVFVTMCksCj4gKwlWQzRfUkVHMzIoVkVDX01BU0swKSwKPiArCVZD NF9SRUczMihWRUNfQ0ZHKSwKPiArCVZDNF9SRUczMihWRUNfREFDX1RFU1QpLAo+ICsJVkM0X1JF RzMyKFZFQ19EQUNfQ09ORklHKSwKPiArCVZDNF9SRUczMihWRUNfREFDX01JU0MpLAo+ICB9Owo+ ICAKPiAgI2lmZGVmIENPTkZJR19ERUJVR19GUwo+IEBAIC0yNjEsMTYgKzI1OSwxMiBAQCBpbnQg dmM0X3ZlY19kZWJ1Z2ZzX3JlZ3Moc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4g IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbm9kZS0+bWlub3ItPmRldjsKPiAgCXN0cnVjdCB2 YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7Cj4gIAlzdHJ1Y3QgdmM0X3ZlYyAqdmVjID0g dmM0LT52ZWM7Cj4gLQlpbnQgaTsKPiArCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJtX3NlcV9m aWxlX3ByaW50ZXIobSk7Cj4gIAo+ICAJaWYgKCF2ZWMpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0J Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodmVjX3JlZ3MpOyBpKyspIHsKPiAtCQlzZXFfcHJp bnRmKG0sICIlcyAoMHglMDR4KTogMHglMDh4XG4iLAo+IC0JCQkgICB2ZWNfcmVnc1tpXS5uYW1l LCB2ZWNfcmVnc1tpXS5yZWcsCj4gLQkJCSAgIFZFQ19SRUFEKHZlY19yZWdzW2ldLnJlZykpOwo+ IC0JfQo+ICsJZHJtX3ByaW50X3JlZ3NldDMyKCZwLCAmdmVjLT5yZWdzZXQpOwo+ICAKPiAgCXJl dHVybiAwOwo+ICB9Cj4gQEAgLTU4Nyw2ICs1ODEsOSBAQCBzdGF0aWMgaW50IHZjNF92ZWNfYmlu ZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkK PiAgCXZlYy0+cmVncyA9IHZjNF9pb3JlbWFwX3JlZ3MocGRldiwgMCk7Cj4gIAlpZiAoSVNfRVJS KHZlYy0+cmVncykpCj4gIAkJcmV0dXJuIFBUUl9FUlIodmVjLT5yZWdzKTsKPiArCXZlYy0+cmVn c2V0LmJhc2UgPSB2ZWMtPnJlZ3M7Cj4gKwl2ZWMtPnJlZ3NldC5yZWdzID0gdmVjX3JlZ3M7Cj4g Kwl2ZWMtPnJlZ3NldC5ucmVncyA9IEFSUkFZX1NJWkUodmVjX3JlZ3MpOwo+ICAKPiAgCXZlYy0+ Y2xvY2sgPSBkZXZtX2Nsa19nZXQoZGV2LCBOVUxMKTsKPiAgCWlmIChJU19FUlIodmVjLT5jbG9j aykpIHsKLS0gClBhdWwgS29jaWFsa293c2tpLCBCb290bGluCkVtYmVkZGVkIExpbnV4IGFuZCBr ZXJuZWwgZW5naW5lZXJpbmcKaHR0cHM6Ly9ib290bGluLmNvbQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs