From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Reduce duplicated forcewake logic Date: Fri, 7 Nov 2014 17:46:55 +0200 Message-ID: <20141107154655.GY10649@intel.com> References: <20140910155116.GD31074@nuc-i3427.alporthouse.com> <1410374094-5210-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 184FC6E973 for ; Fri, 7 Nov 2014 07:47:00 -0800 (PST) Content-Disposition: inline In-Reply-To: <1410374094-5210-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMTAsIDIwMTQgYXQgMDc6MzQ6NTRQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEludHJvZHVjZSBhIHN0cnVjdHVyZSB0byB0cmFjayB0aGUgaW5kaXZpZHVhbCBmb3Jj ZXdha2UgZG9tYWlucyBhbmQgdXNlCj4gdGhhdCB0byBlbGltaW5hdGVkIGR1cGxpY2F0ZSBsb2dp Yy4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCAgNDEgKysr LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgIHwgIDMyICsrKy0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIHwgMjY1ICsrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRpb25z KCspLCAxODEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiBpbmRleCBhNzJkOGI4Li5jMzE3NmYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPiBAQCAtMTMxNyw3ICsxMzE3LDYgQEAgc3RhdGljIGludCB2bHZfZHJwY19pbmZvKHN0 cnVjdCBzZXFfZmlsZSAqbSkKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5v ci0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPiAgCXUzMiBycG1vZGVjdGwxLCByY2N0bDE7Cj4gLQl1bnNpZ25lZCBmd19yZW5k ZXJjb3VudCA9IDAsIGZ3X21lZGlhY291bnQgPSAwOwo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKPiAgCj4gQEAgLTEzNTAsMjIgKzEzNDksMTIgQEAgc3RhdGljIGludCB2 bHZfZHJwY19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgCXNlcV9wcmludGYobSwgIk1lZGlh IFJDNiByZXNpZGVuY3kgc2luY2UgYm9vdDogJXVcbiIsCj4gIAkJICAgSTkxNV9SRUFEKFZMVl9H VF9NRURJQV9SQzYpKTsKPiAgCj4gLQlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2spOwo+IC0JZndfcmVuZGVyY291bnQgPSBkZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50 Owo+IC0JZndfbWVkaWFjb3VudCA9IGRldl9wcml2LT51bmNvcmUuZndfbWVkaWFjb3VudDsKPiAt CXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiAtCj4gLQlzZXFfcHJp bnRmKG0sICJGb3JjZXdha2UgUmVuZGVyIENvdW50ID0gJXVcbiIsIGZ3X3JlbmRlcmNvdW50KTsK PiAtCXNlcV9wcmludGYobSwgIkZvcmNld2FrZSBNZWRpYSBDb3VudCA9ICV1XG4iLCBmd19tZWRp YWNvdW50KTsKPiAtCj4gLQo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gaTkxNV9nZW42X2ZvcmNl d2FrZV9jb3VudF9pbmZvKG0sIGRhdGEpOwo+ICB9Cj4gIAo+ICAKPiAgc3RhdGljIGludCBnZW42 X2RycGNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gIHsKPiAtCj4gIAlzdHJ1Y3QgZHJtX2lu Zm9fbm9kZSAqbm9kZSA9IG0tPnByaXZhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g bm9kZS0+bWlub3ItPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gQEAgLTEzNzksNyArMTM2OCw3IEBAIHN0YXRpYyBpbnQgZ2Vu Nl9kcnBjX2luZm8oc3RydWN0IHNlcV9maWxlICptKQo+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQo ZGV2X3ByaXYpOwo+ICAKPiAgCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT51bmNvcmUubG9jayk7 Cj4gLQlmb3JjZXdha2VfY291bnQgPSBkZXZfcHJpdi0+dW5jb3JlLmZvcmNld2FrZV9jb3VudDsK PiArCWZvcmNld2FrZV9jb3VudCA9IGRldl9wcml2LT51bmNvcmUuZndfZG9tYWluW0ZXX0RPTUFJ Tl9SRU5ERVJdLndha2VfY291bnQ7Cj4gIAlzcGluX3VubG9ja19pcnEoJmRldl9wcml2LT51bmNv cmUubG9jayk7Cj4gIAo+ICAJaWYgKGZvcmNld2FrZV9jb3VudCkgewo+IEBAIC0xOTc2LDIxICsx OTY1LDIzIEBAIHN0YXRpYyBpbnQgaTkxNV9nZW42X2ZvcmNld2FrZV9jb3VudF9pbmZvKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2Rl ID0gbS0+cHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5vci0+ ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiAtCXVuc2lnbmVkIGZvcmNld2FrZV9jb3VudCA9IDAsIGZ3X3JlbmRlcmNvdW50ID0g MCwgZndfbWVkaWFjb3VudCA9IDA7Cj4gKwljb25zdCBjaGFyICpkb21haW5fbmFtZXNbXSA9IHsK CnN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZG9tYWluX25hbWVzW10gPwoKSG1tLiBNYXliZSBz b21lb25lIHNob3VsZCBmaXJlIHVwIGNvY2NpbmVsbGUgdG8gZ28gdGhyb3VnaCB0aGUgZW50aXJl CmNvZGViYXNlIHdpdGggdGhpcy4uLgoKPiArCQkicmVuZGVyIiwKPiArCQkibWVkaWEiLAo+ICsJ fTsKPiArCWludCBpOwo+ICAKPiAgCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT51bmNvcmUubG9j ayk7Cj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4gLQkJZndfcmVuZGVyY291bnQgPSBk ZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50Owo+IC0JCWZ3X21lZGlhY291bnQgPSBkZXZf cHJpdi0+dW5jb3JlLmZ3X21lZGlhY291bnQ7Cj4gLQl9IGVsc2UKPiAtCQlmb3JjZXdha2VfY291 bnQgPSBkZXZfcHJpdi0+dW5jb3JlLmZvcmNld2FrZV9jb3VudDsKPiAtCXNwaW5fdW5sb2NrX2ly cSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiArCWZvciAoaSA9IDA7IGkgPCBGV19ET01BSU5f Q09VTlQ7IGkrKykgewo+ICsJCWlmICgoZGV2X3ByaXYtPnVuY29yZS5md19kb21haW5zICYgKDEg PDwgaSkpID09IDApCj4gKwkJCWNvbnRpbnVlOwo+ICAKPiAtCWlmIChJU19WQUxMRVlWSUVXKGRl dikpIHsKPiAtCQlzZXFfcHJpbnRmKG0sICJmd19yZW5kZXJjb3VudCA9ICV1XG4iLCBmd19yZW5k ZXJjb3VudCk7Cj4gLQkJc2VxX3ByaW50ZihtLCAiZndfbWVkaWFjb3VudCA9ICV1XG4iLCBmd19t ZWRpYWNvdW50KTsKPiAtCX0gZWxzZQo+IC0JCXNlcV9wcmludGYobSwgImZvcmNld2FrZSBjb3Vu dCA9ICV1XG4iLCBmb3JjZXdha2VfY291bnQpOwo+ICsJCXNlcV9wcmludGYobSwgIiVzLndha2Vf Y291bnQgPSAldVxuIiwKPiArCQkJICAgZG9tYWluX25hbWVzW2ldLAo+ICsJCQkgICBkZXZfcHJp di0+dW5jb3JlLmZ3X2RvbWFpbltpXS53YWtlX2NvdW50KTsKPiArCX0KPiArCj4gKwlzcGluX3Vu bG9ja19pcnEoJmRldl9wcml2LT51bmNvcmUubG9jayk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA1ZDBiMzhjLi42NDI0MTkxIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTUyOCwxOCArNTI4LDMwIEBAIHN0cnVjdCBpbnRl bF91bmNvcmVfZnVuY3Mgewo+ICAJCQkJdWludDY0X3QgdmFsLCBib29sIHRyYWNlKTsKPiAgfTsK PiAgCj4gK2VudW0gewo+ICsJRldfRE9NQUlOX1JFTkRFUiA9IDAsCj4gKwlGV19ET01BSU5fTUVE SUEsCj4gKwo+ICsJRldfRE9NQUlOX0NPVU5UCj4gK307Cj4gKwo+ICBzdHJ1Y3QgaW50ZWxfdW5j b3JlIHsKPiAgCXNwaW5sb2NrX3QgbG9jazsgLyoqIGxvY2sgaXMgYWxzbyB0YWtlbiBpbiBpcnEg Y29udGV4dHMuICovCj4gIAo+ICAJc3RydWN0IGludGVsX3VuY29yZV9mdW5jcyBmdW5jczsKPiAg Cj4gIAl1bnNpZ25lZCBmaWZvX2NvdW50Owo+IC0JdW5zaWduZWQgZm9yY2V3YWtlX2NvdW50Owo+ IC0KPiAtCXVuc2lnbmVkIGZ3X3JlbmRlcmNvdW50Owo+IC0JdW5zaWduZWQgZndfbWVkaWFjb3Vu dDsKPiArCXVuc2lnbmVkIGZ3X2RvbWFpbnM7Cj4gIAo+IC0Jc3RydWN0IHRpbWVyX2xpc3QgZm9y Y2Vfd2FrZV90aW1lcjsKPiArCXN0cnVjdCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiB7 Cj4gKwkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4gKwkJaW50IGlkOwo+ICsJCXVu c2lnbmVkIHdha2VfY291bnQ7Cj4gKwkJc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7Cj4gKwl9IGZ3 X2RvbWFpbltGV19ET01BSU5fQ09VTlRdOwo+ICsjZGVmaW5lIEZPUkNFV0FLRV9SRU5ERVIJKDEg PDwgRldfRE9NQUlOX1JFTkRFUikKPiArI2RlZmluZSBGT1JDRVdBS0VfTUVESUEJCSgxIDw8IEZX X0RPTUFJTl9NRURJQSkKPiArI2RlZmluZSBGT1JDRVdBS0VfQUxMCQkoRk9SQ0VXQUtFX1JFTkRF UiB8IEZPUkNFV0FLRV9NRURJQSkKPiAgfTsKPiAgCj4gICNkZWZpbmUgREVWX0lORk9fRk9SX0VB Q0hfRkxBRyhmdW5jLCBzZXApIFwKPiBAQCAtMjk0OCw4ICsyOTYwLDEwIEBAIGV4dGVybiB2b2lk IGludGVsX2Rpc3BsYXlfcHJpbnRfZXJyb3Jfc3RhdGUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0 YXRlX2J1ZiAqZSwKPiAgICogbXVzdCBiZSBzZXQgdG8gcHJldmVudCBHVCBjb3JlIGZyb20gcG93 ZXIgZG93biBhbmQgc3RhbGUgdmFsdWVzIGJlaW5nCj4gICAqIHJldHVybmVkLgo+ICAgKi8KPiAt dm9pZCBnZW42X2d0X2ZvcmNlX3dha2VfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgaW50IGZ3X2VuZ2luZSk7Cj4gLXZvaWQgZ2VuNl9ndF9mb3JjZV93YWtlX3B1dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBmd19lbmdpbmUpOwo+ICt2b2lkIGdl bjZfZ3RfZm9yY2Vfd2FrZV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICsJCQkgICAgdW5zaWduZWQgZndfZG9tYWlucyk7Cj4gK3ZvaWQgZ2VuNl9ndF9mb3JjZV93YWtl X3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICB1bnNpZ25l ZCBmd19kb21haW5zKTsKPiAgdm9pZCBhc3NlcnRfZm9yY2Vfd2FrZV9pbmFjdGl2ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAgaW50IHNhbmR5YnJpZGdlX3Bjb2Rl X3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBtYm94LCB1MzIgKnZh bCk7Cj4gQEAgLTI5ODEsMTAgKzI5OTUsNiBAQCB2b2lkIHZsdl9mbGlzZHNpX3dyaXRlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHJlZywgdTMyIHZhbCk7Cj4gIGludCB2 bHZfZ3B1X2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsKTsK PiAgaW50IHZsdl9mcmVxX29wY29kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGludCB2YWwpOwo+ICAKPiAtI2RlZmluZSBGT1JDRVdBS0VfUkVOREVSCSgxIDw8IDApCj4gLSNk ZWZpbmUgRk9SQ0VXQUtFX01FRElBCQkoMSA8PCAxKQo+IC0jZGVmaW5lIEZPUkNFV0FLRV9BTEwJ CShGT1JDRVdBS0VfUkVOREVSIHwgRk9SQ0VXQUtFX01FRElBKQo+IC0KPiAgCj4gICNkZWZpbmUg STkxNV9SRUFEOChyZWcpCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLm1taW9fcmVhZGIoZGV2X3By aXYsIChyZWcpLCB0cnVlKQo+ICAjZGVmaW5lIEk5MTVfV1JJVEU4KHJlZywgdmFsKQlkZXZfcHJp di0+dW5jb3JlLmZ1bmNzLm1taW9fd3JpdGViKGRldl9wcml2LCAocmVnKSwgKHZhbCksIHRydWUp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBpbmRleCAzYjNkM2UwLi42NDE5NTBi IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBAQCAtNzMsNyArNzMsNyBA QCBzdGF0aWMgdm9pZCBfX2dlbjZfZ3RfZm9yY2Vfd2FrZV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIF9fZ2VuNl9ndF9mb3Jj ZV93YWtlX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJCQlp bnQgZndfZW5naW5lKQo+ICsJCQkJICAgICBpbnQgZndfZW5naW5lKQo+ICB7Cj4gIAlpZiAod2Fp dF9mb3JfYXRvbWljKChfX3Jhd19pOTE1X3JlYWQzMihkZXZfcHJpdiwgRk9SQ0VXQUtFX0FDSykg JiAxKSA9PSAwLAo+ICAJCQkgICAgRk9SQ0VXQUtFX0FDS19USU1FT1VUX01TKSkKPiBAQCAtOTks NyArOTksNyBAQCBzdGF0aWMgdm9pZCBfX2dlbjdfZ3RfZm9yY2Vfd2FrZV9tdF9yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIF9f Z2VuN19ndF9mb3JjZV93YWtlX210X2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gLQkJCQkJCQlpbnQgZndfZW5naW5lKQo+ICsJCQkJCWludCBmd19lbmdpbmUpCj4gIHsK PiAgCXUzMiBmb3JjZXdha2VfYWNrOwo+ICAKPiBAQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyB2 b2lkIGdlbjZfZ3RfY2hlY2tfZmlmb2RiZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIF9fZ2VuNl9ndF9mb3JjZV93YWtlX3B1dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJCQlpbnQgZndfZW5naW5lKQo+ ICsJCQkJICAgICBpbnQgZndfZW5naW5lKQo+ICB7Cj4gIAlfX3Jhd19pOTE1X3dyaXRlMzIoZGV2 X3ByaXYsIEZPUkNFV0FLRSwgMCk7Cj4gIAkvKiBzb21ldGhpbmcgZnJvbSBzYW1lIGNhY2hlbGlu ZSwgYnV0ICFGT1JDRVdBS0UgKi8KPiBAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyB2b2lkIF9f Z2VuNl9ndF9mb3JjZV93YWtlX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIF9fZ2VuN19ndF9mb3JjZV93YWtlX210X3B1dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJCQlpbnQgZndfZW5naW5lKQo+ ICsJCQkJCWludCBmd19lbmdpbmUpCj4gIHsKPiAgCV9fcmF3X2k5MTVfd3JpdGUzMihkZXZfcHJp diwgRk9SQ0VXQUtFX01ULAo+ICAJCQkgICBfTUFTS0VEX0JJVF9ESVNBQkxFKEZPUkNFV0FLRV9L RVJORUwpKTsKPiBAQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyB2b2lkIHZsdl9mb3JjZV93YWtl X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgfQo+ICAKPiAgc3Rh dGljIHZvaWQgX192bHZfZm9yY2Vfd2FrZV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+IC0JCQkJCQlpbnQgZndfZW5naW5lKQo+ICsJCQkJIGludCBmd19lbmdpbmUpCj4g IHsKPiAgCS8qIENoZWNrIGZvciBSZW5kZXIgRW5naW5lICovCj4gIAlpZiAoRk9SQ0VXQUtFX1JF TkRFUiAmIGZ3X2VuZ2luZSkgewo+IEBAIC0yMzgsOSArMjM4LDggQEAgc3RhdGljIHZvaWQgX192 bHZfZm9yY2Vfd2FrZV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICB9 Cj4gIAo+ICBzdGF0aWMgdm9pZCBfX3Zsdl9mb3JjZV93YWtlX3B1dChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJaW50IGZ3X2VuZ2luZSkKPiArCQkJCSBpbnQgZndf ZW5naW5lKQo+ICB7Cj4gLQo+ICAJLyogQ2hlY2sgZm9yIFJlbmRlciBFbmdpbmUgKi8KPiAgCWlm IChGT1JDRVdBS0VfUkVOREVSICYgZndfZW5naW5lKQo+ICAJCV9fcmF3X2k5MTVfd3JpdGUzMihk ZXZfcHJpdiwgRk9SQ0VXQUtFX1ZMViwKPiBAQCAtMjU4LDU5ICsyNTcsMzUgQEAgc3RhdGljIHZv aWQgX192bHZfZm9yY2Vfd2FrZV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAJCWdlbjZfZ3RfY2hlY2tfZmlmb2RiZyhkZXZfcHJpdik7Cj4gIH0KPiAgCj4gLXN0YXRp YyB2b2lkIHZsdl9mb3JjZV93YWtlX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGludCBmd19lbmdpbmUpCj4gLXsKPiAtCWlmIChmd19lbmdpbmUgJiBGT1JDRVdBS0VfUkVO REVSICYmCj4gLQkgICAgZGV2X3ByaXYtPnVuY29yZS5md19yZW5kZXJjb3VudCsrICE9IDApCj4g LQkJZndfZW5naW5lICY9IH5GT1JDRVdBS0VfUkVOREVSOwo+IC0JaWYgKGZ3X2VuZ2luZSAmIEZP UkNFV0FLRV9NRURJQSAmJgo+IC0JICAgIGRldl9wcml2LT51bmNvcmUuZndfbWVkaWFjb3VudCsr ICE9IDApCj4gLQkJZndfZW5naW5lICY9IH5GT1JDRVdBS0VfTUVESUE7Cj4gLQo+IC0JaWYgKGZ3 X2VuZ2luZSkKPiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0KGRldl9w cml2LCBmd19lbmdpbmUpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCB2bHZfZm9yY2Vfd2FrZV9w dXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgZndfZW5naW5lKQo+IC17 Cj4gLQlpZiAoZndfZW5naW5lICYgRk9SQ0VXQUtFX1JFTkRFUikgewo+IC0JCVdBUk5fT04oIWRl dl9wcml2LT51bmNvcmUuZndfcmVuZGVyY291bnQpOwo+IC0JCWlmICgtLWRldl9wcml2LT51bmNv cmUuZndfcmVuZGVyY291bnQgIT0gMCkKPiAtCQkJZndfZW5naW5lICY9IH5GT1JDRVdBS0VfUkVO REVSOwo+IC0JfQo+IC0KPiAtCWlmIChmd19lbmdpbmUgJiBGT1JDRVdBS0VfTUVESUEpIHsKPiAt CQlXQVJOX09OKCFkZXZfcHJpdi0+dW5jb3JlLmZ3X21lZGlhY291bnQpOwo+IC0JCWlmICgtLWRl dl9wcml2LT51bmNvcmUuZndfbWVkaWFjb3VudCAhPSAwKQo+IC0JCQlmd19lbmdpbmUgJj0gfkZP UkNFV0FLRV9NRURJQTsKPiAtCX0KPiAtCj4gLQlpZiAoZndfZW5naW5lKQo+IC0JCWRldl9wcml2 LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQoZGV2X3ByaXYsIGZ3X2VuZ2luZSk7Cj4gLX0K PiAtCj4gIHN0YXRpYyB2b2lkIGdlbjZfZm9yY2Vfd2FrZV90aW1lcih1bnNpZ25lZCBsb25nIGFy ZykKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gKHZvaWQgKilh cmc7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmRvbWFpbiA9ICh2 b2lkICopYXJnOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlhc3NlcnRfZGV2 aWNlX25vdF9zdXNwZW5kZWQoZGV2X3ByaXYpOwo+ICsJYXNzZXJ0X2RldmljZV9ub3Rfc3VzcGVu ZGVkKGRvbWFpbi0+aTkxNSk7Cj4gIAo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51 bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+IC0JV0FSTl9PTighZGV2X3ByaXYtPnVuY29yZS5mb3Jj ZXdha2VfY291bnQpOwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJmRvbWFpbi0+aTkxNS0+dW5jb3Jl LmxvY2ssIGlycWZsYWdzKTsKPiArCVdBUk5fT04oIWRvbWFpbi0+d2FrZV9jb3VudCk7Cj4gIAo+ IC0JaWYgKC0tZGV2X3ByaXYtPnVuY29yZS5mb3JjZXdha2VfY291bnQgPT0gMCkKPiAtCQlkZXZf cHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxM KTsKPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJx ZmxhZ3MpOwo+ICsJaWYgKC0tZG9tYWluLT53YWtlX2NvdW50ID09IDApCj4gKwkJZG9tYWluLT5p OTE1LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQoZG9tYWluLT5pOTE1LAo+ICsJCQkJCQkJ ICAxIDw8IGRvbWFpbi0+aWQpOwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZG9tYWluLT5p OTE1LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX3VuY29y ZV9mb3JjZXdha2VfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCByZXN0b3JlKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiArCWludCBpOwo+ICAKPiAtCWlmIChk ZWxfdGltZXJfc3luYygmZGV2X3ByaXYtPnVuY29yZS5mb3JjZV93YWtlX3RpbWVyKSkKPiAtCQln ZW42X2ZvcmNlX3dha2VfdGltZXIoKHVuc2lnbmVkIGxvbmcpZGV2X3ByaXYpOwo+ICsJZm9yIChp ID0gMDsgaSA8IEZXX0RPTUFJTl9DT1VOVDsgaSsrICkgewo+ICsJCWlmICgoZGV2X3ByaXYtPnVu Y29yZS5md19kb21haW5zICYgKDEgPDwgaSkpID09IDApCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiAr CQlpZiAoZGVsX3RpbWVyX3N5bmMoJmRldl9wcml2LT51bmNvcmUuZndfZG9tYWluW2ldLnRpbWVy KSkKPiArCQkJZ2VuNl9mb3JjZV93YWtlX3RpbWVyKCh1bnNpZ25lZCBsb25nKSZkZXZfcHJpdi0+ dW5jb3JlLmZ3X2RvbWFpbltpXSk7Cj4gKwl9Cj4gIAo+ICAJLyogSG9sZCB1bmNvcmUubG9jayBh Y3Jvc3MgcmVzZXQgdG8gcHJldmVudCBhbnkgcmVnaXN0ZXIgYWNjZXNzCj4gIAkgKiB3aXRoIGZv cmNld2FrZSBub3Qgc2V0IGNvcnJlY3RseQo+IEBAIC0zMjcsMTggKzMwMiwxMiBAQCB2b2lkIGlu dGVsX3VuY29yZV9mb3JjZXdha2VfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBy ZXN0b3JlKQo+ICAKPiAgCWlmIChyZXN0b3JlKSB7IC8qIElmIHJlc2V0IHdpdGggYSB1c2VyIGZv cmNld2FrZSwgdHJ5IHRvIHJlc3RvcmUgKi8KPiAgCQl1bnNpZ25lZCBmdyA9IDA7Cj4gKwkJaW50 IGk7Cj4gIAo+IC0JCWlmIChJU19WQUxMRVlWSUVXKGRldikpIHsKPiAtCQkJaWYgKGRldl9wcml2 LT51bmNvcmUuZndfcmVuZGVyY291bnQpCj4gLQkJCQlmdyB8PSBGT1JDRVdBS0VfUkVOREVSOwo+ IC0KPiAtCQkJaWYgKGRldl9wcml2LT51bmNvcmUuZndfbWVkaWFjb3VudCkKPiAtCQkJCWZ3IHw9 IEZPUkNFV0FLRV9NRURJQTsKPiAtCQl9IGVsc2Ugewo+IC0JCQlpZiAoZGV2X3ByaXYtPnVuY29y ZS5mb3JjZXdha2VfY291bnQpCj4gLQkJCQlmdyA9IEZPUkNFV0FLRV9BTEw7Cj4gKwkJZm9yIChp ID0gMDsgaSA8IEZXX0RPTUFJTl9DT1VOVDsgaSsrKSB7Cj4gKwkJCWlmIChkZXZfcHJpdi0+dW5j b3JlLmZ3X2RvbWFpbltpXS53YWtlX2NvdW50KQo+ICsJCQkJZncgfD0gMSA8PCBpOwo+ICAJCX0K PiAtCj4gIAkJaWYgKGZ3KQo+ICAJCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2Vf Z2V0KGRldl9wcml2LCBmdyk7Cj4gIAo+IEBAIC0zODksNTAgKzM1OCw2MCBAQCB2b2lkIGludGVs X3VuY29yZV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgKiBiZSBjYWxsZWQg YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UgZm9sbG93ZWQgYnkgYSBjYWxsIHRvCj4g ICAqIGdlbjZfZ3RfZm9yY2Vfd2FrZV9wdXQoKSBhdCB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZS4K PiAgICovCj4gLXZvaWQgZ2VuNl9ndF9mb3JjZV93YWtlX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIGludCBmd19lbmdpbmUpCj4gK3ZvaWQgZ2VuNl9ndF9mb3JjZV93YWtl X2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgICB1bnNpZ25l ZCBmd19kb21haW5zKQo+ICB7Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICsJaW50IGk7 Cj4gIAo+ICAJaWYgKCFkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0KQo+ICAJ CXJldHVybjsKPiAgCj4gIAlXQVJOX09OKCFwbV9ydW50aW1lX2FjdGl2ZSgmZGV2X3ByaXYtPmRl di0+cGRldi0+ZGV2KSk7Cj4gIAo+ICsJZndfZG9tYWlucyAmPSBkZXZfcHJpdi0+dW5jb3JlLmZ3 X2RvbWFpbnM7Cj4gKwo+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9j aywgaXJxZmxhZ3MpOwo+ICAKPiAtCS8qIFJlZGlyZWN0IHRvIFZMViBzcGVjaWZpYyByb3V0aW5l ICovCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkgewo+IC0JCXZsdl9mb3Jj ZV93YWtlX2dldChkZXZfcHJpdiwgZndfZW5naW5lKTsKPiAtCX0gZWxzZSB7Cj4gLQkJaWYgKGRl dl9wcml2LT51bmNvcmUuZm9yY2V3YWtlX2NvdW50KysgPT0gMCkKPiAtCQkJZGV2X3ByaXYtPnVu Y29yZS5mdW5jcy5mb3JjZV93YWtlX2dldChkZXZfcHJpdiwKPiAtCQkJCQkJCSAgICAgIEZPUkNF V0FLRV9BTEwpOwo+ICsJZm9yIChpID0gMDsgaSA8IEZXX0RPTUFJTl9DT1VOVDsgaSsrKSB7Cj4g KwkJaWYgKChmd19kb21haW5zICYgKDEgPDwgaSkpID09IDApCj4gKwkJCWNvbnRpbnVlOwo+ICsK PiArCQlpZiAoZGV2X3ByaXYtPnVuY29yZS5md19kb21haW5baV0ud2FrZV9jb3VudCsrKQo+ICsJ CQlmd19kb21haW5zICY9IH4oMSA8PCBpKTsKPiAgCX0KPiArCj4gKwlpZiAoZndfZG9tYWlucykK PiArCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2VfZ2V0KGRldl9wcml2LCBmd19k b21haW5zKTsKPiArCj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3Jl LmxvY2ssIGlycWZsYWdzKTsKPiAgfQo+ICAKPiAgLyoKPiAgICogc2VlIGdlbjZfZ3RfZm9yY2Vf d2FrZV9nZXQoKQo+ICAgKi8KPiAtdm9pZCBnZW42X2d0X2ZvcmNlX3dha2VfcHV0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGZ3X2VuZ2luZSkKPiArdm9pZCBnZW42X2d0 X2ZvcmNlX3dha2VfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJ ICAgIHVuc2lnbmVkIGZ3X2RvbWFpbnMpCj4gIHsKPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7 Cj4gKwlpbnQgaTsKPiAgCj4gIAlpZiAoIWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2Fr ZV9wdXQpCj4gIAkJcmV0dXJuOwoKQXJlbid0IHdlIG1pc3NpbmcgdGhpcwoKZndfZG9tYWlucyAm PSBkZXZfcHJpdi0+dW5jb3JlLmZ3X2RvbWFpbnM7CgpoZXJlPyBJIHdvdWxkIGV4cGVjdCB0byBz ZWUgdGhlIFdBUk4gdHJpZ2dlcmluZyBiZWxvdyBkdWUgdG8Kd2FrZV9jb3VudD09MCB3aGVuIHRo ZSBkb21haW4gZG9lc24ndCBleGlzdC4KCj4gIAo+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9w cml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+ICAKPiAtCS8qIFJlZGlyZWN0IHRvIFZMViBz cGVjaWZpYyByb3V0aW5lICovCj4gLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSkg ewo+IC0JCXZsdl9mb3JjZV93YWtlX3B1dChkZXZfcHJpdiwgZndfZW5naW5lKTsKPiAtCX0gZWxz ZSB7Cj4gLQkJV0FSTl9PTighZGV2X3ByaXYtPnVuY29yZS5mb3JjZXdha2VfY291bnQpOwo+IC0J CWlmICgtLWRldl9wcml2LT51bmNvcmUuZm9yY2V3YWtlX2NvdW50ID09IDApIHsKPiAtCQkJZGV2 X3ByaXYtPnVuY29yZS5mb3JjZXdha2VfY291bnQrKzsKPiAtCQkJbW9kX3RpbWVyX3Bpbm5lZCgm ZGV2X3ByaXYtPnVuY29yZS5mb3JjZV93YWtlX3RpbWVyLAo+IC0JCQkJCSBqaWZmaWVzICsgMSk7 Cj4gLQkJfQo+ICsJZm9yIChpID0gMDsgaSA8IEZXX0RPTUFJTl9DT1VOVDsgaSsrKSB7Cj4gKwkJ aWYgKChmd19kb21haW5zICYgKDEgPDwgaSkpID09IDApCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiAr CQlXQVJOX09OKCFkZXZfcHJpdi0+dW5jb3JlLmZ3X2RvbWFpbltpXS53YWtlX2NvdW50KTsKPiAr CQlpZiAoLS1kZXZfcHJpdi0+dW5jb3JlLmZ3X2RvbWFpbltpXS53YWtlX2NvdW50KQo+ICsJCQlj b250aW51ZTsKPiArCgpNYXliZSBXQVJOX09OKHRpbWVyX3BlbmRpbmcoKSkgaGVyZT8KCj4gKwkJ ZGV2X3ByaXYtPnVuY29yZS5md19kb21haW5baV0ud2FrZV9jb3VudCsrOwo+ICsJCW1vZF90aW1l cl9waW5uZWQoJmRldl9wcml2LT51bmNvcmUuZndfZG9tYWluW2ldLnRpbWVyLAo+ICsJCQkJIGpp ZmZpZXMgKyAxKTsKPiAgCX0KPiAgCj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJp di0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiBAQCAtNDQxLDEwICs0MjAsMTMgQEAgdm9pZCBn ZW42X2d0X2ZvcmNlX3dha2VfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg aW50IGZ3X2VuZ2luZSkKPiAgCj4gIHZvaWQgYXNzZXJ0X2ZvcmNlX3dha2VfaW5hY3RpdmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gKwlpbnQgaTsKPiArCj4gIAlp ZiAoIWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQpCj4gIAkJcmV0dXJuOwo+ ICAKPiAtCVdBUk5fT04oZGV2X3ByaXYtPnVuY29yZS5mb3JjZXdha2VfY291bnQgPiAwKTsKPiAr CWZvciAoaSA9IDA7IGkgPCBGV19ET01BSU5fQ09VTlQ7IGkrKykKPiArCQlXQVJOX09OKGRldl9w cml2LT51bmNvcmUuZndfZG9tYWluW2ldLndha2VfY291bnQgPiAwKTsKPiAgfQo+ICAKPiAgLyog V2UgZ2l2ZSBmYXN0IHBhdGhzIGZvciB0aGUgcmVhbGx5IGNvb2wgcmVnaXN0ZXJzICovCj4gQEAg LTU3OCwxOSArNTYwLDM4IEBAIF9fZ2VuMl9yZWFkKDY0KQo+ICAJdHJhY2VfaTkxNV9yZWdfcnco ZmFsc2UsIHJlZywgdmFsLCBzaXplb2YodmFsKSwgdHJhY2UpOyBcCj4gIAlyZXR1cm4gdmFsCj4g IAo+ICtzdGF0aWMgaW5saW5lIHZvaWQgX19mb3JjZV93YWtlX2dldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICAgdW5zaWduZWQgZndfZG9tYWlucykKPiArewo+ ICsJaW50IGk7Cj4gKwo+ICsJLyogSWRlYWxseSBHQ0Mgd291bGQgYmUgY29uc3RhbnQtZm9sZCBh bmQgZWxpbWluYXRlIHRoaXMgbG9vcCAqLwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBGV19ET01B SU5fQ09VTlQ7IGkrKykgewo+ICsJCWlmICgoZndfZG9tYWlucyAmICgxIDw8IGkpKSA9PSAwKQo+ ICsJCQljb250aW51ZTsKPiArCj4gKwkJaWYgKGRldl9wcml2LT51bmNvcmUuZndfZG9tYWluW2ld Lndha2VfY291bnQpIHsKPiArCQkJZndfZG9tYWlucyAmPSB+KDEgPDwgaSk7Cj4gKwkJCWNvbnRp bnVlOwo+ICsJCX0KPiArCgpBbmQgaGVyZT8KCkkgdGhpbmsgSSBoYWQgc29tZSBjb25jZXJucyBh Ym91dCB0aGUgd2FrZV9jb3VudCB2cy4gdGltZXIgaGFuZGxpbmcgd2hlbgpJIHNhdyB0aGUgZmly c3QgdmVyc2lvbiBvZiB0aGlzIHBhdGNoLCBidXQgbm93IHRoYXQgSSBsb29rIGF0IHRoaXMgSQpj YW4ndCBzZWUgYW55dGhpbmcgd3Jvbmcgd2l0aCBpdC4KCj4gKwkJZGV2X3ByaXYtPnVuY29yZS5m d19kb21haW5baV0ud2FrZV9jb3VudCsrOwo+ICsJCW1vZF90aW1lcl9waW5uZWQoJmRldl9wcml2 LT51bmNvcmUuZndfZG9tYWluW2ldLnRpbWVyLAo+ICsJCQkJIGppZmZpZXMgKyAxKTsKPiArCX0K PiArCj4gKwlpZiAoZndfZG9tYWlucykKPiArCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNl X3dha2VfZ2V0KGRldl9wcml2LCBmd19kb21haW5zKTsKPiArfQo+ICsKPiAgI2RlZmluZSBfX2dl bjZfcmVhZCh4KSBcCj4gIHN0YXRpYyB1IyN4IFwKPiAgZ2VuNl9yZWFkIyN4KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgb2ZmX3QgcmVnLCBib29sIHRyYWNlKSB7IFwKPiAgCUdF TjZfUkVBRF9IRUFERVIoeCk7IFwKPiAgCWhzd191bmNsYWltZWRfcmVnX2RlYnVnKGRldl9wcml2 LCByZWcsIHRydWUsIHRydWUpOyBcCj4gLQlpZiAoZGV2X3ByaXYtPnVuY29yZS5mb3JjZXdha2Vf Y291bnQgPT0gMCAmJiBcCj4gLQkgICAgTkVFRFNfRk9SQ0VfV0FLRSgoZGV2X3ByaXYpLCAocmVn KSkpIHsgXAo+IC0JCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQoZGV2X3By aXYsIFwKPiAtCQkJCQkJICAgICAgRk9SQ0VXQUtFX0FMTCk7IFwKPiAtCQlkZXZfcHJpdi0+dW5j b3JlLmZvcmNld2FrZV9jb3VudCsrOyBcCj4gLQkJbW9kX3RpbWVyX3Bpbm5lZCgmZGV2X3ByaXYt PnVuY29yZS5mb3JjZV93YWtlX3RpbWVyLCBcCj4gLQkJCQkgamlmZmllcyArIDEpOyBcCgpUaGlz IHNlZW1zIHRvIGJlIGFnYWluc3Qgc29tZSBvdGhlciB0cmVlIHdoZXJlIHRoZSB0aW1lciBpcyBh bHJlYWR5IHVzZWQKZm9yIHJlZ2lzdGVyIGFjY2Vzc2VzLiBUaGF0J3Mgbm90IHRoZSBjYXNlIGlu IG5pZ2h0bHkgQUZBSUNTLgoKSSdtIGEgYml0IHdvcnJpZWQgYWJvdXQgbWFraW5nIHRoZSB0aW1l ciBjaGFuZ2UgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUKY29kZSByZWZhY3RvcmluZy4gSSB3b3Vs ZCBzdWdnZXN0IHJlZmFjdG9yaW5nIGZpcnN0LCBhbmQgdG9zc2luZyBpbiBhbm90aGVyCnBhdGNo IG9uIHRvcCB3aGljaCBleHBhbmRzIHRoZSB1c2Ugb2YgdGhlIHRpbWVyIHRvIGluY2x1ZGUgcmVn aXN0ZXIKYWNjZXNzLiBUaGF0IHdheSB3ZSBjb3VsZCBhdCBsZWFzdCByZXZlcnQgdGhlIHRpbWVy IHBhcnQgaWYgbmVjZXNzYXJ5CndpdGhvdXQgbG9zaW5nIHRoZSBtdWNoIGNsZWFuZXIgY29kZS4K CkFsc28gdGhlIGNvZGUgaW4gbmlnaHRseSBzdGlsbCBoYXMgdGhlIHJ1bnRpbWUgcG0gc3R1ZmYg aW4gdGhlIGZvcmNld2FrZQpjb2RlLiBJIGd1ZXNzIHlvdSBjbGVhbmVkIHRob3NlIG91dCBpbiB5 b3VyIHRyZWUsIGJ1dCBJIGRvbid0IHJlbWViZXIKc2VlaW5nIGEgcmVjZW50IHBhdGNoIG9uIHRo YXQgZnJvbnQuCgpPdGhlcndpc2UgdGhpcyBsb29rZCB2ZXJ5IG5pY2UgSU1PLCBzbyB3b3VsZCBi ZSBncmVhdCB0byBnZXQgaXQgaW4KZmluYWxseS4KCj4gLQl9IFwKPiArCWlmIChORUVEU19GT1JD RV9XQUtFKChkZXZfcHJpdiksIChyZWcpKSkgXAo+ICsJCV9fZm9yY2Vfd2FrZV9nZXQoZGV2X3By aXYsIEZPUkNFV0FLRV9SRU5ERVIpOyBcCj4gIAl2YWwgPSBfX3Jhd19pOTE1X3JlYWQjI3goZGV2 X3ByaXYsIHJlZyk7IFwKPiAgCWhzd191bmNsYWltZWRfcmVnX2RlYnVnKGRldl9wcml2LCByZWcs IHRydWUsIGZhbHNlKTsgXAo+ICAJR0VONl9SRUFEX0ZPT1RFUjsgXAo+IEBAIC01OTksNDUgKzYw MCwyNyBAQCBnZW42X3JlYWQjI3goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBv ZmZfdCByZWcsIGJvb2wgdHJhY2UpIHsgXAo+ICAjZGVmaW5lIF9fdmx2X3JlYWQoeCkgXAo+ICBz dGF0aWMgdSMjeCBcCj4gIHZsdl9yZWFkIyN4KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgb2ZmX3QgcmVnLCBib29sIHRyYWNlKSB7IFwKPiAtCXVuc2lnbmVkIGZ3ZW5naW5lID0g MDsgXAo+ICAJR0VONl9SRUFEX0hFQURFUih4KTsgXAo+IC0JaWYgKEZPUkNFV0FLRV9WTFZfUkVO REVSX1JBTkdFX09GRlNFVChyZWcpKSB7IFwKPiAtCQlpZiAoZGV2X3ByaXYtPnVuY29yZS5md19y ZW5kZXJjb3VudCA9PSAwKSBcCj4gLQkJCWZ3ZW5naW5lID0gRk9SQ0VXQUtFX1JFTkRFUjsgXAo+ IC0JfSBlbHNlIGlmIChGT1JDRVdBS0VfVkxWX01FRElBX1JBTkdFX09GRlNFVChyZWcpKSB7IFwK PiAtCQlpZiAoZGV2X3ByaXYtPnVuY29yZS5md19tZWRpYWNvdW50ID09IDApIFwKPiAtCQkJZndl bmdpbmUgPSBGT1JDRVdBS0VfTUVESUE7IFwKPiAtCX0gIFwKPiAtCWlmIChmd2VuZ2luZSkgXAo+ IC0JCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQoZGV2X3ByaXYsIGZ3ZW5n aW5lKTsgXAo+ICsJaWYgKEZPUkNFV0FLRV9WTFZfUkVOREVSX1JBTkdFX09GRlNFVChyZWcpKSBc Cj4gKwkJX19mb3JjZV93YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX1JFTkRFUik7IFwKPiAr CWVsc2UgaWYgKEZPUkNFV0FLRV9WTFZfTUVESUFfUkFOR0VfT0ZGU0VUKHJlZykpIFwKPiArCQlf X2ZvcmNlX3dha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfTUVESUEpOyBcCj4gIAl2YWwgPSBf X3Jhd19pOTE1X3JlYWQjI3goZGV2X3ByaXYsIHJlZyk7IFwKPiAtCWlmIChmd2VuZ2luZSkgXAo+ IC0JCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQoZGV2X3ByaXYsIGZ3ZW5n aW5lKTsgXAo+ICAJR0VONl9SRUFEX0ZPT1RFUjsgXAo+ICB9Cj4gIAo+ICAjZGVmaW5lIF9fY2h2 X3JlYWQoeCkgXAo+ICBzdGF0aWMgdSMjeCBcCj4gIGNodl9yZWFkIyN4KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgb2ZmX3QgcmVnLCBib29sIHRyYWNlKSB7IFwKPiAtCXVuc2ln bmVkIGZ3ZW5naW5lID0gMDsgXAo+ICAJR0VONl9SRUFEX0hFQURFUih4KTsgXAo+IC0JaWYgKEZP UkNFV0FLRV9DSFZfUkVOREVSX1JBTkdFX09GRlNFVChyZWcpKSB7IFwKPiAtCQlpZiAoZGV2X3By aXYtPnVuY29yZS5md19yZW5kZXJjb3VudCA9PSAwKSBcCj4gLQkJCWZ3ZW5naW5lID0gRk9SQ0VX QUtFX1JFTkRFUjsgXAo+IC0JfSBlbHNlIGlmIChGT1JDRVdBS0VfQ0hWX01FRElBX1JBTkdFX09G RlNFVChyZWcpKSB7IFwKPiAtCQlpZiAoZGV2X3ByaXYtPnVuY29yZS5md19tZWRpYWNvdW50ID09 IDApIFwKPiAtCQkJZndlbmdpbmUgPSBGT1JDRVdBS0VfTUVESUE7IFwKPiAtCX0gZWxzZSBpZiAo Rk9SQ0VXQUtFX0NIVl9DT01NT05fUkFOR0VfT0ZGU0VUKHJlZykpIHsgXAo+IC0JCWlmIChkZXZf cHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50ID09IDApIFwKPiAtCQkJZndlbmdpbmUgfD0gRk9S Q0VXQUtFX1JFTkRFUjsgXAo+IC0JCWlmIChkZXZfcHJpdi0+dW5jb3JlLmZ3X21lZGlhY291bnQg PT0gMCkgXAo+IC0JCQlmd2VuZ2luZSB8PSBGT1JDRVdBS0VfTUVESUE7IFwKPiAtCX0gXAo+IC0J aWYgKGZ3ZW5naW5lKSBcCj4gLQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dl dChkZXZfcHJpdiwgZndlbmdpbmUpOyBcCj4gKwlpZiAoRk9SQ0VXQUtFX0NIVl9SRU5ERVJfUkFO R0VfT0ZGU0VUKHJlZykpIFwKPiArCQlfX2ZvcmNlX3dha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdB S0VfUkVOREVSKTsgXAo+ICsJZWxzZSBpZiAoRk9SQ0VXQUtFX0NIVl9NRURJQV9SQU5HRV9PRkZT RVQocmVnKSkgXAo+ICsJCV9fZm9yY2Vfd2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9NRURJ QSk7IFwKPiArCWVsc2UgaWYgKEZPUkNFV0FLRV9DSFZfQ09NTU9OX1JBTkdFX09GRlNFVChyZWcp KSBcCj4gKwkJX19mb3JjZV93YWtlX2dldChkZXZfcHJpdiwgXAo+ICsJCQkJIEZPUkNFV0FLRV9S RU5ERVIgfCBGT1JDRVdBS0VfTUVESUEpOyBcCj4gIAl2YWwgPSBfX3Jhd19pOTE1X3JlYWQjI3go ZGV2X3ByaXYsIHJlZyk7IFwKPiAtCWlmIChmd2VuZ2luZSkgXAo+IC0JCWRldl9wcml2LT51bmNv cmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQoZGV2X3ByaXYsIGZ3ZW5naW5lKTsgXAo+ICAJR0VONl9S RUFEX0ZPT1RFUjsgXAo+ICB9Cj4gIAo+IEBAIC03NjYsMTcgKzc0OSw5IEBAIHN0YXRpYyB2b2lk IFwKPiAgZ2VuOF93cml0ZSMjeChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIG9m Zl90IHJlZywgdSMjeCB2YWwsIGJvb2wgdHJhY2UpIHsgXAo+ICAJR0VONl9XUklURV9IRUFERVI7 IFwKPiAgCWhzd191bmNsYWltZWRfcmVnX2RlYnVnKGRldl9wcml2LCByZWcsIGZhbHNlLCB0cnVl KTsgXAo+IC0JaWYgKHJlZyA8IDB4NDAwMDAgJiYgIWlzX2dlbjhfc2hhZG93ZWQoZGV2X3ByaXYs IHJlZykpIHsgXAo+IC0JCWlmIChkZXZfcHJpdi0+dW5jb3JlLmZvcmNld2FrZV9jb3VudCA9PSAw KSBcCj4gLQkJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9nZXQoZGV2X3ByaXYs CVwKPiAtCQkJCQkJCSAgICAgIEZPUkNFV0FLRV9BTEwpOyBcCj4gLQkJX19yYXdfaTkxNV93cml0 ZSMjeChkZXZfcHJpdiwgcmVnLCB2YWwpOyBcCj4gLQkJaWYgKGRldl9wcml2LT51bmNvcmUuZm9y Y2V3YWtlX2NvdW50ID09IDApIFwKPiAtCQkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93 YWtlX3B1dChkZXZfcHJpdiwgXAo+IC0JCQkJCQkJICAgICAgRk9SQ0VXQUtFX0FMTCk7IFwKPiAt CX0gZWxzZSB7IFwKPiAtCQlfX3Jhd19pOTE1X3dyaXRlIyN4KGRldl9wcml2LCByZWcsIHZhbCk7 IFwKPiAtCX0gXAo+ICsJaWYgKHJlZyA8IDB4NDAwMDAgJiYgIWlzX2dlbjhfc2hhZG93ZWQoZGV2 X3ByaXYsIHJlZykpIFwKPiArCQlfX2ZvcmNlX3dha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0Vf UkVOREVSKTsgXAo+ICsJX19yYXdfaTkxNV93cml0ZSMjeChkZXZfcHJpdiwgcmVnLCB2YWwpOyBc Cj4gIAloc3dfdW5jbGFpbWVkX3JlZ19kZWJ1ZyhkZXZfcHJpdiwgcmVnLCBmYWxzZSwgZmFsc2Up OyBcCj4gIAloc3dfdW5jbGFpbWVkX3JlZ19kZXRlY3QoZGV2X3ByaXYpOyBcCj4gIAlHRU42X1dS SVRFX0ZPT1RFUjsgXAo+IEBAIC03ODUsMjggKzc2MCwxNyBAQCBnZW44X3dyaXRlIyN4KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgb2ZmX3QgcmVnLCB1IyN4IHZhbCwgYm9vbCB0 cmFjZQo+ICAjZGVmaW5lIF9fY2h2X3dyaXRlKHgpIFwKPiAgc3RhdGljIHZvaWQgXAo+ICBjaHZf d3JpdGUjI3goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBvZmZfdCByZWcsIHUj I3ggdmFsLCBib29sIHRyYWNlKSB7IFwKPiAtCXVuc2lnbmVkIGZ3ZW5naW5lID0gMDsgXAo+ICAJ Ym9vbCBzaGFkb3dlZCA9IGlzX2dlbjhfc2hhZG93ZWQoZGV2X3ByaXYsIHJlZyk7IFwKPiAgCUdF TjZfV1JJVEVfSEVBREVSOyBcCj4gIAlpZiAoIXNoYWRvd2VkKSB7IFwKPiAtCQlpZiAoRk9SQ0VX QUtFX0NIVl9SRU5ERVJfUkFOR0VfT0ZGU0VUKHJlZykpIHsgXAo+IC0JCQlpZiAoZGV2X3ByaXYt PnVuY29yZS5md19yZW5kZXJjb3VudCA9PSAwKSBcCj4gLQkJCQlmd2VuZ2luZSA9IEZPUkNFV0FL RV9SRU5ERVI7IFwKPiAtCQl9IGVsc2UgaWYgKEZPUkNFV0FLRV9DSFZfTUVESUFfUkFOR0VfT0ZG U0VUKHJlZykpIHsgXAo+IC0JCQlpZiAoZGV2X3ByaXYtPnVuY29yZS5md19tZWRpYWNvdW50ID09 IDApIFwKPiAtCQkJCWZ3ZW5naW5lID0gRk9SQ0VXQUtFX01FRElBOyBcCj4gLQkJfSBlbHNlIGlm IChGT1JDRVdBS0VfQ0hWX0NPTU1PTl9SQU5HRV9PRkZTRVQocmVnKSkgeyBcCj4gLQkJCWlmIChk ZXZfcHJpdi0+dW5jb3JlLmZ3X3JlbmRlcmNvdW50ID09IDApIFwKPiAtCQkJCWZ3ZW5naW5lIHw9 IEZPUkNFV0FLRV9SRU5ERVI7IFwKPiAtCQkJaWYgKGRldl9wcml2LT51bmNvcmUuZndfbWVkaWFj b3VudCA9PSAwKSBcCj4gLQkJCQlmd2VuZ2luZSB8PSBGT1JDRVdBS0VfTUVESUE7IFwKPiAtCQl9 IFwKPiArCQlpZiAoRk9SQ0VXQUtFX0NIVl9SRU5ERVJfUkFOR0VfT0ZGU0VUKHJlZykpIFwKPiAr CQkJX19mb3JjZV93YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX1JFTkRFUik7IFwKPiArCQll bHNlIGlmIChGT1JDRVdBS0VfQ0hWX01FRElBX1JBTkdFX09GRlNFVChyZWcpKSBcCj4gKwkJCV9f Zm9yY2Vfd2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9NRURJQSk7IFwKPiArCQllbHNlIGlm IChGT1JDRVdBS0VfQ0hWX0NPTU1PTl9SQU5HRV9PRkZTRVQocmVnKSkgXAo+ICsJCQlfX2ZvcmNl X3dha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfUkVOREVSIHwgRk9SQ0VXQUtFX01FRElBKTsg XAo+ICAJfSBcCj4gLQlpZiAoZndlbmdpbmUpIFwKPiAtCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNz LmZvcmNlX3dha2VfZ2V0KGRldl9wcml2LCBmd2VuZ2luZSk7IFwKPiAgCV9fcmF3X2k5MTVfd3Jp dGUjI3goZGV2X3ByaXYsIHJlZywgdmFsKTsgXAo+IC0JaWYgKGZ3ZW5naW5lKSBcCj4gLQkJZGV2 X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX3B1dChkZXZfcHJpdiwgZndlbmdpbmUpOyBc Cj4gIAlHRU42X1dSSVRFX0ZPT1RFUjsgXAo+ICB9Cj4gIAo+IEBAIC04MzcsMTggKzgwMSwxOCBA QCBfX2dlbjZfd3JpdGUoNjQpCj4gIHZvaWQgaW50ZWxfdW5jb3JlX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCj4gLQlzZXR1cF90aW1lcigmZGV2X3ByaXYtPnVuY29yZS5m b3JjZV93YWtlX3RpbWVyLAo+IC0JCSAgICBnZW42X2ZvcmNlX3dha2VfdGltZXIsICh1bnNpZ25l ZCBsb25nKWRldl9wcml2KTsKPiArCWludCBpOwo+ICAKPiAgCWludGVsX3VuY29yZV9lYXJseV9z YW5pdGl6ZShkZXYsIGZhbHNlKTsKPiAgCj4gIAlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4g IAkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dldCA9IF9fdmx2X2ZvcmNlX3dh a2VfZ2V0Owo+ICAJCWRldl9wcml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPSBfX3Zs dl9mb3JjZV93YWtlX3B1dDsKPiArCQlkZXZfcHJpdi0+dW5jb3JlLmZ3X2RvbWFpbnMgPSBGT1JD RVdBS0VfUkVOREVSIHwgRk9SQ0VXQUtFX01FRElBOwo+ICAJfSBlbHNlIGlmIChJU19IQVNXRUxM KGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpIHsKPiAgCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNz LmZvcmNlX3dha2VfZ2V0ID0gX19nZW43X2d0X2ZvcmNlX3dha2VfbXRfZ2V0Owo+ICAJCWRldl9w cml2LT51bmNvcmUuZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPSBfX2dlbjdfZ3RfZm9yY2Vfd2FrZV9t dF9wdXQ7Cj4gKwkJZGV2X3ByaXYtPnVuY29yZS5md19kb21haW5zID0gRk9SQ0VXQUtFX1JFTkRF UjsKPiAgCX0gZWxzZSBpZiAoSVNfSVZZQlJJREdFKGRldikpIHsKPiAgCQl1MzIgZWNvYnVzOwo+ ICAKPiBAQCAtODgwLDExICs4NDQsMjIgQEAgdm9pZCBpbnRlbF91bmNvcmVfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJCQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLmZvcmNlX3dha2Vf cHV0ID0KPiAgCQkJCV9fZ2VuNl9ndF9mb3JjZV93YWtlX3B1dDsKPiAgCQl9Cj4gKwkJZGV2X3By aXYtPnVuY29yZS5md19kb21haW5zID0gRk9SQ0VXQUtFX1JFTkRFUjsKPiAgCX0gZWxzZSBpZiAo SVNfR0VONihkZXYpKSB7Cj4gIAkJZGV2X3ByaXYtPnVuY29yZS5mdW5jcy5mb3JjZV93YWtlX2dl dCA9Cj4gIAkJCV9fZ2VuNl9ndF9mb3JjZV93YWtlX2dldDsKPiAgCQlkZXZfcHJpdi0+dW5jb3Jl LmZ1bmNzLmZvcmNlX3dha2VfcHV0ID0KPiAgCQkJX19nZW42X2d0X2ZvcmNlX3dha2VfcHV0Owo+ ICsJCWRldl9wcml2LT51bmNvcmUuZndfZG9tYWlucyA9IEZPUkNFV0FLRV9SRU5ERVI7Cj4gKwl9 Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IEZXX0RPTUFJTl9DT1VOVDsgaSsrKSB7Cj4gKwkJZGV2 X3ByaXYtPnVuY29yZS5md19kb21haW5baV0uaTkxNSA9IGRldl9wcml2Owo+ICsJCWRldl9wcml2 LT51bmNvcmUuZndfZG9tYWluW2ldLmlkID0gaTsKPiArCj4gKwkJc2V0dXBfdGltZXIoJmRldl9w cml2LT51bmNvcmUuZndfZG9tYWluW2ldLnRpbWVyLAo+ICsJCQkgICAgZ2VuNl9mb3JjZV93YWtl X3RpbWVyLAo+ICsJCQkgICAgKHVuc2lnbmVkIGxvbmcpJmRldl9wcml2LT51bmNvcmUuZndfZG9t YWluW2ldKTsKPiAgCX0KPiAgCj4gIAlzd2l0Y2ggKElOVEVMX0lORk8oZGV2KS0+Z2VuKSB7Cj4g LS0gCj4gMS45LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK