From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [RFC 2/7] drm/i915: Introduce runtime device info Date: Mon, 12 Nov 2018 19:36:27 +0200 Message-ID: <20181112173627.GU9144@intel.com> References: <20181112171242.7640-1-tvrtko.ursulin@linux.intel.com> <20181112171242.7640-3-tvrtko.ursulin@linux.intel.com> 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 ESMTPS id 6B5D689C56 for ; Mon, 12 Nov 2018 17:36:31 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181112171242.7640-3-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Jani Nikula , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBOb3YgMTIsIDIwMTggYXQgMDU6MTI6MzdQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBJZGVhIG9mIHJ1bnRpbWUgZGV2aWNlIGluZm8gaXMgdG8gY29udGFpbiBhbGwgZmllbGRz IGZyb20gdGhlIGV4aXN0aW5nCj4gZGV2aWNlIGluZm8gd2hpY2ggYXJlIG1vZGlmaWVkIGF0IHJ1 bnRpbWUuCj4gCj4gSW5pdGlhbGx5IHdlIG1vdmUgdGhlcmUgZmllbGRzIHdoaWNoIGFyZSBuZXZl ciBzZXQgZnJvbSB0aGUgc3RhdGljCj4gdGFibGVzIGllLjogbnVtX3JpbmdzLCBudW1fc3ByaXRl cywgbnVtX3NjYWxlcnMsCgpJZiB3ZSBhY2NlcHQgdGhhdCBudW1fc3ByaXRlc1tmdXNlZF9vZmZf cGlwZV0gY2FuIGJlIG5vbi16ZXJvCndlIGNvdWxkIGtlZXAgbnVtX3Nwcml0ZXMgYW5kIG51bV9z Y2FsZXJzIGluIHRoZSBzdGF0aWMgaW5mby4KSSBkb24ndCAqdGhpbmsqIHdlIGhhdmUgYW55IGNv ZGUgdGhhdCB3b3VsZCByZWx5IG9uIHRob3NlIGJlaW5nCnplcm8uCgo+IGNzX3RpbWVzdGFtcF9m cmVxdWVuY3lfa2h6LCBzc2V1IGFuZCBoYXNfcG9vbGVkX2V1Lgo+IAo+IFNpZ25lZC1vZmYtYnk6 IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gQ2M6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5u aWt1bGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyAgICAgICAgICAgfCAyNyArKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYyAgICAgICAgICAgICAgIHwgMTcgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgICAgICAgICAgfCAgMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5jICAgICAgICAgfCAxOSArKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5oICAgICAgICAgfCAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcGVyZi5jICAgICAgICAgICAgICB8ICA1ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcXVlcnkuYyAgICAgICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RldmljZV9pbmZvLmMgICAgICB8IDgyICsrKysrKysrKysrLS0tLS0tLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaCAgICAgIHwgNDIgKysrKysrLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgICAgfCAgMiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmggICAgICAgICAgfCAgNiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgICAgICAgfCAgNCArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgfCAxNCArKy0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgICAgICB8ICAyICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICAgICB8ICA0ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICAgICB8ICA0ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMgICAgICB8ICA2ICst Cj4gIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8ICA2ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYyAgICB8ICA0ICst Cj4gIDE5IGZpbGVzIGNoYW5nZWQsIDE0NCBpbnNlcnRpb25zKCspLCAxMDYgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA2NzBkYjUwNzNkNzAu LjFiOGEzZjIwM2I5MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAg LTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGludCBpOTE1X2NhcGFiaWxpdGllcyhzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKmRhdGEpCj4gIAlzZXFfcHJpbnRmKG0sICJwY2g6ICVkXG4iLCBJTlRFTF9Q Q0hfVFlQRShkZXZfcHJpdikpOwo+ICAKPiAgCWludGVsX2RldmljZV9pbmZvX2R1bXBfZmxhZ3Mo aW5mbywgJnApOwo+IC0JaW50ZWxfZGV2aWNlX2luZm9fZHVtcF9ydW50aW1lKGluZm8sICZwKTsK PiArCWludGVsX2RldmljZV9pbmZvX2R1bXBfcnVudGltZSgmZGV2X3ByaXYtPnJ1bnRpbWVfaW5m bywgJnApOwo+ICAJaW50ZWxfZHJpdmVyX2NhcHNfcHJpbnQoJmRldl9wcml2LT5jYXBzLCAmcCk7 Cj4gIAo+ICAJa2VybmVsX3BhcmFtX2xvY2soVEhJU19NT0RVTEUpOwo+IEBAIC0zMjg5LDcgKzMy ODksNyBAQCBzdGF0aWMgaW50IGk5MTVfZW5naW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCj4gIAlzZXFfcHJpbnRmKG0sICJHbG9iYWwgYWN0aXZlIHJlcXVlc3RzOiAl ZFxuIiwKPiAgCQkgICBkZXZfcHJpdi0+Z3QuYWN0aXZlX3JlcXVlc3RzKTsKPiAgCXNlcV9wcmlu dGYobSwgIkNTIHRpbWVzdGFtcCBmcmVxdWVuY3k6ICV1IGtIelxuIiwKPiAtCQkgICBkZXZfcHJp di0+aW5mby5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2toeik7Cj4gKwkJICAgZGV2X3ByaXYtPnJ1 bnRpbWVfaW5mby5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2toeik7Cj4gIAo+ICAJcCA9IGRybV9z ZXFfZmlsZV9wcmludGVyKG0pOwo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYs IGlkKQo+IEBAIC0zMzA1LDcgKzMzMDUsNyBAQCBzdGF0aWMgaW50IGk5MTVfcmNzX3RvcG9sb2d5 KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ICAJc3RydWN0IGRy bV9wcmludGVyIHAgPSBkcm1fc2VxX2ZpbGVfcHJpbnRlcihtKTsKPiAgCj4gLQlpbnRlbF9kZXZp Y2VfaW5mb19kdW1wX3RvcG9sb2d5KCZJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldSwgJnApOwo+ ICsJaW50ZWxfZGV2aWNlX2luZm9fZHVtcF90b3BvbG9neSgmZGV2X3ByaXYtPnJ1bnRpbWVfaW5m by5zc2V1LCAmcCk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtNDM0MSw3ICs0MzQxLDcg QEAgc3RhdGljIHZvaWQgZ2VuMTBfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAgICAgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUp Cj4gIHsKPiAgI2RlZmluZSBTU19NQVggNgo+IC0JY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9p bmZvICppbmZvID0gSU5URUxfSU5GTyhkZXZfcHJpdik7Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxf cnVudGltZV9kZXZpY2VfaW5mbyAqaW5mbyA9ICZkZXZfcHJpdi0+cnVudGltZV9pbmZvOwo+ICAJ dTMyIHNfcmVnW1NTX01BWF0sIGV1X3JlZ1syICogU1NfTUFYXSwgZXVfbWFza1syXTsKPiAgCWlu dCBzLCBzczsKPiAgCj4gQEAgLTQzOTcsNyArNDM5Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3Nl dV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJ CSAgICBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSkKPiAgewo+ICAjZGVmaW5lIFNTX01BWCAz Cj4gLQljb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8gPSBJTlRFTF9JTkZPKGRl dl9wcml2KTsKPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9ydW50aW1lX2RldmljZV9pbmZvICppbmZv ID0gJmRldl9wcml2LT5ydW50aW1lX2luZm87Cj4gIAl1MzIgc19yZWdbU1NfTUFYXSwgZXVfcmVn WzIgKiBTU19NQVhdLCBldV9tYXNrWzJdOwo+ICAJaW50IHMsIHNzOwo+ICAKPiBAQCAtNDQyNCw4 ICs0NDI0LDcgQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMp Owo+ICAKPiAgCQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4gLQkJCXNzZXUtPnN1YnNsaWNl X21hc2tbc10gPQo+IC0JCQkJSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfbWFz a1tzXTsKPiArCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IGluZm8tPnNzZXUuc3Vic2xpY2Vf bWFza1tzXTsKPiAgCj4gIAkJZm9yIChzcyA9IDA7IHNzIDwgaW5mby0+c3NldS5tYXhfc3Vic2xp Y2VzOyBzcysrKSB7Cj4gIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7Cj4gQEAgLTQ0NTksMTAgKzQ0 NTgsMTAgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfZGV2aWNlX3N0YXR1cyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICAJaWYgKHNzZXUtPnNsaWNlX21hc2sp IHsKPiAgCQlzc2V1LT5ldV9wZXJfc3Vic2xpY2UgPQo+IC0JCQkJSU5URUxfSU5GTyhkZXZfcHJp diktPnNzZXUuZXVfcGVyX3N1YnNsaWNlOwo+ICsJCQlkZXZfcHJpdi0+cnVudGltZV9pbmZvLnNz ZXUuZXVfcGVyX3N1YnNsaWNlOwo+ICAJCWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xpY2Vf bWFzayk7IHMrKykgewo+ICAJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0KPiAtCQkJCUlOVEVM X0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2tbc107Cj4gKwkJCQlkZXZfcHJpdi0+ cnVudGltZV9pbmZvLnNzZXUuc3Vic2xpY2VfbWFza1tzXTsKPiAgCQl9Cj4gIAkJc3NldS0+ZXVf dG90YWwgPSBzc2V1LT5ldV9wZXJfc3Vic2xpY2UgKgo+ICAJCQkJIHNzZXVfc3Vic2xpY2VfdG90 YWwoc3NldSk7Cj4gQEAgLTQ0NzAsNyArNDQ2OSw3IEBAIHN0YXRpYyB2b2lkIGJyb2Fkd2VsbF9z c2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CS8qIHN1YnRyYWN0IGZ1c2VkIG9mZiBFVShzKSBmcm9tIGVuYWJsZWQgc2xpY2UocykgKi8KPiAg CQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBzKyspIHsKPiAgCQkJdTgg c3Vic2xpY2VfN2V1ID0KPiAtCQkJCUlOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNl XzdldVtzXTsKPiArCQkJCWRldl9wcml2LT5ydW50aW1lX2luZm8uc3NldS5zdWJzbGljZV83ZXVb c107Cj4gIAo+ICAJCQlzc2V1LT5ldV90b3RhbCAtPSBod2VpZ2h0OChzdWJzbGljZV83ZXUpOwo+ ICAJCX0KPiBAQCAtNDUyMywxNCArNDUyMiwxNCBAQCBzdGF0aWMgaW50IGk5MTVfc3NldV9zdGF0 dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAkJcmV0dXJuIC1FTk9ERVY7 Cj4gIAo+ICAJc2VxX3B1dHMobSwgIlNTRVUgRGV2aWNlIEluZm9cbiIpOwo+IC0JaTkxNV9wcmlu dF9zc2V1X2luZm8obSwgdHJ1ZSwgJklOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1KTsKPiArCWk5 MTVfcHJpbnRfc3NldV9pbmZvKG0sIHRydWUsICZkZXZfcHJpdi0+cnVudGltZV9pbmZvLnNzZXUp Owo+ICAKPiAgCXNlcV9wdXRzKG0sICJTU0VVIERldmljZSBTdGF0dXNcbiIpOwo+ICAJbWVtc2V0 KCZzc2V1LCAwLCBzaXplb2Yoc3NldSkpOwo+IC0Jc3NldS5tYXhfc2xpY2VzID0gSU5URUxfSU5G TyhkZXZfcHJpdiktPnNzZXUubWF4X3NsaWNlczsKPiAtCXNzZXUubWF4X3N1YnNsaWNlcyA9IElO VEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9zdWJzbGljZXM7Cj4gKwlzc2V1Lm1heF9zbGlj ZXMgPSBkZXZfcHJpdi0+cnVudGltZV9pbmZvLnNzZXUubWF4X3NsaWNlczsKPiArCXNzZXUubWF4 X3N1YnNsaWNlcyA9IGRldl9wcml2LT5ydW50aW1lX2luZm8uc3NldS5tYXhfc3Vic2xpY2VzOwo+ ICAJc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9Cj4gLQkJSU5URUxfSU5GTyhkZXZfcHJpdikt PnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7Cj4gKwkJZGV2X3ByaXYtPnJ1bnRpbWVfaW5mby5z c2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOwo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggYjFkMjNjNzNjMTQ3 Li45Y2ZkNWIxNDUyNDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtMzU3LDEy ICszNTcsMTIgQEAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJdmFsdWUgPSBpOTE1X2NtZF9wYXJzZXJfZ2V0X3Zl cnNpb24oZGV2X3ByaXYpOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSBJOTE1X1BBUkFNX1NVQlNMSUNF X1RPVEFMOgo+IC0JCXZhbHVlID0gc3NldV9zdWJzbGljZV90b3RhbCgmSU5URUxfSU5GTyhkZXZf cHJpdiktPnNzZXUpOwo+ICsJCXZhbHVlID0gc3NldV9zdWJzbGljZV90b3RhbCgmZGV2X3ByaXYt PnJ1bnRpbWVfaW5mby5zc2V1KTsKPiAgCQlpZiAoIXZhbHVlKQo+ICAJCQlyZXR1cm4gLUVOT0RF VjsKPiAgCQlicmVhazsKPiAgCWNhc2UgSTkxNV9QQVJBTV9FVV9UT1RBTDoKPiAtCQl2YWx1ZSA9 IElOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LmV1X3RvdGFsOwo+ICsJCXZhbHVlID0gZGV2X3By aXYtPnJ1bnRpbWVfaW5mby5zc2V1LmV1X3RvdGFsOwo+ICAJCWlmICghdmFsdWUpCj4gIAkJCXJl dHVybiAtRU5PREVWOwo+ICAJCWJyZWFrOwo+IEBAIC0zNzksNyArMzc5LDcgQEAgc3RhdGljIGlu dCBpOTE1X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs Cj4gIAkJdmFsdWUgPSBIQVNfUE9PTEVEX0VVKGRldl9wcml2KTsKPiAgCQlicmVhazsKPiAgCWNh c2UgSTkxNV9QQVJBTV9NSU5fRVVfSU5fUE9PTDoKPiAtCQl2YWx1ZSA9IElOVEVMX0lORk8oZGV2 X3ByaXYpLT5zc2V1Lm1pbl9ldV9pbl9wb29sOwo+ICsJCXZhbHVlID0gZGV2X3ByaXYtPnJ1bnRp bWVfaW5mby5zc2V1Lm1pbl9ldV9pbl9wb29sOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSBJOTE1X1BB UkFNX0hVQ19TVEFUVVM6Cj4gIAkJdmFsdWUgPSBpbnRlbF9odWNfY2hlY2tfc3RhdHVzKCZkZXZf cHJpdi0+aHVjKTsKPiBAQCAtNDI5LDE3ICs0MjksMTggQEAgc3RhdGljIGludCBpOTE1X2dldHBh cmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJdmFsdWUg PSBpbnRlbF9lbmdpbmVzX2hhc19jb250ZXh0X2lzb2xhdGlvbihkZXZfcHJpdik7Cj4gIAkJYnJl YWs7Cj4gIAljYXNlIEk5MTVfUEFSQU1fU0xJQ0VfTUFTSzoKPiAtCQl2YWx1ZSA9IElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5zc2V1LnNsaWNlX21hc2s7Cj4gKwkJdmFsdWUgPSBkZXZfcHJpdi0+cnVu dGltZV9pbmZvLnNzZXUuc2xpY2VfbWFzazsKPiAgCQlpZiAoIXZhbHVlKQo+ICAJCQlyZXR1cm4g LUVOT0RFVjsKPiAgCQlicmVhazsKPiAgCWNhc2UgSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNLOgo+ IC0JCXZhbHVlID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfbWFza1swXTsK PiArCQl2YWx1ZSA9IGRldl9wcml2LT5ydW50aW1lX2luZm8uc3NldS5zdWJzbGljZV9tYXNrWzBd Owo+ICAJCWlmICghdmFsdWUpCj4gIAkJCXJldHVybiAtRU5PREVWOwo+ICAJCWJyZWFrOwo+ICAJ Y2FzZSBJOTE1X1BBUkFNX0NTX1RJTUVTVEFNUF9GUkVRVUVOQ1k6Cj4gLQkJdmFsdWUgPSAxMDAw ICogSU5URUxfSU5GTyhkZXZfcHJpdiktPmNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfa2h6Owo+ICsJ CXZhbHVlID0gMTAwMCAqCj4gKwkJCWRldl9wcml2LT5ydW50aW1lX2luZm8uY3NfdGltZXN0YW1w X2ZyZXF1ZW5jeV9raHo7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIEk5MTVfUEFSQU1fTU1BUF9HVFRf Q09IRVJFTlQ6Cj4gIAkJdmFsdWUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+aGFzX2NvaGVyZW50 X2dndHQ7Cj4gQEAgLTEzNzIsNyArMTM3Myw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5p dF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpZiAoaTkxNV9pbmpl Y3RfbG9hZF9mYWlsdXJlKCkpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+IC0JaW50ZWxfZGV2 aWNlX2luZm9fcnVudGltZV9pbml0KG1rd3JpdGVfZGV2aWNlX2luZm8oZGV2X3ByaXYpKTsKPiAr CWludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChkZXZfcHJpdik7Cj4gIAo+ICAJaWYgKEhB U19QUEdUVChkZXZfcHJpdikpIHsKPiAgCQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYp ICYmCj4gQEAgLTE2MjAsNyArMTYyMSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfd2VsY29tZV9tZXNz YWdlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJc3RydWN0IGRybV9w cmludGVyIHAgPSBkcm1fZGVidWdfcHJpbnRlcigiaTkxNSBkZXZpY2UgaW5mbzoiKTsKPiAgCj4g IAkJaW50ZWxfZGV2aWNlX2luZm9fZHVtcCgmZGV2X3ByaXYtPmluZm8sICZwKTsKPiAtCQlpbnRl bF9kZXZpY2VfaW5mb19kdW1wX3J1bnRpbWUoJmRldl9wcml2LT5pbmZvLCAmcCk7Cj4gKwkJaW50 ZWxfZGV2aWNlX2luZm9fZHVtcF9ydW50aW1lKCZkZXZfcHJpdi0+cnVudGltZV9pbmZvLCAmcCk7 Cj4gIAl9Cj4gIAo+ICAJaWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHKSkKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAwOGQyNWFhNDgwZjcuLmY2NzdhOTkzNmQzMyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNTg5LDYgKzE1ODksNyBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAlzdHJ1Y3Qga21lbV9jYWNoZSAqcHJpb3JpdGllczsK PiAgCj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW5mbzsKPiArCXN0cnVjdCBp bnRlbF9ydW50aW1lX2RldmljZV9pbmZvIHJ1bnRpbWVfaW5mbzsKPiAgCXN0cnVjdCBpbnRlbF9k cml2ZXJfY2FwcyBjYXBzOwo+ICAKPiAgCS8qKgo+IEBAIC0yNjYzLDcgKzI2NjQsNyBAQCBpbnRl bF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgI2RlZmlu ZSBVU0VTX0dVQ19TVUJNSVNTSU9OKGRldl9wcml2KQlpbnRlbF91Y19pc191c2luZ19ndWNfc3Vi bWlzc2lvbigpCj4gICNkZWZpbmUgVVNFU19IVUMoZGV2X3ByaXYpCQlpbnRlbF91Y19pc191c2lu Z19odWMoKQo+ICAKPiAtI2RlZmluZSBIQVNfUE9PTEVEX0VVKGRldl9wcml2KQkoKGRldl9wcml2 KS0+aW5mby5oYXNfcG9vbGVkX2V1KQo+ICsjZGVmaW5lIEhBU19QT09MRURfRVUoZGV2X3ByaXYp CSgoZGV2X3ByaXYpLT5ydW50aW1lX2luZm8uaGFzX3Bvb2xlZF9ldSkKPiAgCj4gICNkZWZpbmUg SU5URUxfUENIX0RFVklDRV9JRF9NQVNLCQkweGZmODAKPiAgI2RlZmluZSBJTlRFTF9QQ0hfSUJY X0RFVklDRV9JRF9UWVBFCQkweDNiMDAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKPiBpbmRleCBjOGQ4Zjc5Njg4YTguLjNlODcyYmIxZjAwYSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC01ODksMTUgKzU4OSwxOCBAQCBzdGF0aWMgdm9p ZCBwcmludF9lcnJvcl9vYmooc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiAg CWVycl9wdXRzKG0sICJcbiIpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBlcnJfcHJpbnRfY2Fw YWJpbGl0aWVzKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gLQkJCQkgICBj b25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8sCj4gLQkJCQkgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfZHJpdmVyX2NhcHMgKmNhcHMpCj4gK3N0YXRpYyB2b2lkCj4gK2Vycl9wcmludF9j YXBhYmlsaXRpZXMoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiArCQkgICAg ICAgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbmZvLAo+ICsJCSAgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9kZXZpY2VfaW5mbyAqcnVudGltZV9pbmZvLAo+ICsJCSAg ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZHJpdmVyX2NhcHMgKmNhcHMpCj4gIHsKPiAgCXN0cnVj dCBkcm1fcHJpbnRlciBwID0gaTkxNV9lcnJvcl9wcmludGVyKG0pOwo+ICAKPiAgCWludGVsX2Rl dmljZV9pbmZvX2R1bXBfZmxhZ3MoaW5mbywgJnApOwo+ICsJaW50ZWxfZGV2aWNlX2luZm9fZHVt cF9ydW50aW1lKHJ1bnRpbWVfaW5mbywgJnApOwo+ICAJaW50ZWxfZHJpdmVyX2NhcHNfcHJpbnQo Y2FwcywgJnApOwo+IC0JaW50ZWxfZGV2aWNlX2luZm9fZHVtcF90b3BvbG9neSgmaW5mby0+c3Nl dSwgJnApOwo+ICsJaW50ZWxfZGV2aWNlX2luZm9fZHVtcF90b3BvbG9neSgmcnVudGltZV9pbmZv LT5zc2V1LCAmcCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGVycl9wcmludF9wYXJhbXMoc3Ry dWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiBAQCAtODI5LDcgKzgzMiwxMCBAQCBp bnQgaTkxNV9lcnJvcl9zdGF0ZV90b19zdHIoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1 ZiAqbSwKPiAgCWlmIChlcnJvci0+ZGlzcGxheSkKPiAgCQlpbnRlbF9kaXNwbGF5X3ByaW50X2Vy cm9yX3N0YXRlKG0sIGVycm9yLT5kaXNwbGF5KTsKPiAgCj4gLQllcnJfcHJpbnRfY2FwYWJpbGl0 aWVzKG0sICZlcnJvci0+ZGV2aWNlX2luZm8sICZlcnJvci0+ZHJpdmVyX2NhcHMpOwo+ICsJZXJy X3ByaW50X2NhcGFiaWxpdGllcyhtLAo+ICsJCQkgICAgICAgJmVycm9yLT5kZXZpY2VfaW5mbywK PiArCQkJICAgICAgICZlcnJvci0+cnVudGltZV9kZXZpY2VfaW5mbywKPiArCQkJICAgICAgICZl cnJvci0+ZHJpdmVyX2NhcHMpOwo+ICAJZXJyX3ByaW50X3BhcmFtcyhtLCAmZXJyb3ItPnBhcmFt cyk7Cj4gIAllcnJfcHJpbnRfdWMobSwgJmVycm9yLT51Yyk7Cj4gIAo+IEBAIC0xNzUxLDYgKzE3 NTcsOSBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX2dlbl9zdGF0ZShzdHJ1Y3QgaTkxNV9ncHVfc3Rh dGUgKmVycm9yKQo+ICAJbWVtY3B5KCZlcnJvci0+ZGV2aWNlX2luZm8sCj4gIAkgICAgICAgSU5U RUxfSU5GTyhpOTE1KSwKPiAgCSAgICAgICBzaXplb2YoZXJyb3ItPmRldmljZV9pbmZvKSk7Cj4g KwltZW1jcHkoJmVycm9yLT5ydW50aW1lX2RldmljZV9pbmZvLAo+ICsJICAgICAgICZpOTE1LT5y dW50aW1lX2luZm8sCj4gKwkgICAgICAgc2l6ZW9mKGVycm9yLT5ydW50aW1lX2RldmljZV9pbmZv KSk7Cj4gIAllcnJvci0+ZHJpdmVyX2NhcHMgPSBpOTE1LT5jYXBzOwo+ICB9Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuaAo+IGluZGV4IDg3MTBmYjE4ZWQ3NC4uZWRlOWFh NWFlMWEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCj4gQEAgLTQ1 LDYgKzQ1LDcgQEAgc3RydWN0IGk5MTVfZ3B1X3N0YXRlIHsKPiAgCXUzMiByZXNldF9jb3VudDsK PiAgCXUzMiBzdXNwZW5kX2NvdW50Owo+ICAJc3RydWN0IGludGVsX2RldmljZV9pbmZvIGRldmlj ZV9pbmZvOwo+ICsJc3RydWN0IGludGVsX3J1bnRpbWVfZGV2aWNlX2luZm8gcnVudGltZV9kZXZp Y2VfaW5mbzsKPiAgCXN0cnVjdCBpbnRlbF9kcml2ZXJfY2FwcyBkcml2ZXJfY2FwczsKPiAgCXN0 cnVjdCBpOTE1X3BhcmFtcyBwYXJhbXM7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4g aW5kZXggMmMyYjYzYmU3YTZjLi45MDU0MjM3MjUxYzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmYuYwo+IEBAIC0yNjQ2LDcgKzI2NDYsOCBAQCBpOTE1X3BlcmZfb3Blbl9pb2N0bF9sb2Nr ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICBzdGF0aWMgdTY0IG9hX2V4 cG9uZW50X3RvX25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGV4cG9u ZW50KQo+ICB7Cj4gIAlyZXR1cm4gZGl2NjRfdTY0KDEwMDAwMDAwMDBVTEwgKiAoMlVMTCA8PCBl eHBvbmVudCksCj4gLQkJCSAxMDAwVUxMICogSU5URUxfSU5GTyhkZXZfcHJpdiktPmNzX3RpbWVz dGFtcF9mcmVxdWVuY3lfa2h6KTsKPiArCQkJIDEwMDBVTEwgKgo+ICsJCQkgZGV2X3ByaXYtPnJ1 bnRpbWVfaW5mby5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2toeik7Cj4gIH0KPiAgCj4gIHN0YXRp YyBpbnQKPiBAQCAtMzUwNSw3ICszNTA2LDcgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJc3Bpbl9sb2NrX2luaXQoJmRldl9wcml2 LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jayk7Cj4gIAo+ICAJCW9hX3NhbXBsZV9yYXRlX2hh cmRfbGltaXQgPSAxMDAwICoKPiAtCQkJKElOVEVMX0lORk8oZGV2X3ByaXYpLT5jc190aW1lc3Rh bXBfZnJlcXVlbmN5X2toeiAvIDIpOwo+ICsJCQkoZGV2X3ByaXYtPnJ1bnRpbWVfaW5mby5jc190 aW1lc3RhbXBfZnJlcXVlbmN5X2toeiAvIDIpOwo+ICAJCWRldl9wcml2LT5wZXJmLnN5c2N0bF9o ZWFkZXIgPSByZWdpc3Rlcl9zeXNjdGxfdGFibGUoZGV2X3Jvb3QpOwo+ICAKPiAgCQltdXRleF9p bml0KCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xvY2spOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1 ZXJ5LmMKPiBpbmRleCA2ZmM0YjhlZWFiNDIuLjZiMmM2ZTY4NzNkMyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3F1ZXJ5LmMKPiBAQCAtMTMsNyArMTMsNyBAQAo+ICBzdGF0aWMgaW50IHF1ZXJ5 X3RvcG9sb2d5X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkg ICAgICAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gKnF1ZXJ5X2l0ZW0pCj4gIHsKPiAtCWNv bnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJklOVEVMX0lORk8oZGV2X3ByaXYpLT5z c2V1Owo+ICsJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmZGV2X3ByaXYtPnJ1 bnRpbWVfaW5mby5zc2V1Owo+ICAJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X3RvcG9sb2d5X2luZm8g dG9wbzsKPiAgCXUzMiBzbGljZV9sZW5ndGgsIHN1YnNsaWNlX2xlbmd0aCwgZXVfbGVuZ3RoLCB0 b3RhbF9sZW5ndGg7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8u Ywo+IGluZGV4IDg5ZWQzYTg0YTRmYS4uODM4NTc2N2FhZjA4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gQEAgLTc5LDYgKzc5LDE1IEBAIHZvaWQgaW50 ZWxfZGV2aWNlX2luZm9fZHVtcF9mbGFncyhjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8g KmluZm8sCj4gICN1bmRlZiBQUklOVF9GTEFHCj4gIH0KPiAgCj4gK3ZvaWQKPiAraW50ZWxfcnVu dGltZV9kZXZpY2VfaW5mb19kdW1wX2ZsYWdzKGNvbnN0IHN0cnVjdCBpbnRlbF9ydW50aW1lX2Rl dmljZV9pbmZvICppbmZvLAo+ICsJCQkJICAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCj4gK3sK PiArI2RlZmluZSBQUklOVF9GTEFHKG5hbWUpIGRybV9wcmludGYocCwgIiVzOiAlc1xuIiwgI25h bWUsIHllc25vKGluZm8tPm5hbWUpKTsKPiArCURFVl9SVU5USU1FX0lORk9fRk9SX0VBQ0hfRkxB RyhQUklOVF9GTEFHKTsKPiArI3VuZGVmIFBSSU5UX0ZMQUcKPiArfQo+ICsKPiAgc3RhdGljIHZv aWQgc3NldV9kdW1wKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBzdHJ1Y3QgZHJt X3ByaW50ZXIgKnApCj4gIHsKPiAgCWludCBzOwo+IEBAIC0xMDAsMTMgKzEwOSwxNiBAQCBzdGF0 aWMgdm9pZCBzc2V1X2R1bXAoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHN0cnVj dCBkcm1fcHJpbnRlciAqcCkKPiAgCWRybV9wcmludGYocCwgImhhcyBFVSBwb3dlciBnYXRpbmc6 ICVzXG4iLCB5ZXNubyhzc2V1LT5oYXNfZXVfcGcpKTsKPiAgfQo+ICAKPiAtdm9pZCBpbnRlbF9k ZXZpY2VfaW5mb19kdW1wX3J1bnRpbWUoY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvICpp bmZvLAo+IC0JCQkJICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKPiArdm9pZAo+ICtpbnRlbF9k ZXZpY2VfaW5mb19kdW1wX3J1bnRpbWUoY29uc3Qgc3RydWN0IGludGVsX3J1bnRpbWVfZGV2aWNl X2luZm8gKmluZm8sCj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCj4gIHsKPiAg CXNzZXVfZHVtcCgmaW5mby0+c3NldSwgcCk7Cj4gIAo+ICAJZHJtX3ByaW50ZihwLCAiQ1MgdGlt ZXN0YW1wIGZyZXF1ZW5jeTogJXUga0h6XG4iLAo+ICAJCSAgIGluZm8tPmNzX3RpbWVzdGFtcF9m cmVxdWVuY3lfa2h6KTsKPiArCj4gKwlpbnRlbF9ydW50aW1lX2RldmljZV9pbmZvX2R1bXBfZmxh Z3MoaW5mbywgcCk7Cj4gIH0KPiAgCj4gIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fZHVtcChjb25z dCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8sCj4gQEAgLTE2MCw3ICsxNzIsNyBAQCBz dGF0aWMgdTE2IGNvbXB1dGVfZXVfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUpCj4gIAo+ICBzdGF0aWMgdm9pZCBnZW4xMV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1 ID0gJm1rd3JpdGVfZGV2aWNlX2luZm8oZGV2X3ByaXYpLT5zc2V1Owo+ICsJc3RydWN0IHNzZXVf ZGV2X2luZm8gKnNzZXUgPSAmZGV2X3ByaXYtPnJ1bnRpbWVfaW5mby5zc2V1Owo+ICAJdTggc19l bjsKPiAgCXUzMiBzc19lbiwgc3NfZW5fbWFzazsKPiAgCXU4IGV1X2VuOwo+IEBAIC0xOTksNyAr MjExLDcgQEAgc3RhdGljIHZvaWQgZ2VuMTFfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgc3RhdGljIHZvaWQgZ2VuMTBfc3NldV9pbmZvX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSA9ICZta3dyaXRlX2RldmljZV9pbmZvKGRldl9wcml2KS0+c3NldTsK PiArCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJmRldl9wcml2LT5ydW50aW1lX2luZm8u c3NldTsKPiAgCWNvbnN0IHUzMiBmdXNlMiA9IEk5MTVfUkVBRChHRU44X0ZVU0UyKTsKPiAgCWlu dCBzLCBzczsKPiAgCWNvbnN0IGludCBldV9tYXNrID0gMHhmZjsKPiBAQCAtMjc2LDcgKzI4OCw3 IEBAIHN0YXRpYyB2b2lkIGdlbjEwX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCj4gIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfc3NldV9pbmZvX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSA9ICZta3dyaXRlX2RldmljZV9pbmZvKGRldl9wcml2KS0+c3NldTsK PiArCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJmRldl9wcml2LT5ydW50aW1lX2luZm8u c3NldTsKPiAgCXUzMiBmdXNlOwo+ICAKPiAgCWZ1c2UgPSBJOTE1X1JFQUQoQ0hWX0ZVU0VfR1Qp Owo+IEBAIC0zMjksNyArMzQxLDcgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9f aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICBzdGF0aWMgdm9p ZCBnZW45X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgewo+IC0Jc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbmZvID0gbWt3cml0ZV9kZXZpY2Vf aW5mbyhkZXZfcHJpdik7Cj4gKwlzdHJ1Y3QgaW50ZWxfcnVudGltZV9kZXZpY2VfaW5mbyAqaW5m byA9ICZkZXZfcHJpdi0+cnVudGltZV9pbmZvOwo+ICAJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUgPSAmaW5mby0+c3NldTsKPiAgCWludCBzLCBzczsKPiAgCXUzMiBmdXNlMiwgZXVfZGlzYWJs ZSwgc3Vic2xpY2VfbWFzazsKPiBAQCAtNDMzLDcgKzQ0NSw3IEBAIHN0YXRpYyB2b2lkIGdlbjlf c3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAg c3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgewo+IC0Jc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmbWt3 cml0ZV9kZXZpY2VfaW5mbyhkZXZfcHJpdiktPnNzZXU7Cj4gKwlzdHJ1Y3Qgc3NldV9kZXZfaW5m byAqc3NldSA9ICZkZXZfcHJpdi0+cnVudGltZV9pbmZvLnNzZXU7Cj4gIAlpbnQgcywgc3M7Cj4g IAl1MzIgZnVzZTIsIHN1YnNsaWNlX21hc2ssIGV1X2Rpc2FibGVbM107IC8qIHNfbWF4ICovCj4g IAo+IEBAIC01MTUsOCArNTI3LDcgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfaW5mb19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIHN0YXRpYyB2b2lk IGhhc3dlbGxfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8gPSBta3dyaXRlX2Rldmlj ZV9pbmZvKGRldl9wcml2KTsKPiAtCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJmluZm8t PnNzZXU7Cj4gKwlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZkZXZfcHJpdi0+cnVudGlt ZV9pbmZvLnNzZXU7Cj4gIAl1MzIgZnVzZTE7Cj4gIAlpbnQgcywgc3M7Cj4gIAo+IEBAIC01MjQs OSArNTM1LDkgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkgKiBUaGVyZSBpc24ndCBhIHJlZ2lzdGVyIHRv IHRlbGwgdXMgaG93IG1hbnkgc2xpY2VzL3N1YnNsaWNlcy4gV2UKPiAgCSAqIHdvcmsgb2ZmIHRo ZSBQQ0ktaWRzIGhlcmUuCj4gIAkgKi8KPiAtCXN3aXRjaCAoaW5mby0+Z3QpIHsKPiArCXN3aXRj aCAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmd0KSB7Cj4gIAlkZWZhdWx0Ogo+IC0JCU1JU1NJTkdf Q0FTRShpbmZvLT5ndCk7Cj4gKwkJTUlTU0lOR19DQVNFKElOVEVMX0lORk8oZGV2X3ByaXYpLT5n dCk7Cj4gIAkJLyogZmFsbCB0aHJvdWdoICovCj4gIAljYXNlIDE6Cj4gIAkJc3NldS0+c2xpY2Vf bWFzayA9IEJJVCgwKTsKPiBAQCAtNzM1LDI5ICs3NDYsMzAgQEAgc3RhdGljIHUzMiByZWFkX3Rp bWVzdGFtcF9mcmVxdWVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAg KiAgIC0gYWZ0ZXIgdGhlIFBDSCBoYXMgYmVlbiBkZXRlY3RlZCwKPiAgICogICAtIGJlZm9yZSB0 aGUgZmlyc3QgdXNhZ2Ugb2YgdGhlIGZpZWxkcyBpdCBjYW4gdHdlYWsuCj4gICAqLwo+IC12b2lk IGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8g KmluZm8pCj4gK3ZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0KPiAtCQljb250YWluZXJfb2YoaW5mbywgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUsIGluZm8pOwo+ICsJc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbmZvID0gbWt3cml0ZV9k ZXZpY2VfaW5mbyhkZXZfcHJpdik7Cj4gKwlzdHJ1Y3QgaW50ZWxfcnVudGltZV9kZXZpY2VfaW5m byAqcnVudGltZV9pbmZvID0KPiArCQkmZGV2X3ByaXYtPnJ1bnRpbWVfaW5mbzsKPiAgCWVudW0g cGlwZSBwaXBlOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKSB7Cj4gIAkJ Zm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPiAtCQkJaW5mby0+bnVtX3NjYWxlcnNbcGlw ZV0gPSAyOwo+ICsJCQlydW50aW1lX2luZm8tPm51bV9zY2FsZXJzW3BpcGVdID0gMjsKPiAgCX0g ZWxzZSBpZiAoSVNfR0VOOShkZXZfcHJpdikpIHsKPiAtCQlpbmZvLT5udW1fc2NhbGVyc1tQSVBF X0FdID0gMjsKPiAtCQlpbmZvLT5udW1fc2NhbGVyc1tQSVBFX0JdID0gMjsKPiAtCQlpbmZvLT5u dW1fc2NhbGVyc1tQSVBFX0NdID0gMTsKPiArCQlydW50aW1lX2luZm8tPm51bV9zY2FsZXJzW1BJ UEVfQV0gPSAyOwo+ICsJCXJ1bnRpbWVfaW5mby0+bnVtX3NjYWxlcnNbUElQRV9CXSA9IDI7Cj4g KwkJcnVudGltZV9pbmZvLT5udW1fc2NhbGVyc1tQSVBFX0NdID0gMTsKPiAgCX0KPiAgCj4gIAlC VUlMRF9CVUdfT04oSTkxNV9OVU1fRU5HSU5FUyA+IEJJVFNfUEVSX1RZUEUoaW50ZWxfcmluZ19t YXNrX3QpKTsKPiAgCj4gIAlpZiAoSVNfR0VOMTEoZGV2X3ByaXYpKQo+ICAJCWZvcl9lYWNoX3Bp cGUoZGV2X3ByaXYsIHBpcGUpCj4gLQkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gNjsKPiAr CQkJcnVudGltZV9pbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDY7Cj4gIAllbHNlIGlmIChJU19H RU4xMChkZXZfcHJpdikgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJZm9yX2VhY2hf cGlwZShkZXZfcHJpdiwgcGlwZSkKPiAtCQkJaW5mby0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAzOwo+ ICsJCQlydW50aW1lX2luZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMzsKPiAgCWVsc2UgaWYgKElT X0JST1hUT04oZGV2X3ByaXYpKSB7Cj4gIAkJLyoKPiAgCQkgKiBTa3lsYWtlIGFuZCBCcm94dG9u IGN1cnJlbnRseSBkb24ndCBleHBvc2UgdGhlIHRvcG1vc3QgcGxhbmUgYXMgaXRzCj4gQEAgLTc2 OCwxNSArNzgwLDE1IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVj dCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbykKPiAgCQkgKiBkb3duIHRoZSBsaW5lLgo+ICAJCSAq Lwo+ICAKPiAtCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0FdID0gMjsKPiAtCQlpbmZvLT5udW1f c3ByaXRlc1tQSVBFX0JdID0gMjsKPiAtCQlpbmZvLT5udW1fc3ByaXRlc1tQSVBFX0NdID0gMTsK PiArCQlydW50aW1lX2luZm8tPm51bV9zcHJpdGVzW1BJUEVfQV0gPSAyOwo+ICsJCXJ1bnRpbWVf aW5mby0+bnVtX3Nwcml0ZXNbUElQRV9CXSA9IDI7Cj4gKwkJcnVudGltZV9pbmZvLT5udW1fc3By aXRlc1tQSVBFX0NdID0gMTsKPiAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQlmb3JfZWFjaF9waXBlKGRldl9wcml2 LCBwaXBlKQo+IC0JCQlpbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDI7Cj4gKwkJCXJ1bnRpbWVf aW5mby0+bnVtX3Nwcml0ZXNbcGlwZV0gPSAyOwo+ICAJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDUgfHwgSVNfRzRYKGRldl9wcml2KSkgewo+ICAJCWZvcl9lYWNoX3BpcGUoZGV2 X3ByaXYsIHBpcGUpCj4gLQkJCWluZm8tPm51bV9zcHJpdGVzW3BpcGVdID0gMTsKPiArCQkJcnVu dGltZV9pbmZvLT5udW1fc3ByaXRlc1twaXBlXSA9IDE7Cj4gIAl9Cj4gIAo+ICAJaWYgKGk5MTVf bW9kcGFyYW1zLmRpc2FibGVfZGlzcGxheSkgewo+IEBAIC04NjAsNyArODcyLDggQEAgdm9pZCBp bnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0IGludGVsX2RldmljZV9pbmZvICpp bmZvKQo+ICAJfQo+ICAKPiAgCS8qIEluaXRpYWxpemUgY29tbWFuZCBzdHJlYW0gdGltZXN0YW1w IGZyZXF1ZW5jeSAqLwo+IC0JaW5mby0+Y3NfdGltZXN0YW1wX2ZyZXF1ZW5jeV9raHogPSByZWFk X3RpbWVzdGFtcF9mcmVxdWVuY3koZGV2X3ByaXYpOwo+ICsJcnVudGltZV9pbmZvLT5jc190aW1l c3RhbXBfZnJlcXVlbmN5X2toeiA9Cj4gKwkJcmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5KGRldl9w cml2KTsKPiAgfQo+ICAKPiAgdm9pZCBpbnRlbF9kcml2ZXJfY2Fwc19wcmludChjb25zdCBzdHJ1 Y3QgaW50ZWxfZHJpdmVyX2NhcHMgKmNhcHMsCj4gQEAgLTg4MCw2ICs4OTMsOCBAQCB2b2lkIGlu dGVsX2RyaXZlcl9jYXBzX3ByaW50KGNvbnN0IHN0cnVjdCBpbnRlbF9kcml2ZXJfY2FwcyAqY2Fw cywKPiAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19pbml0X21taW8oc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8g PSBta3dyaXRlX2RldmljZV9pbmZvKGRldl9wcml2KTsKPiArCXN0cnVjdCBpbnRlbF9ydW50aW1l X2RldmljZV9pbmZvICpydW50aW1lX2luZm8gPQo+ICsJCSZkZXZfcHJpdi0+cnVudGltZV9pbmZv Owo+ICAJdTMyIG1lZGlhX2Z1c2U7Cj4gIAl1bnNpZ25lZCBpbnQgaTsKPiAgCj4gQEAgLTg4OCwy NyArOTAzLDI4IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9faW5pdF9tbWlvKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAltZWRpYV9mdXNlID0gfkk5MTVfUkVBRChH RU4xMV9HVF9WRUJPWF9WREJPWF9ESVNBQkxFKTsKPiAgCj4gLQlpbmZvLT52ZGJveF9lbmFibGUg PSBtZWRpYV9mdXNlICYgR0VOMTFfR1RfVkRCT1hfRElTQUJMRV9NQVNLOwo+IC0JaW5mby0+dmVi b3hfZW5hYmxlID0gKG1lZGlhX2Z1c2UgJiBHRU4xMV9HVF9WRUJPWF9ESVNBQkxFX01BU0spID4+ Cj4gLQkJCSAgICAgR0VOMTFfR1RfVkVCT1hfRElTQUJMRV9TSElGVDsKPiArCXJ1bnRpbWVfaW5m by0+dmRib3hfZW5hYmxlID0gbWVkaWFfZnVzZSAmIEdFTjExX0dUX1ZEQk9YX0RJU0FCTEVfTUFT SzsKPiArCXJ1bnRpbWVfaW5mby0+dmVib3hfZW5hYmxlID0KPiArCQkobWVkaWFfZnVzZSAmIEdF TjExX0dUX1ZFQk9YX0RJU0FCTEVfTUFTSykgPj4KPiArCQlHRU4xMV9HVF9WRUJPWF9ESVNBQkxF X1NISUZUOwo+ICAKPiAtCURSTV9ERUJVR19EUklWRVIoInZkYm94IGVuYWJsZTogJTA0eFxuIiwg aW5mby0+dmRib3hfZW5hYmxlKTsKPiArCURSTV9ERUJVR19EUklWRVIoInZkYm94IGVuYWJsZTog JTA0eFxuIiwgcnVudGltZV9pbmZvLT52ZGJveF9lbmFibGUpOwo+ICAJZm9yIChpID0gMDsgaSA8 IEk5MTVfTUFYX1ZDUzsgaSsrKSB7Cj4gIAkJaWYgKCFIQVNfRU5HSU5FKGRldl9wcml2LCBfVkNT KGkpKSkKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWlmICghKEJJVChpKSAmIGluZm8tPnZkYm94 X2VuYWJsZSkpIHsKPiArCQlpZiAoIShCSVQoaSkgJiBydW50aW1lX2luZm8tPnZkYm94X2VuYWJs ZSkpIHsKPiAgCQkJaW5mby0+cmluZ19tYXNrICY9IH5FTkdJTkVfTUFTSyhfVkNTKGkpKTsKPiAg CQkJRFJNX0RFQlVHX0RSSVZFUigidmNzJXUgZnVzZWQgb2ZmXG4iLCBpKTsKPiAgCQl9Cj4gIAl9 Cj4gIAo+IC0JRFJNX0RFQlVHX0RSSVZFUigidmVib3ggZW5hYmxlOiAlMDR4XG4iLCBpbmZvLT52 ZWJveF9lbmFibGUpOwo+ICsJRFJNX0RFQlVHX0RSSVZFUigidmVib3ggZW5hYmxlOiAlMDR4XG4i LCBydW50aW1lX2luZm8tPnZlYm94X2VuYWJsZSk7Cj4gIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9N QVhfVkVDUzsgaSsrKSB7Cj4gIAkJaWYgKCFIQVNfRU5HSU5FKGRldl9wcml2LCBfVkVDUyhpKSkp Cj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoIShCSVQoaSkgJiBpbmZvLT52ZWJveF9lbmFi bGUpKSB7Cj4gKwkJaWYgKCEoQklUKGkpICYgcnVudGltZV9pbmZvLT52ZWJveF9lbmFibGUpKSB7 Cj4gIAkJCWluZm8tPnJpbmdfbWFzayAmPSB+RU5HSU5FX01BU0soX1ZFQ1MoaSkpOwo+ICAJCQlE Uk1fREVCVUdfRFJJVkVSKCJ2ZWNzJXUgZnVzZWQgb2ZmXG4iLCBpKTsKPiAgCQl9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oCj4gaW5kZXggODhmOTcyMTBkYzQ5Li44 M2UxOWFjOGU0MDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2 aWNlX2luZm8uaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZv LmgKPiBAQCAtMTA1LDcgKzEwNSw2IEBAIGVudW0gaW50ZWxfcHBndHQgewo+ICAJZnVuYyhoYXNf bG9naWNhbF9yaW5nX2Vsc3EpOyBcCj4gIAlmdW5jKGhhc19sb2dpY2FsX3JpbmdfcHJlZW1wdGlv bik7IFwKPiAgCWZ1bmMoaGFzX292ZXJsYXkpOyBcCj4gLQlmdW5jKGhhc19wb29sZWRfZXUpOyBc Cj4gIAlmdW5jKGhhc19wc3IpOyBcCj4gIAlmdW5jKGhhc19yYzYpOyBcCj4gIAlmdW5jKGhhc19y YzZwKTsgXAo+IEBAIC0xNTQsOCArMTUzLDggQEAgc3RydWN0IGludGVsX2RldmljZV9pbmZvIHsK PiAgCj4gIAl1OCBnZW47Cj4gIAl1OCBndDsgLyogR1QgbnVtYmVyLCAwIGlmIHVuZGVmaW5lZCAq Lwo+IC0JdTggbnVtX3JpbmdzOwo+ICAJaW50ZWxfcmluZ19tYXNrX3QgcmluZ19tYXNrOyAvKiBS aW5ncyBzdXBwb3J0ZWQgYnkgdGhlIEhXICovCj4gKwl1OCBudW1fcGlwZXM7Cj4gIAo+ICAJZW51 bSBpbnRlbF9wbGF0Zm9ybSBwbGF0Zm9ybTsKPiAgCXUzMiBwbGF0Zm9ybV9tYXNrOwo+IEBAIC0x NjUsMTAgKzE2NCw2IEBAIHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyB7Cj4gIAo+ICAJdTMyIGRp c3BsYXlfbW1pb19vZmZzZXQ7Cj4gIAo+IC0JdTggbnVtX3BpcGVzOwo+IC0JdTggbnVtX3Nwcml0 ZXNbSTkxNV9NQVhfUElQRVNdOwo+IC0JdTggbnVtX3NjYWxlcnNbSTkxNV9NQVhfUElQRVNdOwo+ IC0KPiAgI2RlZmluZSBERUZJTkVfRkxBRyhuYW1lKSB1OCBuYW1lOjEKPiAgCURFVl9JTkZPX0ZP Ul9FQUNIX0ZMQUcoREVGSU5FX0ZMQUcpOwo+ICAjdW5kZWYgREVGSU5FX0ZMQUcKPiBAQCAtMTc5 LDE5ICsxNzQsMzMgQEAgc3RydWN0IGludGVsX2RldmljZV9pbmZvIHsKPiAgCWludCB0cmFuc19v ZmZzZXRzW0k5MTVfTUFYX1RSQU5TQ09ERVJTXTsKPiAgCWludCBjdXJzb3Jfb2Zmc2V0c1tJOTE1 X01BWF9QSVBFU107Cj4gIAo+IC0JLyogU2xpY2Uvc3Vic2xpY2UvRVUgaW5mbyAqLwo+IC0Jc3Ry dWN0IHNzZXVfZGV2X2luZm8gc3NldTsKPiArCXN0cnVjdCBjb2xvcl9sdXRzIHsKPiArCQl1MTYg ZGVnYW1tYV9sdXRfc2l6ZTsKPiArCQl1MTYgZ2FtbWFfbHV0X3NpemU7Cj4gKwl9IGNvbG9yOwo+ ICt9Owo+ICAKPiAtCXUzMiBjc190aW1lc3RhbXBfZnJlcXVlbmN5X2toejsKPiArI2RlZmluZSBE RVZfUlVOVElNRV9JTkZPX0ZPUl9FQUNIX0ZMQUcoZnVuYykgXAo+ICsJZnVuYyhoYXNfcG9vbGVk X2V1KTsgXAo+ICsKPiArc3RydWN0IGludGVsX3J1bnRpbWVfZGV2aWNlX2luZm8gewo+ICsJdW5z aWduZWQgaW50IG51bV9yaW5nczsKPiArCj4gKwl1OCBudW1fc3ByaXRlc1tJOTE1X01BWF9QSVBF U107Cj4gKwl1OCBudW1fc2NhbGVyc1tJOTE1X01BWF9QSVBFU107Cj4gIAo+ICAJLyogRW5hYmxl ZCAobm90IGZ1c2VkIG9mZikgbWVkaWEgZW5naW5lIGJpdG1hc2tzLiAqLwo+ICAJdTggdmRib3hf ZW5hYmxlOwo+ICAJdTggdmVib3hfZW5hYmxlOwo+ICAKPiAtCXN0cnVjdCBjb2xvcl9sdXRzIHsK PiAtCQl1MTYgZGVnYW1tYV9sdXRfc2l6ZTsKPiAtCQl1MTYgZ2FtbWFfbHV0X3NpemU7Cj4gLQl9 IGNvbG9yOwo+ICsJdTMyIGNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfa2h6Owo+ICsKPiArCS8qIFNs aWNlL3N1YnNsaWNlL0VVIGluZm8gKi8KPiArCXN0cnVjdCBzc2V1X2Rldl9pbmZvIHNzZXU7Cj4g Kwo+ICsjZGVmaW5lIERFRklORV9GTEFHKG5hbWUpIHU4IG5hbWU6MQo+ICsJREVWX1JVTlRJTUVf SU5GT19GT1JfRUFDSF9GTEFHKERFRklORV9GTEFHKTsKPiArI3VuZGVmIERFRklORV9GTEFHCj4g IH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfZHJpdmVyX2NhcHMgewo+IEBAIC0yNDgsMTMgKzI1Nywx NCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc3NldV9zZXRfZXVzKHN0cnVjdCBzc2V1X2Rldl9pbmZv ICpzc2V1LAo+ICAKPiAgY29uc3QgY2hhciAqaW50ZWxfcGxhdGZvcm1fbmFtZShlbnVtIGludGVs X3BsYXRmb3JtIHBsYXRmb3JtKTsKPiAgCj4gLXZvaWQgaW50ZWxfZGV2aWNlX2luZm9fcnVudGlt ZV9pbml0KHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbyk7Cj4gK3ZvaWQgaW50ZWxfZGV2 aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4gIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fZHVtcChjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNl X2luZm8gKmluZm8sCj4gIAkJCSAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwo+ICB2b2lkIGlu dGVsX2RldmljZV9pbmZvX2R1bXBfZmxhZ3MoY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZv ICppbmZvLAo+ICAJCQkJICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwo+IC12b2lkIGludGVsX2Rl dmljZV9pbmZvX2R1bXBfcnVudGltZShjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmlu Zm8sCj4gLQkJCQkgICAgc3RydWN0IGRybV9wcmludGVyICpwKTsKPiArdm9pZAo+ICtpbnRlbF9k ZXZpY2VfaW5mb19kdW1wX3J1bnRpbWUoY29uc3Qgc3RydWN0IGludGVsX3J1bnRpbWVfZGV2aWNl X2luZm8gKmluZm8sCj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwo+ICB2b2lk IGludGVsX2RldmljZV9pbmZvX2R1bXBfdG9wb2xvZ3koY29uc3Qgc3RydWN0IHNzZXVfZGV2X2lu Zm8gKnNzZXUsCj4gIAkJCQkgICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBhN2ZhMDMyMzEwYWUuLmNjMzBiZjEx NzJhZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTM4OTIs NyArMTM4OTIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXRfc2NhbGVycyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJaW50IGk7Cj4gIAo+IC0JY3J0Yy0+bnVtX3Nj YWxlcnMgPSBkZXZfcHJpdi0+aW5mby5udW1fc2NhbGVyc1tjcnRjLT5waXBlXTsKPiArCWNydGMt Pm51bV9zY2FsZXJzID0gZGV2X3ByaXYtPnJ1bnRpbWVfaW5mby5udW1fc2NhbGVyc1tjcnRjLT5w aXBlXTsKPiAgCWlmICghY3J0Yy0+bnVtX3NjYWxlcnMpCj4gIAkJcmV0dXJuOwo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gaW5kZXggNWQ1MGRlY2JjYmI1Li42MDdkZGM0 YTBiMTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gQEAgLTEwNSw3 ICsxMDUsNyBAQCBlbnVtIGk5eHhfcGxhbmVfaWQgewo+ICB9Owo+ICAKPiAgI2RlZmluZSBwbGFu ZV9uYW1lKHApICgocCkgKyAnQScpCj4gLSNkZWZpbmUgc3ByaXRlX25hbWUocCwgcykgKChwKSAq IElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fc3ByaXRlc1socCldICsgKHMpICsgJ0EnKQo+ICsj ZGVmaW5lIHNwcml0ZV9uYW1lKHAsIHMpICgocCkgKiBkZXZfcHJpdi0+cnVudGltZV9pbmZvLm51 bV9zcHJpdGVzWyhwKV0gKyAocykgKyAnQScpCj4gIAo+ICAvKgo+ICAgKiBQZXItcGlwZSBwbGFu ZSBpZGVudGlmaWVyLgo+IEBAIC0yOTQsMTIgKzI5NCwxMiBAQCBzdHJ1Y3QgaW50ZWxfbGlua19t X24gewo+ICAKPiAgI2RlZmluZSBmb3JfZWFjaF91bml2ZXJzYWxfcGxhbmUoX19kZXZfcHJpdiwg X19waXBlLCBfX3ApCQlcCj4gIAlmb3IgKChfX3ApID0gMDsJCQkJCQkJXAo+IC0JICAgICAoX19w KSA8IElOVEVMX0lORk8oX19kZXZfcHJpdiktPm51bV9zcHJpdGVzWyhfX3BpcGUpXSArIDE7CVwK PiArCSAgICAgKF9fcCkgPCAoX19kZXZfcHJpdiktPnJ1bnRpbWVfaW5mby5udW1fc3ByaXRlc1so X19waXBlKV0gKyAxO1wKPiAgCSAgICAgKF9fcCkrKykKPiAgCj4gICNkZWZpbmUgZm9yX2VhY2hf c3ByaXRlKF9fZGV2X3ByaXYsIF9fcCwgX19zKQkJCQlcCj4gIAlmb3IgKChfX3MpID0gMDsJCQkJ CQkJXAo+IC0JICAgICAoX19zKSA8IElOVEVMX0lORk8oX19kZXZfcHJpdiktPm51bV9zcHJpdGVz WyhfX3ApXTsJXAo+ICsJICAgICAoX19zKSA8IChfX2Rldl9wcml2KS0+cnVudGltZV9pbmZvLm51 bV9zcHJpdGVzWyhfX3ApXTsJXAo+ICAJICAgICAoX19zKSsrKQo+ICAKPiAgI2RlZmluZSBmb3Jf ZWFjaF9wb3J0X21hc2tlZChfX3BvcnQsIF9fcG9ydHNfbWFzaykgXAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggYmMxNDdkOWU2YzkyLi5iNDY0ZWUwYWZiODUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IEBAIC0zNjUsNyAr MzY1LDcgQEAgaW50IGludGVsX2VuZ2luZXNfaW5pdF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCQlnb3RvIGNsZWFudXA7Cj4gIAl9Cj4gIAo+IC0JZGV2aWNlX2lu Zm8tPm51bV9yaW5ncyA9IGh3ZWlnaHQzMihtYXNrKTsKPiArCWRldl9wcml2LT5ydW50aW1lX2lu Zm8ubnVtX3JpbmdzID0gaHdlaWdodDMyKG1hc2spOwo+ICAKPiAgCWk5MTVfY2hlY2tfYW5kX2Ns ZWFyX2ZhdWx0cyhkZXZfcHJpdik7Cj4gIAo+IEBAIC04MDcsNyArODA3LDcgQEAgY29uc3QgY2hh ciAqaTkxNV9jYWNoZV9sZXZlbF9zdHIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGlu dCB0eXBlKQo+ICAKPiAgdTMyIGludGVsX2NhbGN1bGF0ZV9tY3Jfc19zc19zZWxlY3Qoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSA9ICYoSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUpOwo+ICsJY29uc3Qg c3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmZGV2X3ByaXYtPnJ1bnRpbWVfaW5mby5zc2V1 Owo+ICAJdTMyIG1jcl9zX3NzX3NlbGVjdDsKPiAgCXUzMiBzbGljZSA9IGZscyhzc2V1LT5zbGlj ZV9tYXNrKTsKPiAgCXUzMiBzdWJzbGljZSA9IGZscyhzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNl XSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCAwOGZkOWIxMmU0ZDcuLmNjODk3 ZjQyOTYzNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTIzNDMsOSArMjM0 Myw5IEBAIGludCBsb2dpY2FsX3hjc19yaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICBzdGF0aWMgdTMyCj4gIG1ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWJvb2wgc3Vic2xpY2VfcGcgPSBJTlRFTF9JTkZPKGRldl9w cml2KS0+c3NldS5oYXNfc3Vic2xpY2VfcGc7Cj4gLQl1OCBzbGljZXMgPSBod2VpZ2h0OChJTlRF TF9JTkZPKGRldl9wcml2KS0+c3NldS5zbGljZV9tYXNrKTsKPiAtCXU4IHN1YnNsaWNlcyA9IGh3 ZWlnaHQ4KElOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2tbMF0pOwo+ICsJ Ym9vbCBzdWJzbGljZV9wZyA9IGRldl9wcml2LT5ydW50aW1lX2luZm8uc3NldS5oYXNfc3Vic2xp Y2VfcGc7Cj4gKwl1OCBzbGljZXMgPSBod2VpZ2h0OChkZXZfcHJpdi0+cnVudGltZV9pbmZvLnNz ZXUuc2xpY2VfbWFzayk7Cj4gKwl1OCBzdWJzbGljZXMgPSBod2VpZ2h0OChkZXZfcHJpdi0+cnVu dGltZV9pbmZvLnNzZXUuc3Vic2xpY2VfbWFza1swXSk7Cj4gIAl1MzIgcnBjcyA9IDA7Cj4gIAo+ ICAJLyoKPiBAQCAtMjM5Myw3ICsyMzkzLDcgQEAgbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCSAqIG11c3QgbWFrZSBhbiBleHBsaWNpdCByZXF1ZXN0IHRo cm91Z2ggUlBDUyBmb3IgZnVsbAo+ICAJICogZW5hYmxlbWVudC4KPiAgCSovCj4gLQlpZiAoSU5U RUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuaGFzX3NsaWNlX3BnKSB7Cj4gKwlpZiAoZGV2X3ByaXYt PnJ1bnRpbWVfaW5mby5zc2V1Lmhhc19zbGljZV9wZykgewo+ICAJCXUzMiBtYXNrLCB2YWwgPSBz bGljZXM7Cj4gIAo+ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Cj4gQEAgLTI0 MjEsMTcgKzI0MjEsMTcgQEAgbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCQlycGNzIHw9IEdFTjhfUlBDU19FTkFCTEUgfCBHRU44X1JQQ1NfU1NfQ05UX0VO QUJMRSB8IHZhbDsKPiAgCX0KPiAgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUu aGFzX2V1X3BnKSB7Cj4gKwlpZiAoZGV2X3ByaXYtPnJ1bnRpbWVfaW5mby5zc2V1Lmhhc19ldV9w Zykgewo+ICAJCXUzMiB2YWw7Cj4gIAo+IC0JCXZhbCA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5z c2V1LmV1X3Blcl9zdWJzbGljZSA8PAo+ICsJCXZhbCA9IGRldl9wcml2LT5ydW50aW1lX2luZm8u c3NldS5ldV9wZXJfc3Vic2xpY2UgPDwKPiAgCQkgICAgICBHRU44X1JQQ1NfRVVfTUlOX1NISUZU Owo+ICAJCUdFTV9CVUdfT04odmFsICYgfkdFTjhfUlBDU19FVV9NSU5fTUFTSyk7Cj4gIAkJdmFs ICY9IEdFTjhfUlBDU19FVV9NSU5fTUFTSzsKPiAgCj4gIAkJcnBjcyB8PSB2YWw7Cj4gIAo+IC0J CXZhbCA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LmV1X3Blcl9zdWJzbGljZSA8PAo+ICsJ CXZhbCA9IGRldl9wcml2LT5ydW50aW1lX2luZm8uc3NldS5ldV9wZXJfc3Vic2xpY2UgPDwKPiAg CQkgICAgICBHRU44X1JQQ1NfRVVfTUFYX1NISUZUOwo+ICAJCUdFTV9CVUdfT04odmFsICYgfkdF TjhfUlBDU19FVV9NQVhfTUFTSyk7Cj4gIAkJdmFsICY9IEdFTjhfUlBDU19FVV9NQVhfTUFTSzsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCA1ZGY3ZjZlMWFiNWUuLjE3MjcwZDhmMTg4 MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC03MzQxLDcgKzczNDEsNyBAQCBz dGF0aWMgaW50IGNoZXJyeXZpZXdfcnBzX21heF9mcmVxKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgCj4gIAl2YWwgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgRkJfR0ZY X0ZNQVhfQVRfVk1BWF9GVVNFKTsKPiAgCj4gLQlzd2l0Y2ggKElOVEVMX0lORk8oZGV2X3ByaXYp LT5zc2V1LmV1X3RvdGFsKSB7Cj4gKwlzd2l0Y2ggKGRldl9wcml2LT5ydW50aW1lX2luZm8uc3Nl dS5ldV90b3RhbCkgewo+ICAJY2FzZSA4Ogo+ICAJCS8qICgyICogNCkgY29uZmlnICovCj4gIAkJ cnAwID0gKHZhbCA+PiBGQl9HRlhfRk1BWF9BVF9WTUFYXzJTUzRFVV9GVVNFX1NISUZUKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggODdlZWJjMTNjMGQ4 Li5mY2NlYmY3NzM0NjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4gQEAgLTE1NjYsNyArMTU2Niw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1pX3NldF9jb250 ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCj4gIAljb25zdCBpbnQgbnVt X3JpbmdzID0KPiAgCQkvKiBVc2UgYW4gZXh0ZW5kZWQgdy9hIG9uIGdlbjcgaWYgc2lnbmFsbGlu ZyBmcm9tIG90aGVyIHJpbmdzICovCj4gIAkJKEhBU19MRUdBQ1lfU0VNQVBIT1JFUyhpOTE1KSAm JiBJU19HRU43KGk5MTUpKSA/Cj4gLQkJSU5URUxfSU5GTyhpOTE1KS0+bnVtX3JpbmdzIC0gMSA6 Cj4gKwkJaTkxNS0+cnVudGltZV9pbmZvLm51bV9yaW5ncyAtIDEgOgo+ICAJCTA7Cj4gIAlib29s IGZvcmNlX3Jlc3RvcmUgPSBmYWxzZTsKPiAgCWludCBsZW47Cj4gQEAgLTIyMzEsNyArMjIzMSw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCQllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYiA9IGdl bjZfc2VtYV9lbWl0X2JyZWFkY3J1bWI7Cj4gIAo+IC0JCW51bV9yaW5ncyA9IElOVEVMX0lORk8o ZGV2X3ByaXYpLT5udW1fcmluZ3MgLSAxOwo+ICsJCW51bV9yaW5ncyA9IGRldl9wcml2LT5ydW50 aW1lX2luZm8ubnVtX3JpbmdzIC0gMTsKPiAgCQllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYl9zeiAr PSBudW1fcmluZ3MgKiAzOwo+ICAJCWlmIChudW1fcmluZ3MgJiAxKQo+ICAJCQllbmdpbmUtPmVt aXRfYnJlYWRjcnVtYl9zeisrOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKPiBpbmRleCA4YTIyNzBiMjA5YjAuLmRiMjkzM2QyODdiOCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtOTQsMTEgKzk0LDExIEBAIGhhbmdjaGVj a19hY3Rpb25fdG9fc3RyKGNvbnN0IGVudW0gaW50ZWxfZW5naW5lX2hhbmdjaGVja19hY3Rpb24g YSkKPiAgCj4gICNkZWZpbmUgaW5zdGRvbmVfc2xpY2VfbWFzayhkZXZfcHJpdl9fKSBcCj4gIAko SVNfR0VONyhkZXZfcHJpdl9fKSA/IFwKPiAtCSAxIDogSU5URUxfSU5GTyhkZXZfcHJpdl9fKS0+ c3NldS5zbGljZV9tYXNrKQo+ICsJIDEgOiAoZGV2X3ByaXZfXyktPnJ1bnRpbWVfaW5mby5zc2V1 LnNsaWNlX21hc2spCj4gIAo+ICAjZGVmaW5lIGluc3Rkb25lX3N1YnNsaWNlX21hc2soZGV2X3By aXZfXykgXAo+ICAJKElTX0dFTjcoZGV2X3ByaXZfXykgPyBcCj4gLQkgMSA6IElOVEVMX0lORk8o ZGV2X3ByaXZfXyktPnNzZXUuc3Vic2xpY2VfbWFza1swXSkKPiArCSAxIDogKGRldl9wcml2X18p LT5ydW50aW1lX2luZm8uc3NldS5zdWJzbGljZV9tYXNrWzBdKQo+ICAKPiAgI2RlZmluZSBmb3Jf ZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdl9fLCBzbGljZV9fLCBzdWJzbGlj ZV9fKSBcCj4gIAlmb3IgKChzbGljZV9fKSA9IDAsIChzdWJzbGljZV9fKSA9IDA7IFwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCBkNzE3NjIxM2UzY2Uu LjExMDU1NmQwOTM0ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF93 b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3Vu ZHMuYwo+IEBAIC0zMTgsNyArMzE4LDcgQEAgc3RhdGljIGludCBza2xfdHVuZV9pel9oYXNoaW5n KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkgKiBPbmx5IGNvbnNpZGVy IHNsaWNlcyB3aGVyZSBvbmUsIGFuZCBvbmx5IG9uZSwgc3Vic2xpY2UgaGFzIDcKPiAgCQkgKiBF VXMKPiAgCQkgKi8KPiAtCQlpZiAoIWlzX3Bvd2VyX29mXzIoSU5URUxfSU5GTyhkZXZfcHJpdikt PnNzZXUuc3Vic2xpY2VfN2V1W2ldKSkKPiArCQlpZiAoIWlzX3Bvd2VyX29mXzIoZGV2X3ByaXYt PnJ1bnRpbWVfaW5mby5zc2V1LnN1YnNsaWNlXzdldVtpXSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAK PiAgCQkvKgo+IEBAIC0zMjcsNyArMzI3LDcgQEAgc3RhdGljIGludCBza2xfdHVuZV9pel9oYXNo aW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkgKgo+ICAJCSAqIC0+ ICAgIDAgPD0gc3MgPD0gMzsKPiAgCQkgKi8KPiAtCQlzcyA9IGZmcyhJTlRFTF9JTkZPKGRldl9w cml2KS0+c3NldS5zdWJzbGljZV83ZXVbaV0pIC0gMTsKPiArCQlzcyA9IGZmcyhkZXZfcHJpdi0+ cnVudGltZV9pbmZvLnNzZXUuc3Vic2xpY2VfN2V1W2ldKSAtIDE7Cj4gIAkJdmFsc1tpXSA9IDMg LSBzczsKPiAgCX0KPiAgCj4gQEAgLTczMiw3ICs3MzIsNyBAQCBzdGF0aWMgdm9pZCBjZmxfZ3Rf d29ya2Fyb3VuZHNfYXBwbHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAK PiAgc3RhdGljIHZvaWQgd2FfaW5pdF9tY3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICYoSU5URUxf SU5GTyhkZXZfcHJpdiktPnNzZXUpOwo+ICsJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUgPSAmZGV2X3ByaXYtPnJ1bnRpbWVfaW5mby5zc2V1Owo+ICAJdTMyIG1jcjsKPiAgCXUzMiBt Y3Jfc2xpY2Vfc3Vic2xpY2VfbWFzazsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggN2Q4MjA0M2FmZjEwLi40ZWUz ZmNmZjgxNWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNjI3LDcgKzYyNyw3IEBAIHN0YXRpYyBpbnQgaWd0X2N0 eF9leGVjKHZvaWQgKmFyZykKPiAgCQluY29udGV4dHMrKzsKPiAgCX0KPiAgCXByX2luZm8oIlN1 Ym1pdHRlZCAlbHUgY29udGV4dHMgKGFjcm9zcyAldSBlbmdpbmVzKSwgZmlsbGluZyAlbHUgZHdv cmRzXG4iLAo+IC0JCW5jb250ZXh0cywgSU5URUxfSU5GTyhpOTE1KS0+bnVtX3JpbmdzLCBuZHdv cmRzKTsKPiArCQluY29udGV4dHMsIGk5MTUtPnJ1bnRpbWVfaW5mby5udW1fcmluZ3MsIG5kd29y ZHMpOwo+ICAKPiAgCWR3ID0gMDsKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmb2JqZWN0 cywgc3RfbGluaykgewo+IEBAIC03MzIsNyArNzMyLDcgQEAgc3RhdGljIGludCBpZ3RfY3R4X3Jl YWRvbmx5KHZvaWQgKmFyZykKPiAgCQl9Cj4gIAl9Cj4gIAlwcl9pbmZvKCJTdWJtaXR0ZWQgJWx1 IGR3b3JkcyAoYWNyb3NzICV1IGVuZ2luZXMpXG4iLAo+IC0JCW5kd29yZHMsIElOVEVMX0lORk8o aTkxNSktPm51bV9yaW5ncyk7Cj4gKwkJbmR3b3JkcywgaTkxNS0+cnVudGltZV9pbmZvLm51bV9y aW5ncyk7Cj4gIAo+ICAJZHcgPSAwOwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZvYmpl Y3RzLCBzdF9saW5rKSB7Cj4gQEAgLTEwNjQsNyArMTA2NCw3IEBAIHN0YXRpYyBpbnQgaWd0X3Zt X2lzb2xhdGlvbih2b2lkICphcmcpCj4gIAkJY291bnQgKz0gdGhpczsKPiAgCX0KPiAgCXByX2lu Zm8oIkNoZWNrZWQgJWx1IHNjcmF0Y2ggb2Zmc2V0cyBhY3Jvc3MgJWQgZW5naW5lc1xuIiwKPiAt CQljb3VudCwgSU5URUxfSU5GTyhpOTE1KS0+bnVtX3JpbmdzKTsKPiArCQljb3VudCwgaTkxNS0+ cnVudGltZV9pbmZvLm51bV9yaW5ncyk7Cj4gIAo+ICBvdXRfcnBtOgo+ICAJaW50ZWxfcnVudGlt ZV9wbV9wdXQoaTkxNSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9s cmMuYwo+IGluZGV4IDk0ZmMwZTVjODc2Ni4uNzIzN2EyNDc0ODA1IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+IEBAIC03MTksNyArNzE5LDcgQEAg c3RhdGljIGludCBzbW9rZV9jcmVzY2VuZG8oc3RydWN0IHByZWVtcHRfc21va2UgKnNtb2tlLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCj4gIAo+ICAJcHJfaW5mbygiU3VibWl0dGVkICVsdSBjcmVzY2Vu ZG86JXggcmVxdWVzdHMgYWNyb3NzICVkIGVuZ2luZXMgYW5kICVkIGNvbnRleHRzXG4iLAo+ICAJ CWNvdW50LCBmbGFncywKPiAtCQlJTlRFTF9JTkZPKHNtb2tlLT5pOTE1KS0+bnVtX3JpbmdzLCBz bW9rZS0+bmNvbnRleHQpOwo+ICsJCXNtb2tlLT5pOTE1LT5ydW50aW1lX2luZm8ubnVtX3Jpbmdz LCBzbW9rZS0+bmNvbnRleHQpOwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTc0Nyw3ICs3 NDcsNyBAQCBzdGF0aWMgaW50IHNtb2tlX3JhbmRvbShzdHJ1Y3QgcHJlZW1wdF9zbW9rZSAqc21v a2UsIHVuc2lnbmVkIGludCBmbGFncykKPiAgCj4gIAlwcl9pbmZvKCJTdWJtaXR0ZWQgJWx1IHJh bmRvbToleCByZXF1ZXN0cyBhY3Jvc3MgJWQgZW5naW5lcyBhbmQgJWQgY29udGV4dHNcbiIsCj4g IAkJY291bnQsIGZsYWdzLAo+IC0JCUlOVEVMX0lORk8oc21va2UtPmk5MTUpLT5udW1fcmluZ3Ms IHNtb2tlLT5uY29udGV4dCk7Cj4gKwkJc21va2UtPmk5MTUtPnJ1bnRpbWVfaW5mby5udW1fcmlu Z3MsIHNtb2tlLT5uY29udGV4dCk7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtLSAKPiAyLjE5 LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==