From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 17/46] drm/i915: Syntatic sugar for using intel_runtime_pm Date: Wed, 09 Jan 2019 16:30:44 +0200 Message-ID: <87d0p5299n.fsf@gaia.fi.intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-17-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2F67D6EC78 for ; Wed, 9 Jan 2019 14:32:26 +0000 (UTC) In-Reply-To: <20190107115509.12523-17-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: Jani Nikula List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gRnJlcXVl bnRseSwgd2UgdXNlIGludGVsX3J1bnRpbWVfcG1fZ2V0L19wdXQgYXJvdW5kIGEgc21hbGwgYmxv Y2suCj4gRm9ybWFsaXNlIHRoYXQgdXNhZ2UgYnkgcHJvdmlkaW5nIGEgbWFjcm8gdG8gZGVmaW5l IHN1Y2ggYSBibG9jayB3aXRoIGFuCj4gYXV0b21hdGljIGNsb3N1cmUgdG8gc2NvcGUgdGhlIGlu dGVsX3J1bnRpbWVfcG0gd2FrZXJlZiB0byB0aGF0IGJsb2NrLAo+IGkuZS4gbWFjcm8gYWJ1c2Ug c21lbGxpbmcgb2YgcHl0aG9uLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRl bC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAg ICAgICB8IDE2MiArKysrKysrKy0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyAgICAgICAgICAgICAgIHwgIDEwICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jICAgICAgICAgICB8ICAyMyArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc2hyaW5rZXIuYyAgICAgIHwgIDUxICsrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BtdS5jICAgICAgICAgICAgICAgfCAgIDcgKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zeXNmcy5jICAgICAgICAgICAgIHwgICA3ICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICAgOCArCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2cuYyAgICAgICAgICB8ICAyNiArKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjLmMgICAgICAgICAgICAgIHwgICA3ICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICAgICAgICB8ICAxOCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyAgICAgICAgICAgfCAgMzAgKystLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYyAgICAgfCAgMzQgKystLQo+ICAuLi4v Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgfCAgMTIgKy0KPiAgLi4u L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMgIHwgIDExICstCj4gIC4u Li9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYyAgICB8ICAyOCArLS0KPiAg MTUgZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDIzMSBkZWxldGlvbnMoLSkKPgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggZDY2N2IwNWU3Y2E0Li4xNTIx ZTA4ODYxZDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC05NTMs OSArOTUzLDkgQEAgc3RhdGljIGludCBpOTE1X2dwdV9pbmZvX29wZW4oc3RydWN0IGlub2RlICpp bm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gIAlzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmdwdTsK PiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50 aW1lX3BtX2dldChpOTE1KTsKPiAtCWdwdSA9IGk5MTVfY2FwdHVyZV9ncHVfc3RhdGUoaTkxNSk7 Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiArCWdwdSA9IE5VTEw7 Cj4gKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0oaTkxNSwgd2FrZXJlZikKPiArCQlncHUgPSBpOTE1 X2NhcHR1cmVfZ3B1X3N0YXRlKGk5MTUpOwo+ICAJaWYgKElTX0VSUihncHUpKQo+ICAJCXJldHVy biBQVFJfRVJSKGdwdSk7Cj4gIAo+IEBAIC0xMjg3LDE3ICsxMjg3LDE1IEBAIHN0YXRpYyBpbnQg aTkxNV9oYW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAg CQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQo ZGV2X3ByaXYpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGRldl9wcml2LCB3YWtlcmVmKSB7 Cj4gKwkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7Cj4gKwkJCWFjdGhk W2lkXSA9IGludGVsX2VuZ2luZV9nZXRfYWN0aXZlX2hlYWQoZW5naW5lKTsKPiArCQkJc2Vxbm9b aWRdID0gaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpOwo+ICsJCX0KPiAgCj4gLQlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPiAtCQlhY3RoZFtpZF0gPSBpbnRl bF9lbmdpbmVfZ2V0X2FjdGl2ZV9oZWFkKGVuZ2luZSk7Cj4gLQkJc2Vxbm9baWRdID0gaW50ZWxf ZW5naW5lX2dldF9zZXFubyhlbmdpbmUpOwo+ICsJCWludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUo ZGV2X3ByaXYtPmVuZ2luZVtSQ1NdLCAmaW5zdGRvbmUpOwo+ICAJfQo+ICAKPiAtCWludGVsX2Vu Z2luZV9nZXRfaW5zdGRvbmUoZGV2X3ByaXYtPmVuZ2luZVtSQ1NdLCAmaW5zdGRvbmUpOwo+IC0K PiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiAtCj4gIAlpZiAo dGltZXJfcGVuZGluZygmZGV2X3ByaXYtPmdwdV9lcnJvci5oYW5nY2hlY2tfd29yay50aW1lcikp Cj4gIAkJc2VxX3ByaW50ZihtLCAiSGFuZ2NoZWNrIGFjdGl2ZSwgdGltZXIgZmlyZXMgaW4gJWRt c1xuIiwKPiAgCQkJICAgamlmZmllc190b19tc2VjcyhkZXZfcHJpdi0+Z3B1X2Vycm9yLmhhbmdj aGVja193b3JrLnRpbWVyLmV4cGlyZXMgLQo+IEBAIC0xNTczLDE4ICsxNTcxLDE2IEBAIHN0YXRp YyBpbnQgaTkxNV9kcnBjX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNSht LT5wcml2YXRlKTsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0JaW50IGVycjsKPiAt Cj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+IC0KPiAtCWlm IChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiAt CQllcnIgPSB2bHZfZHJwY19pbmZvKG0pOwo+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA2KQo+IC0JCWVyciA9IGdlbjZfZHJwY19pbmZvKG0pOwo+IC0JZWxzZQo+IC0JCWVyciA9 IGlyb25sYWtlX2RycGNfaW5mbyhtKTsKPiArCWludCBlcnIgPSAtRU5PREVWOwo+ICAKPiAtCWlu dGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiArCXdpdGhfaW50ZWxfcnVu dGltZV9wbShkZXZfcHJpdiwgd2FrZXJlZikgewo+ICsJCWlmIChJU19WQUxMRVlWSUVXKGRldl9w cml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiArCQkJZXJyID0gdmx2X2RycGNfaW5m byhtKTsKPiArCQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCj4gKwkJCWVyciA9 IGdlbjZfZHJwY19pbmZvKG0pOwo+ICsJCWVsc2UKPiArCQkJZXJyID0gaXJvbmxha2VfZHJwY19p bmZvKG0pOwo+ICsJfQo+ICAKPiAgCXJldHVybiBlcnI7Cj4gIH0KPiBAQCAtMjA2OCw4ICsyMDY0 LDcgQEAgc3RhdGljIGludCBpOTE1X3Jwc19ib29zdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJc3RydWN0IGRybV9m aWxlICpmaWxlOwo+ICAKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91 c2UoZGV2X3ByaXYpOwo+IC0JaWYgKHdha2VyZWYpIHsKPiArCXdpdGhfaW50ZWxfcnVudGltZV9w bV9pZl9pbl91c2UoZGV2X3ByaXYsIHdha2VyZWYpIHsKPiAgCQlpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQkJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiAgCQkJYWN0X2ZyZXEgPSB2bHZfcHVuaXRfcmVhZChkZXZf cHJpdiwKPiBAQCAtMjA4MCw3ICsyMDc1LDYgQEAgc3RhdGljIGludCBpOTE1X3Jwc19ib29zdF9p bmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQkJYWN0X2ZyZXEgPSBpbnRl bF9nZXRfY2FnZihkZXZfcHJpdiwKPiAgCQkJCQkJICBJOTE1X1JFQUQoR0VONl9SUFNUQVQxKSk7 Cj4gIAkJfQo+IC0JCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiAg CX0KPiAgCj4gIAlzZXFfcHJpbnRmKG0sICJSUFMgZW5hYmxlZD8gJWRcbiIsIHJwcy0+ZW5hYmxl ZCk7Cj4gQEAgLTIxNzIsOSArMjE2Niw4IEBAIHN0YXRpYyBpbnQgaTkxNV9odWNfbG9hZF9zdGF0 dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAlwID0gZHJtX3NlcV9m aWxlX3ByaW50ZXIobSk7Cj4gIAlpbnRlbF91Y19md19kdW1wKCZkZXZfcHJpdi0+aHVjLmZ3LCAm cCk7Cj4gIAo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAt CXNlcV9wcmludGYobSwgIlxuSHVDIHN0YXR1cyAweCUwOHg6XG4iLCBJOTE1X1JFQUQoSFVDX1NU QVRVUzIpKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsKPiAr CXdpdGhfaW50ZWxfcnVudGltZV9wbShkZXZfcHJpdiwgd2FrZXJlZikKPiArCQlzZXFfcHJpbnRm KG0sICJcbkh1QyBzdGF0dXMgMHglMDh4OlxuIiwgSTkxNV9SRUFEKEhVQ19TVEFUVVMyKSk7Cj4g IAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMjE4NCw3ICsyMTc3LDYgQEAgc3RhdGljIGludCBp OTE1X2d1Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5w cml2YXRlKTsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAJc3RydWN0IGRybV9wcmlu dGVyIHA7Cj4gLQl1MzIgdG1wLCBpOwo+ICAKPiAgCWlmICghSEFTX0dVQyhkZXZfcHJpdikpCj4g IAkJcmV0dXJuIC1FTk9ERVY7Cj4gQEAgLTIxOTIsMjIgKzIxODQsMjMgQEAgc3RhdGljIGludCBp OTE1X2d1Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkK PiAgCXAgPSBkcm1fc2VxX2ZpbGVfcHJpbnRlcihtKTsKPiAgCWludGVsX3VjX2Z3X2R1bXAoJmRl dl9wcml2LT5ndWMuZncsICZwKTsKPiAgCj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOwo+IC0KPiAtCXRtcCA9IEk5MTVfUkVBRChHVUNfU1RBVFVTKTsKPiAtCj4g LQlzZXFfcHJpbnRmKG0sICJcbkd1QyBzdGF0dXMgMHglMDh4OlxuIiwgdG1wKTsKPiAtCXNlcV9w cmludGYobSwgIlx0Qm9vdHJvbSBzdGF0dXMgPSAweCV4XG4iLAo+IC0JCSh0bXAgJiBHU19CT09U Uk9NX01BU0spID4+IEdTX0JPT1RST01fU0hJRlQpOwo+IC0Jc2VxX3ByaW50ZihtLCAiXHR1S2Vy bmVsIHN0YXR1cyA9IDB4JXhcbiIsCj4gLQkJKHRtcCAmIEdTX1VLRVJORUxfTUFTSykgPj4gR1Nf VUtFUk5FTF9TSElGVCk7Cj4gLQlzZXFfcHJpbnRmKG0sICJcdE1JQSBDb3JlIHN0YXR1cyA9IDB4 JXhcbiIsCj4gLQkJKHRtcCAmIEdTX01JQV9NQVNLKSA+PiBHU19NSUFfU0hJRlQpOwo+IC0Jc2Vx X3B1dHMobSwgIlxuU2NyYXRjaCByZWdpc3RlcnM6XG4iKTsKPiAtCWZvciAoaSA9IDA7IGkgPCAx NjsgaSsrKQo+IC0JCXNlcV9wcmludGYobSwgIlx0JTJkOiBcdDB4JXhcbiIsIGksIEk5MTVfUkVB RChTT0ZUX1NDUkFUQ0goaSkpKTsKPiAtCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJp diwgd2FrZXJlZik7Cj4gKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0oZGV2X3ByaXYsIHdha2VyZWYp IHsKPiArCQl1MzIgdG1wID0gSTkxNV9SRUFEKEdVQ19TVEFUVVMpOwo+ICsJCXUzMiBpOwo+ICsK PiArCQlzZXFfcHJpbnRmKG0sICJcbkd1QyBzdGF0dXMgMHglMDh4OlxuIiwgdG1wKTsKPiArCQlz ZXFfcHJpbnRmKG0sICJcdEJvb3Ryb20gc3RhdHVzID0gMHgleFxuIiwKPiArCQkJICAgKHRtcCAm IEdTX0JPT1RST01fTUFTSykgPj4gR1NfQk9PVFJPTV9TSElGVCk7Cj4gKwkJc2VxX3ByaW50Ziht LCAiXHR1S2VybmVsIHN0YXR1cyA9IDB4JXhcbiIsCj4gKwkJCSAgICh0bXAgJiBHU19VS0VSTkVM X01BU0spID4+IEdTX1VLRVJORUxfU0hJRlQpOwo+ICsJCXNlcV9wcmludGYobSwgIlx0TUlBIENv cmUgc3RhdHVzID0gMHgleFxuIiwKPiArCQkJICAgKHRtcCAmIEdTX01JQV9NQVNLKSA+PiBHU19N SUFfU0hJRlQpOwo+ICsJCXNlcV9wdXRzKG0sICJcblNjcmF0Y2ggcmVnaXN0ZXJzOlxuIik7Cj4g KwkJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKPiArCQkJc2VxX3ByaW50ZihtLCAiXHQlMmQ6 IFx0MHgleFxuIiwKPiArCQkJCSAgIGksIEk5MTVfUkVBRChTT0ZUX1NDUkFUQ0goaSkpKTsKPiAr CQl9Cj4gKwl9Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMjY4MCwxOSArMjY3MywxNCBA QCBzdGF0aWMgaW50IGk5MTVfZW5lcmd5X3VKKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikKPiAgCQlyZXR1cm4gLUVOT0RFVjsK PiAgCj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+IC0KPiAt CWlmIChyZG1zcmxfc2FmZShNU1JfUkFQTF9QT1dFUl9VTklULCAmcG93ZXIpKSB7Cj4gLQkJaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICsJaWYgKHJkbXNybF9zYWZl KE1TUl9SQVBMX1BPV0VSX1VOSVQsICZwb3dlcikpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gLQl9 Cj4gIAo+ICAJdW5pdHMgPSAocG93ZXIgJiAweDFmMDApID4+IDg7Cj4gLQlwb3dlciA9IEk5MTVf UkVBRChNQ0hfU0VDUF9OUkdfU1RUUyk7Cj4gLQlwb3dlciA9ICgxMDAwMDAwICogcG93ZXIpID4+ IHVuaXRzOyAvKiBjb252ZXJ0IHRvIHVKICovCj4gLQo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQo ZGV2X3ByaXYsIHdha2VyZWYpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGRldl9wcml2LCB3 YWtlcmVmKQo+ICsJCXBvd2VyID0gSTkxNV9SRUFEKE1DSF9TRUNQX05SR19TVFRTKTsKPiAgCj4g Kwlwb3dlciA9ICgxMDAwMDAwICogcG93ZXIpID4+IHVuaXRzOyAvKiBjb252ZXJ0IHRvIHVKICov Cj4gIAlzZXFfcHJpbnRmKG0sICIlbGx1IiwgcG93ZXIpOwo+ICAKPiAgCXJldHVybiAwOwo+IEBA IC0zMjc1LDIyICszMjYzLDIwIEBAIHN0YXRpYyBzc2l6ZV90IGk5MTVfaXBjX3N0YXR1c193cml0 ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCj4gIAlzdHJ1Y3Qg c2VxX2ZpbGUgKm0gPSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7 Cj4gLQlpbnQgcmV0Owo+ICAJYm9vbCBlbmFibGU7Cj4gKwlpbnQgcmV0Owo+ICAKPiAgCXJldCA9 IGtzdHJ0b2Jvb2xfZnJvbV91c2VyKHVidWYsIGxlbiwgJmVuYWJsZSk7Cj4gIAlpZiAocmV0IDwg MCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dl dChkZXZfcHJpdik7Cj4gLQo+IC0JaWYgKCFkZXZfcHJpdi0+aXBjX2VuYWJsZWQgJiYgZW5hYmxl KQo+IC0JCURSTV9JTkZPKCJFbmFibGluZyBJUEM6IFdNIHdpbGwgYmUgcHJvcGVyIG9ubHkgYWZ0 ZXIgbmV4dCBjb21taXRcbiIpOwo+IC0JZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jpb3Nfd20gPSB0 cnVlOwo+IC0JZGV2X3ByaXYtPmlwY19lbmFibGVkID0gZW5hYmxlOwo+IC0JaW50ZWxfZW5hYmxl X2lwYyhkZXZfcHJpdik7Cj4gLQo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdh a2VyZWYpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGRldl9wcml2LCB3YWtlcmVmKSB7Cj4g KwkJaWYgKCFkZXZfcHJpdi0+aXBjX2VuYWJsZWQgJiYgZW5hYmxlKQo+ICsJCQlEUk1fSU5GTygi RW5hYmxpbmcgSVBDOiBXTSB3aWxsIGJlIHByb3BlciBvbmx5IGFmdGVyIG5leHQgY29tbWl0XG4i KTsKPiArCQlkZXZfcHJpdi0+d20uZGlzdHJ1c3RfYmlvc193bSA9IHRydWU7Cj4gKwkJZGV2X3By aXYtPmlwY19lbmFibGVkID0gZW5hYmxlOwo+ICsJCWludGVsX2VuYWJsZV9pcGMoZGV2X3ByaXYp Owo+ICsJfQo+ICAKPiAgCXJldHVybiBsZW47Cj4gIH0KPiBAQCAtNDEzMCwxNiArNDExNiwxMyBA QCBpOTE1X2NhY2hlX3NoYXJpbmdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKQo+ICB7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRhOwo+ICAJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7Cj4gLQl1MzIgc25wY3I7Cj4gKwl1MzIgc25wY3IgPSAwOwo+ICAKPiAgCWlm ICghKElTX0dFTl9SQU5HRShkZXZfcHJpdiwgNiwgNykpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ ICAKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gLQo+IC0J c25wY3IgPSBJOTE1X1JFQUQoR0VONl9NQkNVTklUX1NOUENSKTsKPiAtCj4gLQlpbnRlbF9ydW50 aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0o ZGV2X3ByaXYsIHdha2VyZWYpCj4gKwkJc25wY3IgPSBJOTE1X1JFQUQoR0VONl9NQkNVTklUX1NO UENSKTsKPiAgCj4gIAkqdmFsID0gKHNucGNyICYgR0VONl9NQkNfU05QQ1JfTUFTSykgPj4gR0VO Nl9NQkNfU05QQ1JfU0hJRlQ7Cj4gIAo+IEBAIC00MTUxLDcgKzQxMzQsNiBAQCBpOTE1X2NhY2hl X3NoYXJpbmdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7Cj4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsK PiAtCXUzMiBzbnBjcjsKPiAgCj4gIAlpZiAoIShJU19HRU5fUkFOR0UoZGV2X3ByaXYsIDYsIDcp KSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiBAQCAtNDE1OSwxNiArNDE0MSwxNyBAQCBpOTE1X2Nh Y2hlX3NoYXJpbmdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIAlpZiAodmFsID4gMykKPiAg CQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQo ZGV2X3ByaXYpOwo+ICAJRFJNX0RFQlVHX0RSSVZFUigiTWFudWFsbHkgc2V0dGluZyB1bmNvcmUg c2hhcmluZyB0byAlbGx1XG4iLCB2YWwpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGRldl9w cml2LCB3YWtlcmVmKSB7Cj4gKwkJdTMyIHNucGNyOwo+ICsKPiArCQkvKiBVcGRhdGUgdGhlIGNh Y2hlIHNoYXJpbmcgcG9saWN5IGhlcmUgYXMgd2VsbCAqLwo+ICsJCXNucGNyID0gSTkxNV9SRUFE KEdFTjZfTUJDVU5JVF9TTlBDUik7Cj4gKwkJc25wY3IgJj0gfkdFTjZfTUJDX1NOUENSX01BU0s7 Cj4gKwkJc25wY3IgfD0gdmFsIDw8IEdFTjZfTUJDX1NOUENSX1NISUZUOwo+ICsJCUk5MTVfV1JJ VEUoR0VONl9NQkNVTklUX1NOUENSLCBzbnBjcik7Cj4gKwl9Cj4gIAo+IC0JLyogVXBkYXRlIHRo ZSBjYWNoZSBzaGFyaW5nIHBvbGljeSBoZXJlIGFzIHdlbGwgKi8KPiAtCXNucGNyID0gSTkxNV9S RUFEKEdFTjZfTUJDVU5JVF9TTlBDUik7Cj4gLQlzbnBjciAmPSB+R0VONl9NQkNfU05QQ1JfTUFT SzsKPiAtCXNucGNyIHw9ICh2YWwgPDwgR0VONl9NQkNfU05QQ1JfU0hJRlQpOwo+IC0JSTkxNV9X UklURShHRU42X01CQ1VOSVRfU05QQ1IsIHNucGNyKTsKPiAtCj4gLQlpbnRlbF9ydW50aW1lX3Bt X3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBAQCAtNDQw NSwyMCArNDM4OCwxNyBAQCBzdGF0aWMgaW50IGk5MTVfc3NldV9zdGF0dXMoc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAlzc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlID0KPiAg CQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOwo+ICAK PiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gLQo+IC0JaWYg KElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gLQkJY2hlcnJ5dmlld19zc2V1X2RldmljZV9z dGF0dXMoZGV2X3ByaXYsICZzc2V1KTsKPiAtCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9w cml2KSkgewo+IC0JCWJyb2Fkd2VsbF9zc2V1X2RldmljZV9zdGF0dXMoZGV2X3ByaXYsICZzc2V1 KTsKPiAtCX0gZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA5KSkgewo+IC0JCWdlbjlfc3NldV9k ZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAmc3NldSk7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTApIHsKPiAtCQlnZW4xMF9zc2V1X2RldmljZV9zdGF0dXMoZGV2X3ByaXYs ICZzc2V1KTsKPiArCXdpdGhfaW50ZWxfcnVudGltZV9wbShkZXZfcHJpdiwgd2FrZXJlZikgewo+ ICsJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiArCQkJY2hlcnJ5dmlld19zc2V1X2Rl dmljZV9zdGF0dXMoZGV2X3ByaXYsICZzc2V1KTsKPiArCQllbHNlIGlmIChJU19CUk9BRFdFTEwo ZGV2X3ByaXYpKQo+ICsJCQlicm9hZHdlbGxfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAm c3NldSk7Cj4gKwkJZWxzZSBpZiAoSVNfR0VOKGRldl9wcml2LCA5KSkKPiArCQkJZ2VuOV9zc2V1 X2RldmljZV9zdGF0dXMoZGV2X3ByaXYsICZzc2V1KTsKPiArCQllbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDEwKQo+ICsJCQlnZW4xMF9zc2V1X2RldmljZV9zdGF0dXMoZGV2X3ByaXYs ICZzc2V1KTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2Fr ZXJlZik7Cj4gLQo+ICAJaTkxNV9wcmludF9zc2V1X2luZm8obSwgZmFsc2UsICZzc2V1KTsKPiAg Cj4gIAlyZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBlMDRkYWRlY2E4 NzkuLjlkZDMxYzMyMzZmYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC04MTQs MTMgKzgxNCwxMyBAQCB2b2lkIGk5MTVfZ2VtX2ZsdXNoX2dndHRfd3JpdGVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlpOTE1X2dlbV9jaGlwc2V0X2ZsdXNoKGRl dl9wcml2KTsKPiAgCj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYp Owo+IC0Jc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiArCXdpdGhfaW50 ZWxfcnVudGltZV9wbShkZXZfcHJpdiwgd2FrZXJlZikgewo+ICsJCXNwaW5fbG9ja19pcnEoJmRl dl9wcml2LT51bmNvcmUubG9jayk7Cj4gIAo+IC0JUE9TVElOR19SRUFEX0ZXKFJJTkdfSEVBRChS RU5ERVJfUklOR19CQVNFKSk7Cj4gKwkJUE9TVElOR19SRUFEX0ZXKFJJTkdfSEVBRChSRU5ERVJf UklOR19CQVNFKSk7Cj4gIAo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2spOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICsJCXNw aW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiArCX0KPiAgfQo+ICAKPiAg c3RhdGljIHZvaWQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IDRiZWMx MDI4NjQ4Ny4uOWU5Y2UzMTE0MmIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMKPiBAQCAtMjUzNiw5ICsyNTM2LDggQEAgc3RhdGljIGludCBnZ3R0X2JpbmRfdm1hKHN0cnVj dCBpOTE1X3ZtYSAqdm1hLAo+ICAJaWYgKGk5MTVfZ2VtX29iamVjdF9pc19yZWFkb25seShvYmop KQo+ICAJCXB0ZV9mbGFncyB8PSBQVEVfUkVBRF9PTkxZOwo+ICAKPiAtCXdha2VyZWYgPSBpbnRl bF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAtCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+ dm0sIHZtYSwgY2FjaGVfbGV2ZWwsIHB0ZV9mbGFncyk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1 dChpOTE1LCB3YWtlcmVmKTsKPiArCXdpdGhfaW50ZWxfcnVudGltZV9wbShpOTE1LCB3YWtlcmVm KQo+ICsJCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHZtYSwgY2FjaGVfbGV2ZWws IHB0ZV9mbGFncyk7Cj4gIAo+ICAJdm1hLT5wYWdlX3NpemVzLmd0dCA9IEk5MTVfR1RUX1BBR0Vf U0laRTsKPiAgCj4gQEAgLTI1NTcsOSArMjU1Niw4IEBAIHN0YXRpYyB2b2lkIGdndHRfdW5iaW5k X3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gdm1hLT52bS0+aTkxNTsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAt CXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAtCXZtYS0+dm0tPmNsZWFy X3JhbmdlKHZtYS0+dm0sIHZtYS0+bm9kZS5zdGFydCwgdm1hLT5zaXplKTsKPiAtCWludGVsX3J1 bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5 MTUsIHdha2VyZWYpCj4gKwkJdm1hLT52bS0+Y2xlYXJfcmFuZ2Uodm1hLT52bSwgdm1hLT5ub2Rl LnN0YXJ0LCB2bWEtPnNpemUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IGFsaWFzaW5nX2d0dF9i aW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiBAQCAtMjU5Myw5ICsyNTkxLDEwIEBAIHN0 YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAJ aWYgKGZsYWdzICYgSTkxNV9WTUFfR0xPQkFMX0JJTkQpIHsKPiAgCQlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKPiAgCj4gLQkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ IC0JCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHZtYSwgY2FjaGVfbGV2ZWwsIHB0 ZV9mbGFncyk7Cj4gLQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gKwkJ d2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2VyZWYpIHsKPiArCQkJdm1hLT52bS0+aW5z ZXJ0X2VudHJpZXModm1hLT52bSwgdm1hLAo+ICsJCQkJCQljYWNoZV9sZXZlbCwgcHRlX2ZsYWdz KTsKPiArCQl9Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTI2MDYsMTEgKzI2MDUsMTEg QEAgc3RhdGljIHZvaWQgYWxpYXNpbmdfZ3R0X3VuYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2 bWEpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHZtYS0+dm0tPmk5MTU7Cj4g IAo+ICAJaWYgKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkgewo+ICsJCXN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gdm1hLT52bTsKPiAgCQlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKPiAgCj4gLQkJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ IC0JCXZtYS0+dm0tPmNsZWFyX3JhbmdlKHZtYS0+dm0sIHZtYS0+bm9kZS5zdGFydCwgdm1hLT5z aXplKTsKPiAtCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiArCQl3aXRo X2ludGVsX3J1bnRpbWVfcG0oaTkxNSwgd2FrZXJlZikKPiArCQkJdm0tPmNsZWFyX3JhbmdlKHZt LCB2bWEtPm5vZGUuc3RhcnQsIHZtYS0+c2l6ZSk7Cj4gIAl9Cj4gIAo+ICAJaWYgKHZtYS0+Zmxh Z3MgJiBJOTE1X1ZNQV9MT0NBTF9CSU5EKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zaHJpbmtlci5jCj4gaW5kZXggYmMyMzBlNDNiOThmLi5lOWE3OTA1OWJjNDMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPiBAQCAtMjk3LDE0ICsyOTcs MTQgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICB1 bnNpZ25lZCBsb25nIGk5MTVfZ2VtX3Nocmlua19hbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCj4gIHsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0JdW5zaWduZWQgbG9u ZyBmcmVlZDsKPiArCXVuc2lnbmVkIGxvbmcgZnJlZWQgPSAwOwo+ICAKPiAtCXdha2VyZWYgPSBp bnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAtCWZyZWVkID0gaTkxNV9nZW1fc2hyaW5rKGk5 MTUsIC0xVUwsIE5VTEwsCj4gLQkJCQlJOTE1X1NIUklOS19CT1VORCB8Cj4gLQkJCQlJOTE1X1NI UklOS19VTkJPVU5EIHwKPiAtCQkJCUk5MTVfU0hSSU5LX0FDVElWRSk7Cj4gLQlpbnRlbF9ydW50 aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiArCXdpdGhfaW50ZWxfcnVudGltZV9wbShpOTE1 LCB3YWtlcmVmKSB7Cj4gKwkJZnJlZWQgPSBpOTE1X2dlbV9zaHJpbmsoaTkxNSwgLTFVTCwgTlVM TCwKPiArCQkJCQlJOTE1X1NIUklOS19CT1VORCB8Cj4gKwkJCQkJSTkxNV9TSFJJTktfVU5CT1VO RCB8Cj4gKwkJCQkJSTkxNV9TSFJJTktfQUNUSVZFKTsKPiArCX0KPiAgCj4gIAlyZXR1cm4gZnJl ZWQ7Cj4gIH0KPiBAQCAtMzc3LDE0ICszNzcsMTQgQEAgaTkxNV9nZW1fc2hyaW5rZXJfc2Nhbihz dHJ1Y3Qgc2hyaW5rZXIgKnNocmlua2VyLCBzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wgKnNjKQo+ICAJ aWYgKHNjLT5ucl9zY2FubmVkIDwgc2MtPm5yX3RvX3NjYW4gJiYgY3VycmVudF9pc19rc3dhcGQo KSkgewo+ICAJCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICAKPiAtCQl3YWtlcmVmID0gaW50 ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gLQkJZnJlZWQgKz0gaTkxNV9nZW1fc2hyaW5rKGk5 MTUsCj4gLQkJCQkJIHNjLT5ucl90b19zY2FuIC0gc2MtPm5yX3NjYW5uZWQsCj4gLQkJCQkJICZz Yy0+bnJfc2Nhbm5lZCwKPiAtCQkJCQkgSTkxNV9TSFJJTktfQUNUSVZFIHwKPiAtCQkJCQkgSTkx NV9TSFJJTktfQk9VTkQgfAo+IC0JCQkJCSBJOTE1X1NIUklOS19VTkJPVU5EKTsKPiAtCQlpbnRl bF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiArCQl3aXRoX2ludGVsX3J1bnRpbWVf cG0oaTkxNSwgd2FrZXJlZikgewo+ICsJCQlmcmVlZCArPSBpOTE1X2dlbV9zaHJpbmsoaTkxNSwK PiArCQkJCQkJIHNjLT5ucl90b19zY2FuIC0gc2MtPm5yX3NjYW5uZWQsCj4gKwkJCQkJCSAmc2Mt Pm5yX3NjYW5uZWQsCj4gKwkJCQkJCSBJOTE1X1NIUklOS19BQ1RJVkUgfAo+ICsJCQkJCQkgSTkx NV9TSFJJTktfQk9VTkQgfAo+ICsJCQkJCQkgSTkxNV9TSFJJTktfVU5CT1VORCk7Cj4gKwkJfQo+ ICAJfQo+ICAKPiAgCXNocmlua2VyX3VubG9jayhpOTE1LCB1bmxvY2spOwo+IEBAIC00MjYsMTEg KzQyNiwxMSBAQCBpOTE1X2dlbV9zaHJpbmtlcl9vb20oc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpu YiwgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKQo+ICAJdW5zaWduZWQgbG9uZyB1bmV2 aWN0YWJsZSwgYm91bmQsIHVuYm91bmQsIGZyZWVkX3BhZ2VzOwo+ICAJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWY7Cj4gIAo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ IC0JZnJlZWRfcGFnZXMgPSBpOTE1X2dlbV9zaHJpbmsoaTkxNSwgLTFVTCwgTlVMTCwKPiAtCQkJ CSAgICAgIEk5MTVfU0hSSU5LX0JPVU5EIHwKPiAtCQkJCSAgICAgIEk5MTVfU0hSSU5LX1VOQk9V TkQpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gKwlmcmVlZF9w YWdlcyA9IDA7Cj4gKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0oaTkxNSwgd2FrZXJlZikKPiArCQlm cmVlZF9wYWdlcyArPSBpOTE1X2dlbV9zaHJpbmsoaTkxNSwgLTFVTCwgTlVMTCwKPiArCQkJCQkg ICAgICAgSTkxNV9TSFJJTktfQk9VTkQgfAo+ICsJCQkJCSAgICAgICBJOTE1X1NIUklOS19VTkJP VU5EKTsKPiAgCj4gIAkvKiBCZWNhdXNlIHdlIG1heSBiZSBhbGxvY2F0aW5nIGluc2lkZSBvdXIg b3duIGRyaXZlciwgd2UgY2Fubm90Cj4gIAkgKiBhc3NlcnQgdGhhdCB0aGVyZSBhcmUgbm8gb2Jq ZWN0cyB3aXRoIHBpbm5lZCBwYWdlcyB0aGF0IGFyZSBub3QKPiBAQCAtNDgyLDEyICs0ODIsMTEg QEAgaTkxNV9nZW1fc2hyaW5rZXJfdm1hcChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNp Z25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIKPiAgCWlmIChyZXQpCj4gIAkJZ290byBvdXQ7Cj4g IAo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+IC0JZnJlZWRfcGFn ZXMgKz0gaTkxNV9nZW1fc2hyaW5rKGk5MTUsIC0xVUwsIE5VTEwsCj4gLQkJCQkgICAgICAgSTkx NV9TSFJJTktfQk9VTkQgfAo+IC0JCQkJICAgICAgIEk5MTVfU0hSSU5LX1VOQk9VTkQgfAo+IC0J CQkJICAgICAgIEk5MTVfU0hSSU5LX1ZNQVBTKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5 MTUsIHdha2VyZWYpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2VyZWYpCj4g KwkJZnJlZWRfcGFnZXMgKz0gaTkxNV9nZW1fc2hyaW5rKGk5MTUsIC0xVUwsIE5VTEwsCj4gKwkJ CQkJICAgICAgIEk5MTVfU0hSSU5LX0JPVU5EIHwKPiArCQkJCQkgICAgICAgSTkxNV9TSFJJTktf VU5CT1VORCB8Cj4gKwkJCQkJICAgICAgIEk5MTVfU0hSSU5LX1ZNQVBTKTsKPiAgCj4gIAkvKiBX ZSBhbHNvIHdhbnQgdG8gY2xlYXIgYW55IGNhY2hlZCBpb21hcHMgYXMgdGhleSB3cmFwIHZtYXAg Ki8KPiAgCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIG5leHQsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BtdS5jCj4gaW5kZXggM2Q0M2ZjOWRkMjVkLi5iMWNiMmQzY2FlMTYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcG11LmMKPiBAQCAtMjMwLDE0ICsyMzAsMTEgQEAgZnJlcXVlbmN5X3NhbXBs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkIGludCBwZXJpb2Rf bnMpCj4gIAo+ICAJCXZhbCA9IGRldl9wcml2LT5ndF9wbS5ycHMuY3VyX2ZyZXE7Cj4gIAkJaWYg KGRldl9wcml2LT5ndC5hd2FrZSkgewo+IC0JCQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZiA9Cj4g LQkJCQlpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UoZGV2X3ByaXYpOwo+ICsJCQlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgCj4gLQkJCWlmICh3YWtlcmVmKSB7Cj4gKwkJCXdpdGhf aW50ZWxfcnVudGltZV9wbV9pZl9pbl91c2UoZGV2X3ByaXYsIHdha2VyZWYpCj4gIAkJCQl2YWwg PSBpbnRlbF9nZXRfY2FnZihkZXZfcHJpdiwKPiAgCQkJCQkJICAgICBJOTE1X1JFQURfTk9UUkFD RShHRU42X1JQU1RBVDEpKTsKPiAtCQkJCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3 YWtlcmVmKTsKPiAtCQkJfQo+ICAJCX0KPiAgCj4gIAkJYWRkX3NhbXBsZV9tdWx0KCZkZXZfcHJp di0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExFX0ZSRVFfQUNUXSwKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zeXNmcy5jCj4gaW5kZXggMmNiYmYxNjVkMTc5Li40MTMxMzAwNWFmNDIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gQEAgLTQzLDExICs0MywxMCBAQCBzdGF0aWMgdTMyIGNh bGNfcmVzaWRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICBp OTE1X3JlZ190IHJlZykKPiAgewo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gLQl1NjQg cmVzOwo+ICsJdTY0IHJlcyA9IDA7Cj4gIAo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1f Z2V0KGRldl9wcml2KTsKPiAtCXJlcyA9IGludGVsX3JjNl9yZXNpZGVuY3lfdXMoZGV2X3ByaXYs IHJlZyk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gKwl3 aXRoX2ludGVsX3J1bnRpbWVfcG0oZGV2X3ByaXYsIHdha2VyZWYpCj4gKwkJcmVzID0gaW50ZWxf cmM2X3Jlc2lkZW5jeV91cyhkZXZfcHJpdiwgcmVnKTsKPiAgCj4gIAlyZXR1cm4gRElWX1JPVU5E X0NMT1NFU1RfVUxMKHJlcywgMTAwMCk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ IGluZGV4IGExZTRlMTAzMzI4OS4uNDI3MmMyNjBiNmUxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiBAQCAtMjE4Nyw2ICsyMTg3LDE0IEBAIGludGVsX3dha2VyZWZfdCBpbnRlbF9y dW50aW1lX3BtX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gIGludGVsX3dh a2VyZWZfdCBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2Uoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpOwo+ICBpbnRlbF93YWtlcmVmX3QgaW50ZWxfcnVudGltZV9wbV9nZXRfbm9y ZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAKPiArI2RlZmluZSB3aXRo X2ludGVsX3J1bnRpbWVfcG0oaTkxNSwgd2YpIFwKPiArCWZvciAod2YgPSBpbnRlbF9ydW50aW1l X3BtX2dldChpOTE1KTsgd2Y7IFwKPiArCSAgICAgaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwg d2YpLCB3ZiA9IDApCj4gKwo+ICsjZGVmaW5lIHdpdGhfaW50ZWxfcnVudGltZV9wbV9pZl9pbl91 c2UoaTkxNSwgd2YpIFwKPiArCWZvciAod2YgPSBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91 c2UoaTkxNSk7IHdmOyBcCj4gKwkgICAgIGludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdmKSwg d2YgPSAwKQo+ICsKTWFjcm8gYXJndW1lbnRzIGFuZCBwYXJlbnRoZXNpcy4KCkl0IHNoaWZ0cyBj b2RlIHJpZ2h0IGJ1dCBpdCBjbGVhcmx5IGJpbmRzIHRoZSByZWZmZWQgcmVnaW9ucwphZGRpbmcg dG8gcmVhZGFiaWxpdHkgYW5kIHJlZHVjaW5nIGJvaWxlcnBsYXRlLiBPbiBteQp3ZWlnaHRlZCBz Y2FsZSBpdCBjb21wZW5zYXRlcyB0aGUgYWRkZWQgbGVhcm5pbmcgYnVyZGVuCkphbmkgbWVudGlv bmVkLiBTbyBJIGFtIGluIGZhdm91ci4KCkRpZG4ndCBub3RpY2UgYW55dGhpbmcgbWlzc2luZyBl eGNlcHQgdGhlIHBhcmVudGhlc2lzIHNvLApSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8bWlr YS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+CgpQbGVhc2UgZ2F0aGVyIGFja3MgZm9yIHRoaXMg ZnJvbSBkaXNwbGF5IHBlb3BsZSwKLU1pa2EKCj4gIHZvaWQgaW50ZWxfcnVudGltZV9wbV9wdXRf dW5jaGVja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgI2lmIElTX0VOQUJM RUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX1JVTlRJTUVfUE0pCj4gIHZvaWQgaW50ZWxfcnVudGlt ZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludGVsX3dha2VyZWZfdCB3 cmVmKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jCj4gaW5kZXggMjBjMGIzNmQ3 NDhlLi5iNTM1ODJjMGM2YzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvZy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5j Cj4gQEAgLTQ0NCw5ICs0NDQsOCBAQCBzdGF0aWMgdm9pZCBndWNfbG9nX2NhcHR1cmVfbG9ncyhz dHJ1Y3QgaW50ZWxfZ3VjX2xvZyAqbG9nKQo+ICAJICogR2VuZXJhbGx5IGRldmljZSBpcyBleHBl Y3RlZCB0byBiZSBhY3RpdmUgb25seSBhdCB0aGlzCj4gIAkgKiB0aW1lLCBzbyBnZXQvcHV0IHNo b3VsZCBiZSByZWFsbHkgcXVpY2suCj4gIAkgKi8KPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1l X3BtX2dldChkZXZfcHJpdik7Cj4gLQlndWNfYWN0aW9uX2ZsdXNoX2xvZ19jb21wbGV0ZShndWMp Owo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICsJd2l0aF9p bnRlbF9ydW50aW1lX3BtKGRldl9wcml2LCB3YWtlcmVmKQo+ICsJCWd1Y19hY3Rpb25fZmx1c2hf bG9nX2NvbXBsZXRlKGd1Yyk7Cj4gIH0KPiAgCj4gIGludCBpbnRlbF9ndWNfbG9nX2NyZWF0ZShz dHJ1Y3QgaW50ZWxfZ3VjX2xvZyAqbG9nKQo+IEBAIC01MDcsNyArNTA2LDcgQEAgaW50IGludGVs X2d1Y19sb2dfc2V0X2xldmVsKHN0cnVjdCBpbnRlbF9ndWNfbG9nICpsb2csIHUzMiBsZXZlbCkK PiAgCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9IGxvZ190b19ndWMobG9nKTsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7Cj4gIAlpbnRlbF93 YWtlcmVmX3Qgd2FrZXJlZjsKPiAtCWludCByZXQ7Cj4gKwlpbnQgcmV0ID0gMDsKPiAgCj4gIAlC VUlMRF9CVUdfT04oR1VDX0xPR19WRVJCT1NJVFlfTUlOICE9IDApOwo+ICAJR0VNX0JVR19PTigh bG9nLT52bWEpOwo+IEBAIC01MjEsMTYgKzUyMCwxNCBAQCBpbnQgaW50ZWxfZ3VjX2xvZ19zZXRf bGV2ZWwoc3RydWN0IGludGVsX2d1Y19sb2cgKmxvZywgdTMyIGxldmVsKQo+ICAKPiAgCW11dGV4 X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgCj4gLQlpZiAobG9nLT5sZXZl bCA9PSBsZXZlbCkgewo+IC0JCXJldCA9IDA7Cj4gKwlpZiAobG9nLT5sZXZlbCA9PSBsZXZlbCkK PiAgCQlnb3RvIG91dF91bmxvY2s7Cj4gLQl9Cj4gIAo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0KGRldl9wcml2KTsKPiAtCXJldCA9IGd1Y19hY3Rpb25fY29udHJvbF9sb2coZ3Vj LCBHVUNfTE9HX0xFVkVMX0lTX1ZFUkJPU0UobGV2ZWwpLAo+IC0JCQkJICAgICBHVUNfTE9HX0xF VkVMX0lTX0VOQUJMRUQobGV2ZWwpLAo+IC0JCQkJICAgICBHVUNfTE9HX0xFVkVMX1RPX1ZFUkJP U0lUWShsZXZlbCkpOwo+IC0JaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYp Owo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGRldl9wcml2LCB3YWtlcmVmKQo+ICsJCXJldCA9 IGd1Y19hY3Rpb25fY29udHJvbF9sb2coZ3VjLAo+ICsJCQkJCSAgICAgR1VDX0xPR19MRVZFTF9J U19WRVJCT1NFKGxldmVsKSwKPiArCQkJCQkgICAgIEdVQ19MT0dfTEVWRUxfSVNfRU5BQkxFRChs ZXZlbCksCj4gKwkJCQkJICAgICBHVUNfTE9HX0xFVkVMX1RPX1ZFUkJPU0lUWShsZXZlbCkpOwo+ ICAJaWYgKHJldCkgewo+ICAJCURSTV9ERUJVR19EUklWRVIoImd1Y19sb2dfY29udHJvbCBhY3Rp b24gZmFpbGVkICVkXG4iLCByZXQpOwo+ICAJCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtNjExLDkg KzYwOCw4IEBAIHZvaWQgaW50ZWxfZ3VjX2xvZ19yZWxheV9mbHVzaChzdHJ1Y3QgaW50ZWxfZ3Vj X2xvZyAqbG9nKQo+ICAJICovCj4gIAlmbHVzaF93b3JrKCZsb2ctPnJlbGF5LmZsdXNoX3dvcmsp Owo+ICAKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAtCWd1Y19h Y3Rpb25fZmx1c2hfbG9nKGd1Yyk7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtl cmVmKTsKPiArCXdpdGhfaW50ZWxfcnVudGltZV9wbShpOTE1LCB3YWtlcmVmKQo+ICsJCWd1Y19h Y3Rpb25fZmx1c2hfbG9nKGd1Yyk7Cj4gIAo+ICAJLyogR3VDIHdvdWxkIGhhdmUgdXBkYXRlZCBs b2cgYnVmZmVyIGJ5IG5vdywgc28gY2FwdHVyZSBpdCAqLwo+ICAJZ3VjX2xvZ19jYXB0dXJlX2xv Z3MobG9nKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwo+IGluZGV4IDNlOGMxOGI2YTQyZC4u OWJkMWM5MDAyYzJhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1 Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMKPiBAQCAtMTE2LDE0 ICsxMTYsMTMgQEAgaW50IGludGVsX2h1Y19jaGVja19zdGF0dXMoc3RydWN0IGludGVsX2h1YyAq aHVjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBodWNfdG9f aTkxNShodWMpOwo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gLQlib29sIHN0YXR1czsK PiArCWJvb2wgc3RhdHVzID0gZmFsc2U7Cj4gIAo+ICAJaWYgKCFIQVNfSFVDKGRldl9wcml2KSkK PiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gLQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOwo+IC0Jc3RhdHVzID0gSTkxNV9SRUFEKEhVQ19TVEFUVVMyKSAmIEhVQ19G V19WRVJJRklFRDsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2LCB3YWtlcmVmKTsK PiArCXdpdGhfaW50ZWxfcnVudGltZV9wbShkZXZfcHJpdiwgd2FrZXJlZikKPiArCQlzdGF0dXMg PSBJOTE1X1JFQUQoSFVDX1NUQVRVUzIpICYgSFVDX0ZXX1ZFUklGSUVEOwo+ICAKPiAgCXJldHVy biBzdGF0dXM7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCA5M2Ey ZTRiNWM1NGMuLjVhMzlhNjM0N2E3YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wYW5lbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwu Ywo+IEBAIC0xMjA0LDE3ICsxMjA0LDE5IEBAIHN0YXRpYyBpbnQgaW50ZWxfYmFja2xpZ2h0X2Rl dmljZV9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCj4gIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOwo+IC0JdTMyIGh3X2xldmVsOwo+IC0JaW50IHJldDsKPiArCWludCByZXQgPSAw Owo+ICAKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gLQlk cm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsIE5VTEwp Owo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGRldl9wcml2LCB3YWtlcmVmKSB7Cj4gKwkJdTMy IGh3X2xldmVsOwo+ICAKPiAtCWh3X2xldmVsID0gaW50ZWxfcGFuZWxfZ2V0X2JhY2tsaWdodChj b25uZWN0b3IpOwo+IC0JcmV0ID0gc2NhbGVfaHdfdG9fdXNlcihjb25uZWN0b3IsIGh3X2xldmVs LCBiZC0+cHJvcHMubWF4X2JyaWdodG5lc3MpOwo+ICsJCWRybV9tb2Rlc2V0X2xvY2soJmRldi0+ bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwgTlVMTCk7Cj4gIAo+IC0JZHJtX21vZGVzZXRf dW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpOwo+IC0JaW50ZWxfcnVu dGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICsJCWh3X2xldmVsID0gaW50ZWxfcGFu ZWxfZ2V0X2JhY2tsaWdodChjb25uZWN0b3IpOwo+ICsJCXJldCA9IHNjYWxlX2h3X3RvX3VzZXIo Y29ubmVjdG9yLAo+ICsJCQkJICAgICAgIGh3X2xldmVsLCBiZC0+cHJvcHMubWF4X2JyaWdodG5l c3MpOwo+ICsKPiArCQlkcm1fbW9kZXNldF91bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVj dGlvbl9tdXRleCk7Cj4gKwl9Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5jCj4gaW5kZXggZDQ5NGQ5MmRhMDJjLi42ODFlYTUzMjU4NWUgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IEBAIC0xNjk2LDIxICsxNjk2LDIx IEBAIGludCBpOTE1X3JlZ19yZWFkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ ICAJZmxhZ3MgPSByZWctPm9mZnNldCAmIChlbnRyeS0+c2l6ZSAtIDEpOwo+ICAKPiAtCXdha2Vy ZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gLQlpZiAoZW50cnktPnNpemUg PT0gOCAmJiBmbGFncyA9PSBJOTE1X1JFR19SRUFEXzhCX1dBKQo+IC0JCXJlZy0+dmFsID0gSTkx NV9SRUFENjRfMngzMihlbnRyeS0+b2Zmc2V0X2xkdywKPiAtCQkJCQkgICAgZW50cnktPm9mZnNl dF91ZHcpOwo+IC0JZWxzZSBpZiAoZW50cnktPnNpemUgPT0gOCAmJiBmbGFncyA9PSAwKQo+IC0J CXJlZy0+dmFsID0gSTkxNV9SRUFENjQoZW50cnktPm9mZnNldF9sZHcpOwo+IC0JZWxzZSBpZiAo ZW50cnktPnNpemUgPT0gNCAmJiBmbGFncyA9PSAwKQo+IC0JCXJlZy0+dmFsID0gSTkxNV9SRUFE KGVudHJ5LT5vZmZzZXRfbGR3KTsKPiAtCWVsc2UgaWYgKGVudHJ5LT5zaXplID09IDIgJiYgZmxh Z3MgPT0gMCkKPiAtCQlyZWctPnZhbCA9IEk5MTVfUkVBRDE2KGVudHJ5LT5vZmZzZXRfbGR3KTsK PiAtCWVsc2UgaWYgKGVudHJ5LT5zaXplID09IDEgJiYgZmxhZ3MgPT0gMCkKPiAtCQlyZWctPnZh bCA9IEk5MTVfUkVBRDgoZW50cnktPm9mZnNldF9sZHcpOwo+IC0JZWxzZQo+IC0JCXJldCA9IC1F SU5WQUw7Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdiwgd2FrZXJlZik7Cj4gKwl3 aXRoX2ludGVsX3J1bnRpbWVfcG0oZGV2X3ByaXYsIHdha2VyZWYpIHsKPiArCQlpZiAoZW50cnkt PnNpemUgPT0gOCAmJiBmbGFncyA9PSBJOTE1X1JFR19SRUFEXzhCX1dBKQo+ICsJCQlyZWctPnZh bCA9IEk5MTVfUkVBRDY0XzJ4MzIoZW50cnktPm9mZnNldF9sZHcsCj4gKwkJCQkJCSAgICBlbnRy eS0+b2Zmc2V0X3Vkdyk7Cj4gKwkJZWxzZSBpZiAoZW50cnktPnNpemUgPT0gOCAmJiBmbGFncyA9 PSAwKQo+ICsJCQlyZWctPnZhbCA9IEk5MTVfUkVBRDY0KGVudHJ5LT5vZmZzZXRfbGR3KTsKPiAr CQllbHNlIGlmIChlbnRyeS0+c2l6ZSA9PSA0ICYmIGZsYWdzID09IDApCj4gKwkJCXJlZy0+dmFs ID0gSTkxNV9SRUFEKGVudHJ5LT5vZmZzZXRfbGR3KTsKPiArCQllbHNlIGlmIChlbnRyeS0+c2l6 ZSA9PSAyICYmIGZsYWdzID09IDApCj4gKwkJCXJlZy0+dmFsID0gSTkxNV9SRUFEMTYoZW50cnkt Pm9mZnNldF9sZHcpOwo+ICsJCWVsc2UgaWYgKGVudHJ5LT5zaXplID09IDEgJiYgZmxhZ3MgPT0g MCkKPiArCQkJcmVnLT52YWwgPSBJOTE1X1JFQUQ4KGVudHJ5LT5vZmZzZXRfbGR3KTsKPiArCQll bHNlCj4gKwkJCXJldCA9IC1FSU5WQUw7Cj4gKwl9Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbS5jCj4gaW5kZXggMDFhNDZj NDZmZTI1Li5lNzdiN2VkNDQ5YWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaTkxNV9nZW0uYwo+IEBAIC05OCwyNiArOTgsMjIgQEAgc3RhdGljIHZvaWQgcG1fc3VzcGVu ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWY7Cj4gIAo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ IC0KPiAtCWk5MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKGk5MTUpOwo+IC0JaTkxNV9nZW1f c3VzcGVuZF9sYXRlKGk5MTUpOwo+IC0KPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdh a2VyZWYpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2VyZWYpIHsKPiArCQlp OTE1X2dlbV9zdXNwZW5kX2d0dF9tYXBwaW5ncyhpOTE1KTsKPiArCQlpOTE1X2dlbV9zdXNwZW5k X2xhdGUoaTkxNSk7Cj4gKwl9Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHBtX2hpYmVybmF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgewo+ICAJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7Cj4gIAo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+IC0K PiAtCWk5MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKGk5MTUpOwo+IC0KPiAtCWk5MTVfZ2Vt X2ZyZWV6ZShpOTE1KTsKPiAtCWk5MTVfZ2VtX2ZyZWV6ZV9sYXRlKGk5MTUpOwo+ICsJd2l0aF9p bnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2VyZWYpIHsKPiArCQlpOTE1X2dlbV9zdXNwZW5kX2d0 dF9tYXBwaW5ncyhpOTE1KTsKPiAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtl cmVmKTsKPiArCQlpOTE1X2dlbV9mcmVlemUoaTkxNSk7Cj4gKwkJaTkxNV9nZW1fZnJlZXplX2xh dGUoaTkxNSk7Cj4gKwl9Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHBtX3Jlc3VtZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiBAQCAtMTI4LDEzICsxMjQsMTEgQEAgc3RhdGljIHZv aWQgcG1fcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJICogQm90aCBz dXNwZW5kIGFuZCBoaWJlcm5hdGUgZm9sbG93IHRoZSBzYW1lIHdha2V1cCBwYXRoIGFuZCBhc3N1 bWUKPiAgCSAqIHRoYXQgcnVudGltZS1wbSBqdXN0IHdvcmtzLgo+ICAJICovCj4gLQl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gLQo+IC0JaW50ZWxfZW5naW5lc19zYW5p dGl6ZShpOTE1LCBmYWxzZSk7Cj4gLQlpOTE1X2dlbV9zYW5pdGl6ZShpOTE1KTsKPiAtCWk5MTVf Z2VtX3Jlc3VtZShpOTE1KTsKPiAtCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtl cmVmKTsKPiArCXdpdGhfaW50ZWxfcnVudGltZV9wbShpOTE1LCB3YWtlcmVmKSB7Cj4gKwkJaW50 ZWxfZW5naW5lc19zYW5pdGl6ZShpOTE1LCBmYWxzZSk7Cj4gKwkJaTkxNV9nZW1fc2FuaXRpemUo aTkxNSk7Cj4gKwkJaTkxNV9nZW1fcmVzdW1lKGk5MTUpOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0 aWMgaW50IGlndF9nZW1fc3VzcGVuZCh2b2lkICphcmcpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggN2E5YjFmMjBiMDE5 Li40Y2JhNTA2Nzk2MDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNjEwLDkgKzYxMCw5IEBAIHN0YXRpYyBpbnQg aWd0X2N0eF9leGVjKHZvaWQgKmFyZykKPiAgCQkJCX0KPiAgCQkJfQo+ICAKPiAtCQkJd2FrZXJl ZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+IC0JCQllcnIgPSBncHVfZmlsbChvYmos IGN0eCwgZW5naW5lLCBkdyk7Cj4gLQkJCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2Vy ZWYpOwo+ICsJCQllcnIgPSAwOwo+ICsJCQl3aXRoX2ludGVsX3J1bnRpbWVfcG0oaTkxNSwgd2Fr ZXJlZikKPiArCQkJCWVyciA9IGdwdV9maWxsKG9iaiwgY3R4LCBlbmdpbmUsIGR3KTsKPiAgCQkJ aWYgKGVycikgewo+ICAJCQkJcHJfZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8l bHVdIHdpdGggZ3B1ICglcykgaW4gY3R4ICV1IFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwK PiAgCQkJCSAgICAgICBuZHdvcmRzLCBkdywgbWF4X2R3b3JkcyhvYmopLAo+IEBAIC03MTgsOSAr NzE4LDkgQEAgc3RhdGljIGludCBpZ3RfY3R4X3JlYWRvbmx5KHZvaWQgKmFyZykKPiAgCQkJCQlp OTE1X2dlbV9vYmplY3Rfc2V0X3JlYWRvbmx5KG9iaik7Cj4gIAkJCX0KPiAgCj4gLQkJCXdha2Vy ZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiAtCQkJZXJyID0gZ3B1X2ZpbGwob2Jq LCBjdHgsIGVuZ2luZSwgZHcpOwo+IC0JCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtl cmVmKTsKPiArCQkJZXJyID0gMDsKPiArCQkJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdh a2VyZWYpCj4gKwkJCQllcnIgPSBncHVfZmlsbChvYmosIGN0eCwgZW5naW5lLCBkdyk7Cj4gIAkJ CWlmIChlcnIpIHsKPiAgCQkJCXByX2VycigiRmFpbGVkIHRvIGZpbGwgZHdvcmQgJWx1IFslbHUv JWx1XSB3aXRoIGdwdSAoJXMpIGluIGN0eCAldSBbZnVsbC1wcGd0dD8gJXNdLCBlcnI9JWRcbiIs Cj4gIAkJCQkgICAgICAgbmR3b3JkcywgZHcsIG1heF9kd29yZHMob2JqKSwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCj4gaW5kZXggMzU3 NWUxMzg3YzNmLi4zOTVhZTg3OGUwZjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCj4gQEAgLTUwOSw5ICs1MDksOCBAQCBzdGF0 aWMgdm9pZCBkaXNhYmxlX3JldGlyZV93b3JrZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCj4gIAlpZiAoIWk5MTUtPmd0LmFjdGl2ZV9yZXF1ZXN0cysrKSB7Cj4gIAkJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7Cj4gIAo+IC0JCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChp OTE1KTsKPiAtCQlpOTE1X2dlbV91bnBhcmsoaTkxNSk7Cj4gLQkJaW50ZWxfcnVudGltZV9wbV9w dXQoaTkxNSwgd2FrZXJlZik7Cj4gKwkJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2Vy ZWYpCj4gKwkJCWk5MTVfZ2VtX3VucGFyayhpOTE1KTsKPiAgCX0KPiAgCW11dGV4X3VubG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+IEBAIC01OTMsMTAgKzU5MiwxMCBAQCBzdGF0 aWMgaW50IGlndF9tbWFwX29mZnNldF9leGhhdXN0aW9uKHZvaWQgKmFyZykKPiAgCQkJZ290byBv dXQ7Cj4gIAkJfQo+ICAKPiArCQllcnIgPSAwOwo+ICAJCW11dGV4X2xvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+IC0JCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsK PiAtCQllcnIgPSBtYWtlX29ial9idXN5KG9iaik7Cj4gLQkJaW50ZWxfcnVudGltZV9wbV9wdXQo aTkxNSwgd2FrZXJlZik7Cj4gKwkJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2VyZWYp Cj4gKwkJCWVyciA9IG1ha2Vfb2JqX2J1c3kob2JqKTsKPiAgCQltdXRleF91bmxvY2soJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJCWlmIChlcnIpIHsKPiAgCQkJcHJfZXJyKCJbbG9vcCAl ZF0gRmFpbGVkIHRvIGJ1c3kgdGhlIG9iamVjdFxuIiwgbG9vcCk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCA0N2U2 MmUxOTk5YTkuLmJlMmZmYzljZDM4ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaW50ZWxfd29ya2Fyb3VuZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pbnRlbF93b3JrYXJvdW5kcy5jCj4gQEAgLTQ4LDkgKzQ4LDkgQEAgcmVh ZF9ub25wcml2cyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gIAlpZiAoZXJyKQo+ICAJCWdvdG8gZXJyX29iajsKPiAgCj4gLQl3 YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoZW5naW5lLT5pOTE1KTsKPiAtCXJxID0gaTkx NV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGVu Z2luZS0+aTkxNSwgd2FrZXJlZik7Cj4gKwlycSA9IEVSUl9QVFIoLUVOT0RFVik7Cj4gKwl3aXRo X2ludGVsX3J1bnRpbWVfcG0oZW5naW5lLT5pOTE1LCB3YWtlcmVmKQo+ICsJCXJxID0gaTkxNV9y ZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiAgCWlmIChJU19FUlIocnEpKSB7Cj4gIAkJZXJy ID0gUFRSX0VSUihycSk7Cj4gIAkJZ290byBlcnJfcGluOwo+IEBAIC0xOTEsMTQgKzE5MSwxNSBA QCBzd2l0Y2hfdG9fc2NyYXRjaF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiAgCWlmIChJU19FUlIoY3R4KSkKPiAgCQlyZXR1cm4gUFRSX0VSUihjdHgpOwo+ICAKPiAt CXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChlbmdpbmUtPmk5MTUpOwo+IC0KPiAtCWlm IChzcGluKQo+IC0JCXJxID0gaWd0X3NwaW5uZXJfY3JlYXRlX3JlcXVlc3Qoc3BpbiwgY3R4LCBl bmdpbmUsIE1JX05PT1ApOwo+IC0JZWxzZQo+IC0JCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVu Z2luZSwgY3R4KTsKPiAtCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChlbmdpbmUtPmk5MTUsIHdh a2VyZWYpOwo+ICsJcnEgPSBFUlJfUFRSKC1FTk9ERVYpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1l X3BtKGVuZ2luZS0+aTkxNSwgd2FrZXJlZikgewo+ICsJCWlmIChzcGluKQo+ICsJCQlycSA9IGln dF9zcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KHNwaW4sCj4gKwkJCQkJCQljdHgsIGVuZ2luZSwKPiAr CQkJCQkJCU1JX05PT1ApOwo+ICsJCWVsc2UKPiArCQkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2Mo ZW5naW5lLCBjdHgpOwo+ICsJfQo+ICAKPiAgCWtlcm5lbF9jb250ZXh0X2Nsb3NlKGN0eCk7Cj4g IAo+IEBAIC0yNTYsOSArMjU3LDggQEAgc3RhdGljIGludCBjaGVja193aGl0ZWxpc3RfYWNyb3Nz X3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCWlmIChlcnIpCj4gIAkJ Z290byBvdXQ7Cj4gIAo+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ IC0JZXJyID0gcmVzZXQoZW5naW5lKTsKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdh a2VyZWYpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGk5MTUsIHdha2VyZWYpCj4gKwkJZXJy ID0gcmVzZXQoZW5naW5lKTsKPiAgCj4gIAlpZiAod2FudF9zcGluKSB7Cj4gIAkJaWd0X3NwaW5u ZXJfZW5kKCZzcGluKTsKPiAtLSAKPiAyLjIwLjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK