From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 3/6] drm/i915: Extend magic to_i915() to work with drm_i915_gem_object Date: Mon, 21 Mar 2016 15:01:22 +0200 Message-ID: <87mvpsyogt.fsf@intel.com> References: <1458335784-1773-1-git-send-email-chris@chris-wilson.co.uk> <1458335784-1773-3-git-send-email-chris@chris-wilson.co.uk> <20160321094723.GM28483@phenom.ffwll.local> 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 ESMTP id CDE2F6E5A6 for ; Mon, 21 Mar 2016 13:01:33 +0000 (UTC) In-Reply-To: <20160321094723.GM28483@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMSBNYXIgMjAxNiwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90 ZToKPiBPbiBGcmksIE1hciAxOCwgMjAxNiBhdCAwOToxNjoyMVBNICswMDAwLCBDaHJpcyBXaWxz b24gd3JvdGU6Cj4+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgo+Cj4gSSdtIG5vdCBzdXJlIHRoaXMgaXMgdG9vIG11Y2ggbWFnaWMgLi4uIElm IGl0IGdhdGhlcnMgcmF2aW5nIGFwcGxhdXMgYW5kCj4gc3VwcG9ydCBmcm9tIG90aGVycyB0aGVu IEknbSBvayA7LSkKCkknbSBub3QgdGhyaWxsZWQsIGxpa2UgSSBzYWlkIGluIFsxXS4KCklmIHlv dSBndXlzIHJlYWxseSBpbnNpc3Qgb24gaGF2aW5nIHRoaXMsIHBsZWFzZSBhdCBsZWFzdCBtYWtl IGFsbCB0aGUKKm90aGVyKiBtYWNyb3MgcmVxdWlyZSBkZXZfcHJpdiwgYW5kIHVzZSB0b19pOTE1 KCkgYXQgdGhlIGNhbGwgc2l0ZXMuCgpCUiwKSmFuaS4KCgoKWzFdIGh0dHA6Ly9taWQuZ21hbmUu b3JnLzg3MXQ3OWhyaXEuZnNmQGludGVsLmNvbQoKPiAtRGFuaWVsCj4+IC0tLQo+PiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgIDcgKysrLS0tCj4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAxNSArKysrKysrKy0tLS0t Cj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCAzNCArKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2V4ZWNidWZmZXIuYyB8IDE3ICsrKysrKy0tLS0tLS0tLQo+PiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZmVuY2UuYyAgICAgIHwgIDggKysrLS0tLQo+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgIHwgIDIgKy0KPj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jICAgICB8ICA0ICstLS0KPj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jICAgICB8ICA0ICsrLS0KPj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyAgICB8ICA0ICsrLS0KPj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICB8ICAyICstCj4+ICAxMCBmaWxlcyBjaGFuZ2Vk LCA0NiBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKPj4gCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4+IGluZGV4IGUwYmEzZTM4MDAwZi4uMzNkZGNkZjZkMDQ2IDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiBAQCAtMTI4LDcgKzEyOCw2IEBA IHN0YXRpYyB1NjQgaTkxNV9nZW1fb2JqX3RvdGFsX2dndHRfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQo+PiAgc3RhdGljIHZvaWQKPj4gIGRlc2NyaWJlX29iaihzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICB7Cj4+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmotPmJhc2UuZGV2 KTsKPj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4+ICAJc3RydWN0IGk5MTVf dm1hICp2bWE7Cj4+ICAJaW50IHBpbl9jb3VudCA9IDA7Cj4+IEBAIC0xNDMsMTMgKzE0MiwxMyBA QCBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQo+PiAgCQkgICBvYmotPmJhc2Uuc2l6ZSAvIDEwMjQsCj4+ICAJCSAgIG9iai0+ YmFzZS5yZWFkX2RvbWFpbnMsCj4+ICAJCSAgIG9iai0+YmFzZS53cml0ZV9kb21haW4pOwo+PiAt CWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpKQo+PiArCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIG9iaiwgaSkKPj4gIAkJc2VxX3ByaW50ZihtLCAiJXggIiwKPj4gIAkJCQlpOTE1 X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3RfcmVhZF9yZXFbaV0pKTsKPj4gIAlzZXFf cHJpbnRmKG0sICJdICV4ICV4JXMlcyVzIiwKPj4gIAkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRf c2Vxbm8ob2JqLT5sYXN0X3dyaXRlX3JlcSksCj4+ICAJCSAgIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0 X3NlcW5vKG9iai0+bGFzdF9mZW5jZWRfcmVxKSwKPj4gLQkJICAgaTkxNV9jYWNoZV9sZXZlbF9z dHIodG9faTkxNShvYmotPmJhc2UuZGV2KSwgb2JqLT5jYWNoZV9sZXZlbCksCj4+ICsJCSAgIGk5 MTVfY2FjaGVfbGV2ZWxfc3RyKHRvX2k5MTUob2JqKSwgb2JqLT5jYWNoZV9sZXZlbCksCj4+ICAJ CSAgIG9iai0+ZGlydHkgPyAiIGRpcnR5IiA6ICIiLAo+PiAgCQkgICBvYmotPm1hZHYgPT0gSTkx NV9NQURWX0RPTlRORUVEID8gIiBwdXJnZWFibGUiIDogIiIpOwo+PiAgCWlmIChvYmotPmJhc2Uu bmFtZSkKPj4gQEAgLTMzOSw3ICszMzgsNyBAQCBzdGF0aWMgaW50IHBlcl9maWxlX3N0YXRzKGlu dCBpZCwgdm9pZCAqcHRyLCB2b2lkICpkYXRhKQo+PiAgCWlmIChvYmotPmJhc2UubmFtZSB8fCBv YmotPmJhc2UuZG1hX2J1ZikKPj4gIAkJc3RhdHMtPnNoYXJlZCArPSBvYmotPmJhc2Uuc2l6ZTsK Pj4gIAo+PiAtCWlmIChVU0VTX0ZVTExfUFBHVFQob2JqLT5iYXNlLmRldikpIHsKPj4gKwlpZiAo VVNFU19GVUxMX1BQR1RUKG9iaikpIHsKPj4gIAkJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZv YmotPnZtYV9saXN0LCBvYmpfbGluaykgewo+PiAgCQkJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0Owo+PiAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBpbmRleCAwYzlmZTAwZDNlODMu LjkyMzY1ZjA0N2U1MyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC0yMTg2 LDYgKzIxODYsMTIgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qgewo+PiAgfTsKPj4gICNk ZWZpbmUgdG9faW50ZWxfYm8oeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0LCBiYXNlKQo+PiAgCj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICoKPj4gK19fb2JqX3RvX2k5MTUoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPj4gK3sKPj4gKwlyZXR1cm4gX190b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+PiArfQo+ PiArCj4+ICB2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvbGQsCj4+ICAJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbmV3LAo+PiAg CQkgICAgICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cyk7Cj4+IEBAIC0yNDU1LDYgKzI0NjEs OCBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPj4gIAkJX19wID0gKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICopcDsgXAo+PiAgCWVsc2UgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRp YmxlX3AodHlwZW9mKCpwKSwgc3RydWN0IGRybV9kZXZpY2UpKSBcCj4+ICAJCV9fcCA9IF9fdG9f aTkxNSgoc3RydWN0IGRybV9kZXZpY2UgKilwKTsgXAo+PiArCWVsc2UgaWYgKF9fYnVpbHRpbl90 eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCpwKSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qp KSBcCj4+ICsJCV9fcCA9IF9fb2JqX3RvX2k5MTUoKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICopcCk7IFwKPj4gIAllbHNlIFwKPj4gIAkJQlVJTERfQlVHKCk7IFwKPj4gIAlfX3A7IFwKPj4g QEAgLTMxMzIsOCArMzE0MCw3IEBAIGk5MTVfZ2VtX29ial90b19nZ3R0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCj4+ICBib29sIGk5MTVfZ2VtX29ial9pc19waW5uZWQoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4+ICAKPj4gIC8qIFNvbWUgR0dUVCBWTSBoZWxw ZXJzICovCj4+IC0jZGVmaW5lIGk5MTVfb2JqX3RvX2dndHQob2JqKSBcCj4+IC0JKCYoKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICopKG9iaiktPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZSktPmdndHQu YmFzZSkKPj4gKyNkZWZpbmUgaTkxNV9vYmpfdG9fZ2d0dChvYmopICgmdG9faTkxNShvYmopLT5n Z3R0LmJhc2UpCj4+ICAKPj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfaHdfcHBndHQgKgo+ PiAgaTkxNV92bV90b19wcGd0dChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPj4gQEAg LTMyODIsOSArMzI4OSw3IEBAIHZvaWQgaTkxNV9nZW1fc2hyaW5rZXJfY2xlYW51cChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAgLyogaTkxNV9nZW1fdGlsaW5nLmMgKi8K Pj4gIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9vYmplY3RfbmVlZHNfYml0MTdfc3dpenps ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAgewo+PiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+PiAt Cj4+IC0JcmV0dXJuIGRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxlX3ggPT0gSTkxNV9CSVRfNl9T V0laWkxFXzlfMTBfMTcgJiYKPj4gKwlyZXR1cm4gdG9faTkxNShvYmopLT5tbS5iaXRfNl9zd2l6 emxlX3ggPT0gSTkxNV9CSVRfNl9TV0laWkxFXzlfMTBfMTcgJiYKPj4gIAkJb2JqLT50aWxpbmdf bW9kZSAhPSBJOTE1X1RJTElOR19OT05FOwo+PiAgfQo+PiAgCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+PiBpbmRleCA4NTg4YzgzYWJiMzUuLjcxMGE2YmJjOTg1ZSAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4+IEBAIC0zNjEsMTQgKzM2MSwxMiBAQCBvdXQ6Cj4+ICAKPj4gIHZv aWQgKmk5MTVfZ2VtX29iamVjdF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgewo+ PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4+IC0JcmV0dXJuIGttZW1fY2FjaGVfemFsbG9jKGRldl9wcml2LT5vYmplY3RzLCBHRlBfS0VS TkVMKTsKPj4gKwlyZXR1cm4ga21lbV9jYWNoZV96YWxsb2ModG9faTkxNShkZXYpLT5vYmplY3Rz LCBHRlBfS0VSTkVMKTsKPj4gIH0KPj4gIAo+PiAgdm9pZCBpOTE1X2dlbV9vYmplY3RfZnJlZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAgewo+PiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+PiAtCWtt ZW1fY2FjaGVfZnJlZShkZXZfcHJpdi0+b2JqZWN0cywgb2JqKTsKPj4gKwlrbWVtX2NhY2hlX2Zy ZWUodG9faTkxNShvYmopLT5vYmplY3RzLCBvYmopOwo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgaW50 Cj4+IEBAIC0yMDI4LDcgKzIwMjYsNyBAQCBpOTE1X2dlbV9nZXRfZ3R0X2FsaWdubWVudChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBzaXplLAo+PiAgCj4+ICBzdGF0aWMgaW50IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPj4gIHsKPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBv YmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4+ICAJaW50IHJldDsKPj4gIAo+PiAgCWlmIChkcm1f dm1hX25vZGVfaGFzX29mZnNldCgmb2JqLT5iYXNlLnZtYV9ub2RlKSkKPj4gQEAgLTIyNDEsNyAr MjIzOSw3IEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKPj4gIHN0YXRpYyBpbnQKPj4gIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNf Z3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICB7Cj4+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+PiAg CWludCBwYWdlX2NvdW50LCBpOwo+PiAgCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwo+ PiAgCXN0cnVjdCBzZ190YWJsZSAqc3Q7Cj4+IEBAIC0yMzcyLDcgKzIzNzAsNyBAQCBlcnJfcGFn ZXM6Cj4+ICBpbnQKPj4gIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKPj4gIHsKPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4+ICAJY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3Rfb3BzICpvcHMgPSBvYmotPm9wczsKPj4gIAlpbnQgcmV0Owo+PiAgCj4+ IEBAIC0yNDQ5LDggKzI0NDcsNyBAQCBpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCByaW5nKQo+PiAgCSAqIHNvIHRoYXQgd2Ug ZG9uJ3Qgc3RlYWwgZnJvbSByZWNlbnRseSB1c2VkIGJ1dCBpbmFjdGl2ZSBvYmplY3RzCj4+ICAJ ICogKHVubGVzcyB3ZSBhcmUgZm9yY2VkIHRvIG9mYyEpCj4+ICAJICovCj4+IC0JbGlzdF9tb3Zl X3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsCj4+IC0JCSAgICAgICAmdG9faTkxNShvYmotPmJhc2Uu ZGV2KS0+bW0uYm91bmRfbGlzdCk7Cj4+ICsJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xp c3QsICZ0b19pOTE1KG9iaiktPm1tLmJvdW5kX2xpc3QpOwo+PiAgCj4+ICAJbGlzdF9mb3JfZWFj aF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCBvYmpfbGluaykgewo+PiAgCQlpZiAoIWxpc3Rf ZW1wdHkoJnZtYS0+dm1fbGluaykpCj4+IEBAIC0zMTcyLDcgKzMxNjksNyBAQCBfX2k5MTVfZ2Vt X29iamVjdF9zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICAJCXJldHVy biAwOwo+PiAgCj4+ICAJaWYgKCFpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKG9iai0+YmFzZS5k ZXYpKSB7Cj4+IC0JCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmot PmJhc2UuZGV2KTsKPj4gKwkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1 KG9iaik7Cj4+ICAJCXJldCA9IF9faTkxNV93YWl0X3JlcXVlc3QoZnJvbV9yZXEsCj4+ICAJCQkJ CSAgYXRvbWljX3JlYWQoJmk5MTUtPmdwdV9lcnJvci5yZXNldF9jb3VudGVyKSwKPj4gIAkJCQkJ ICBpOTE1LT5tbS5pbnRlcnJ1cHRpYmxlLAo+PiBAQCAtMzMxMiw3ICszMzA5LDcgQEAgc3RhdGlj IHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZpbmlzaF9ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPj4gIHN0YXRpYyBpbnQgX19pOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1h ICp2bWEsIGJvb2wgd2FpdCkKPj4gIHsKPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqID0gdm1hLT5vYmo7Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g b2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+PiAgCWludCByZXQ7Cj4+ICAKPj4gIAlpZiAobGlz dF9lbXB0eSgmdm1hLT5vYmpfbGluaykpCj4+IEBAIC0zNzcyLDcgKzM3NjksNyBAQCBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwgYm9vbCB3cml0ZSkKPj4gIAl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dChvYmopOwo+PiAg CWlmICh2bWEgJiYgZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpICYmICFvYmotPmFj dGl2ZSkKPj4gIAkJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywKPj4gLQkJCSAgICAgICAm dG9faTkxNShvYmotPmJhc2UuZGV2KS0+Z2d0dC5iYXNlLmluYWN0aXZlX2xpc3QpOwo+PiArCQkJ ICAgICAgICZ0b19pOTE1KG9iaiktPmdndHQuYmFzZS5pbmFjdGl2ZV9saXN0KTsKPj4gIAo+PiAg CXJldHVybiAwOwo+PiAgfQo+PiBAQCAtNDAxMCw3ICs0MDA3LDcgQEAgaTkxNV9nZW1fb2JqZWN0 X3Bpbl90b19kaXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ ICAJICogd2l0aCB0aGF0IGJpdCBpbiB0aGUgUFRFIHRvIG1haW4gbWVtb3J5IHdpdGgganVzdCBv bmUgUElQRV9DT05UUk9MLgo+PiAgCSAqLwo+PiAgCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRf Y2FjaGVfbGV2ZWwob2JqLAo+PiAtCQkJCQkgICAgICBIQVNfV1Qob2JqLT5iYXNlLmRldikgPyBJ OTE1X0NBQ0hFX1dUIDogSTkxNV9DQUNIRV9OT05FKTsKPj4gKwkJCQkJICAgICAgSEFTX1dUKG9i aikgPyBJOTE1X0NBQ0hFX1dUIDogSTkxNV9DQUNIRV9OT05FKTsKPj4gIAlpZiAocmV0KQo+PiAg CQlnb3RvIGVycl91bnBpbl9kaXNwbGF5Owo+PiAgCj4+IEBAIC00MjA5LDcgKzQyMDYsNyBAQCB2 b2lkIF9faTkxNV92bWFfc2V0X21hcF9hbmRfZmVuY2VhYmxlKHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQo+PiAgCQkgICAgICh2bWEtPm5vZGUuc3RhcnQgJiAoZmVuY2VfYWxpZ25tZW50IC0gMSkpID09 IDApOwo+PiAgCj4+ICAJbWFwcGFibGUgPSAodm1hLT5ub2RlLnN0YXJ0ICsgZmVuY2Vfc2l6ZSA8 PQo+PiAtCQkgICAgdG9faTkxNShvYmotPmJhc2UuZGV2KS0+Z2d0dC5tYXBwYWJsZV9lbmQpOwo+ PiArCQkgICAgdG9faTkxNShvYmopLT5nZ3R0Lm1hcHBhYmxlX2VuZCk7Cj4+ICAKPj4gIAlvYmot Pm1hcF9hbmRfZmVuY2VhYmxlID0gbWFwcGFibGUgJiYgZmVuY2VhYmxlOwo+PiAgfQo+PiBAQCAt NDIyMSw3ICs0MjE4LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2RvX3BpbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+PiAgCQkgICAgICAgdWludDMyX3QgYWxpZ25tZW50LAo+PiAgCQkg ICAgICAgdWludDY0X3QgZmxhZ3MpCj4+ICB7Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+PiAgCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwo+PiAgCXVuc2lnbmVkIGJvdW5kOwo+PiAgCWludCByZXQ7Cj4+IEBAIC00NDU2LDcg KzQ0NTMsNyBAQCB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4+ICAJb2JqLT5mZW5jZV9yZWcgPSBJOTE1X0ZFTkNFX1JFR19OT05FOwo+ PiAgCW9iai0+bWFkdiA9IEk5MTVfTUFEVl9XSUxMTkVFRDsKPj4gIAo+PiAtCWk5MTVfZ2VtX2lu Zm9fYWRkX29iaihvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZSwgb2JqLT5iYXNlLnNpemUpOwo+ PiArCWk5MTVfZ2VtX2luZm9fYWRkX29iaih0b19pOTE1KG9iaiksIG9iai0+YmFzZS5zaXplKTsK Pj4gIH0KPj4gIAo+PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29w cyBpOTE1X2dlbV9vYmplY3Rfb3BzID0gewo+PiBAQCAtNDU0NSw4ICs0NTQyLDcgQEAgc3RhdGlj IGJvb2wgZGlzY2FyZF9iYWNraW5nX3N0b3JhZ2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPj4gIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpnZW1fb2JqKQo+PiAgewo+PiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB0 b19pbnRlbF9ibyhnZW1fb2JqKTsKPj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5i YXNlLmRldjsKPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUob2JqKTsKPj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKm5leHQ7Cj4+ICAKPj4gIAlpbnRl bF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4+IEBAIC00NjQ3LDcgKzQ2NDMsNyBAQCB2b2lk IGk5MTVfZ2VtX3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+PiAgCj4+ICAJbGlz dF9kZWwoJnZtYS0+b2JqX2xpbmspOwo+PiAgCj4+IC0Ja21lbV9jYWNoZV9mcmVlKHRvX2k5MTUo dm1hLT5vYmotPmJhc2UuZGV2KS0+dm1hcywgdm1hKTsKPj4gKwlrbWVtX2NhY2hlX2ZyZWUodG9f aTkxNSh2bWEtPm9iaiktPnZtYXMsIHZtYSk7Cj4+ICB9Cj4+ICAKPj4gIHN0YXRpYyB2b2lkCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4gaW5kZXggMzc0 YTBjYjdhMDkyLi4zOWVkNDAzYjlkZTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMKPj4gQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgdm9pZCBl Yl9kZXN0cm95KHN0cnVjdCBlYl92bWFzICplYikKPj4gIAo+PiAgc3RhdGljIGlubGluZSBpbnQg dXNlX2NwdV9yZWxvYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAgewo+PiAt CXJldHVybiAoSEFTX0xMQyhvYmotPmJhc2UuZGV2KSB8fAo+PiArCXJldHVybiAoSEFTX0xMQyhv YmopIHx8Cj4+ICAJCW9iai0+YmFzZS53cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9NQUlOX0NQ VSB8fAo+PiAgCQlvYmotPmNhY2hlX2xldmVsICE9IEk5MTVfQ0FDSEVfTk9ORSk7Cj4+ICB9Cj4+ IEBAIC0zMTIsOCArMzEyLDcgQEAgcmVsb2NhdGVfZW50cnlfZ3R0KHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCj4+ICAJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9l bnRyeSAqcmVsb2MsCj4+ICAJCSAgIHVpbnQ2NF90IHRhcmdldF9vZmZzZXQpCj4+ICB7Cj4+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Cj4+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4+ICAJdWludDY0X3QgZGVs dGEgPSByZWxvY2F0aW9uX3RhcmdldChyZWxvYywgdGFyZ2V0X29mZnNldCk7Cj4+ICAJdWludDY0 X3Qgb2Zmc2V0Owo+PiAgCXZvaWQgX19pb21lbSAqcmVsb2NfcGFnZTsKPj4gQEAgLTMzNCw3ICsz MzMsNyBAQCByZWxvY2F0ZV9lbnRyeV9ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPj4gIAkJCQkJICAgICAgb2Zmc2V0ICYgUEFHRV9NQVNLKTsKPj4gIAlpb3dyaXRlMzIobG93 ZXJfMzJfYml0cyhkZWx0YSksIHJlbG9jX3BhZ2UgKyBvZmZzZXRfaW5fcGFnZShvZmZzZXQpKTsK Pj4gIAo+PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4+ICsJaWYgKElOVEVM X0lORk8ob2JqKS0+Z2VuID49IDgpIHsKPj4gIAkJb2Zmc2V0ICs9IHNpemVvZih1aW50MzJfdCk7 Cj4+ICAKPj4gIAkJaWYgKG9mZnNldF9pbl9wYWdlKG9mZnNldCkgPT0gMCkgewo+PiBAQCAtMzY3 LDcgKzM2Niw2IEBAIHJlbG9jYXRlX2VudHJ5X2NsZmx1c2goc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPj4gIAkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9l bnRyeSAqcmVsb2MsCj4+ICAJCSAgICAgICB1aW50NjRfdCB0YXJnZXRfb2Zmc2V0KQo+PiAgewo+ PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+PiAgCXVpbnQzMl90 IHBhZ2Vfb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UocmVsb2MtPm9mZnNldCk7Cj4+ICAJdWludDY0 X3QgZGVsdGEgPSByZWxvY2F0aW9uX3RhcmdldChyZWxvYywgdGFyZ2V0X29mZnNldCk7Cj4+ICAJ Y2hhciAqdmFkZHI7Cj4+IEBAIC0zODEsNyArMzc5LDcgQEAgcmVsb2NhdGVfZW50cnlfY2xmbHVz aChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiAgCQkJCXJlbG9jLT5vZmZzZXQg Pj4gUEFHRV9TSElGVCkpOwo+PiAgCWNsZmx1c2hfd3JpdGUzMih2YWRkciArIHBhZ2Vfb2Zmc2V0 LCBsb3dlcl8zMl9iaXRzKGRlbHRhKSk7Cj4+ICAKPj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gOCkgewo+PiArCWlmIChJTlRFTF9JTkZPKG9iaiktPmdlbiA+PSA4KSB7Cj4+ICAJCXBh Z2Vfb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UocGFnZV9vZmZzZXQgKyBzaXplb2YodWludDMyX3Qp KTsKPj4gIAo+PiAgCQlpZiAocGFnZV9vZmZzZXQgPT0gMCkgewo+PiBAQCAtNDAzLDcgKzQwMSw2 IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPj4gIAkJCQkgICBzdHJ1Y3QgZWJfdm1hcyAqZWIsCj4+ICAJCQkJICAg c3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxvYykKPj4gIHsKPj4gLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPj4gIAlzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKnRhcmdldF9vYmo7Cj4+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnRh cmdldF9pOTE1X29iajsKPj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnRhcmdldF92bWE7Cj4+IEBAIC00 MjIsNyArNDE5LDcgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZWxvY2F0ZV9lbnRyeShzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiAgCS8qIFNhbmR5YnJpZGdlIFBQR1RUIGVycmF0 YTogV2UgbmVlZCBhIGdsb2JhbCBndHQgbWFwcGluZyBmb3IgTUkgYW5kCj4+ICAJICogcGlwZV9j b250cm9sIHdyaXRlcyBiZWNhdXNlIHRoZSBncHUgZG9lc24ndCBwcm9wZXJseSByZWRpcmVjdCB0 aGVtCj4+ICAJICogdGhyb3VnaCB0aGUgcHBndHQgZm9yIG5vbl9zZWN1cmUgYmF0Y2hidWZmZXJz LiAqLwo+PiAtCWlmICh1bmxpa2VseShJU19HRU42KGRldikgJiYKPj4gKwlpZiAodW5saWtlbHko SVNfR0VONihvYmopICYmCj4+ICAJICAgIHJlbG9jLT53cml0ZV9kb21haW4gPT0gSTkxNV9HRU1f RE9NQUlOX0lOU1RSVUNUSU9OKSkgewo+PiAgCQlyZXQgPSBpOTE1X3ZtYV9iaW5kKHRhcmdldF92 bWEsIHRhcmdldF9pOTE1X29iai0+Y2FjaGVfbGV2ZWwsCj4+ICAJCQkJICAgIFBJTl9HTE9CQUwp Owo+PiBAQCAtNDY0LDcgKzQ2MSw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2NhdGVfZW50 cnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gIAo+PiAgCS8qIENoZWNrIHRo YXQgdGhlIHJlbG9jYXRpb24gYWRkcmVzcyBpcyB2YWxpZC4uLiAqLwo+PiAgCWlmICh1bmxpa2Vs eShyZWxvYy0+b2Zmc2V0ID4KPj4gLQkJb2JqLT5iYXNlLnNpemUgLSAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gOCA/IDggOiA0KSkpIHsKPj4gKwkJb2JqLT5iYXNlLnNpemUgLSAoSU5URUxfSU5G TyhvYmopLT5nZW4gPj0gOCA/IDggOiA0KSkpIHsKPj4gIAkJRFJNX0RFQlVHKCJSZWxvY2F0aW9u IGJleW9uZCBvYmplY3QgYm91bmRzOiAiCj4+ICAJCQkgICJvYmogJXAgdGFyZ2V0ICVkIG9mZnNl dCAlZCBzaXplICVkLlxuIiwKPj4gIAkJCSAgb2JqLCByZWxvYy0+dGFyZ2V0X2hhbmRsZSwKPj4g QEAgLTY3Miw3ICs2NjksNyBAQCBuZWVkX3JlbG9jX21hcHBhYmxlKHN0cnVjdCBpOTE1X3ZtYSAq dm1hKQo+PiAgCQlyZXR1cm4gZmFsc2U7Cj4+ICAKPj4gIAkvKiBTZWUgYWxzbyB1c2VfY3B1X3Jl bG9jKCkgKi8KPj4gLQlpZiAoSEFTX0xMQyh2bWEtPm9iai0+YmFzZS5kZXYpKQo+PiArCWlmIChI QVNfTExDKHZtYS0+b2JqKSkKPj4gIAkJcmV0dXJuIGZhbHNlOwo+PiAgCj4+ICAJaWYgKHZtYS0+ b2JqLT5iYXNlLndyaXRlX2RvbWFpbiA9PSBJOTE1X0dFTV9ET01BSU5fQ1BVKQo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKPj4gaW5kZXggNTk4MTk4NTQzZGNkLi4xZWY3NWJj MjIyMGMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNl LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYwo+PiBAQCAt MjI5LDcgKzIyOSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF91cGRhdGVfZmVuY2Uo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gIAkJCQkJIHN0cnVjdCBkcm1faTkx NV9mZW5jZV9yZWcgKmZlbmNlLAo+PiAgCQkJCQkgYm9vbCBlbmFibGUpCj4+ICB7Cj4+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZh dGU7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmop Owo+PiAgCWludCByZWcgPSBmZW5jZV9udW1iZXIoZGV2X3ByaXYsIGZlbmNlKTsKPj4gIAo+PiAg CWk5MTVfZ2VtX3dyaXRlX2ZlbmNlKG9iai0+YmFzZS5kZXYsIHJlZywgZW5hYmxlID8gb2JqIDog TlVMTCk7Cj4+IEBAIC0yODYsNyArMjg2LDcgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXRfZmVuY2Uo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gIGludAo+PiAgaTkxNV9nZW1fb2Jq ZWN0X3B1dF9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAgewo+PiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9w cml2YXRlOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo b2JqKTsKPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZTsKPj4gIAlpbnQgcmV0 Owo+PiAgCj4+IEBAIC00MzMsNyArNDMzLDcgQEAgYm9vbAo+PiAgaTkxNV9nZW1fb2JqZWN0X3Bp bl9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAgewo+PiAgCWlmIChv YmotPmZlbmNlX3JlZyAhPSBJOTE1X0ZFTkNFX1JFR19OT05FKSB7Cj4+IC0JCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+PiAr CQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4+ICAJ CXN0cnVjdCBpOTE1X3ZtYSAqZ2d0dF92bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dChvYmopOwo+ PiAgCj4+ICAJCVdBUk5fT04oIWdndHRfdm1hIHx8Cj4+IEBAIC00NTcsNyArNDU3LDcgQEAgdm9p ZAo+PiAgaTkxNV9nZW1fb2JqZWN0X3VucGluX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCj4+ICB7Cj4+ICAJaWYgKG9iai0+ZmVuY2VfcmVnICE9IEk5MTVfRkVOQ0VfUkVH X05PTkUpIHsKPj4gLQkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5i YXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUob2JqKTsKPj4gIAkJV0FSTl9PTihkZXZfcHJpdi0+ZmVuY2VfcmVnc1tv YmotPmZlbmNlX3JlZ10ucGluX2NvdW50IDw9IDApOwo+PiAgCQlkZXZfcHJpdi0+ZmVuY2VfcmVn c1tvYmotPmZlbmNlX3JlZ10ucGluX2NvdW50LS07Cj4+ICAJfQo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwo+PiBpbmRleCAwNzE1YmI3NGQzMDYuLjY0NDdhNWY5NjYxZSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPj4gQEAgLTMzMDUsNyArMzMwNSw3IEBA IF9faTkxNV9nZW1fdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ PiAgCWlmIChXQVJOX09OKGk5MTVfaXNfZ2d0dCh2bSkgIT0gISFnZ3R0X3ZpZXcpKQo+PiAgCQly ZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPj4gIAo+PiAtCXZtYSA9IGttZW1fY2FjaGVfemFsbG9j KHRvX2k5MTUob2JqLT5iYXNlLmRldiktPnZtYXMsIEdGUF9LRVJORUwpOwo+PiArCXZtYSA9IGtt ZW1fY2FjaGVfemFsbG9jKHRvX2k5MTUob2JqKS0+dm1hcywgR0ZQX0tFUk5FTCk7Cj4+ICAJaWYg KHZtYSA9PSBOVUxMKQo+PiAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4gIAo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+PiBpbmRleCBkZTg5MWM5MjhiMmYuLjIy NDM4OWQwNzdjNyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f c3RvbGVuLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMK Pj4gQEAgLTU0MCwxMCArNTQwLDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3B1dF9w YWdlc19zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gIHN0YXRpYyB2 b2lkCj4+ICBpOTE1X2dlbV9vYmplY3RfcmVsZWFzZV9zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKPj4gIHsKPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQo+PiAgCWlmIChvYmotPnN0b2xl bikgewo+PiAtCQlpOTE1X2dlbV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIG9iai0+c3Rv bGVuKTsKPj4gKwkJaTkxNV9nZW1fc3RvbGVuX3JlbW92ZV9ub2RlKHRvX2k5MTUob2JqKSwgb2Jq LT5zdG9sZW4pOwo+PiAgCQlrZnJlZShvYmotPnN0b2xlbik7Cj4+ICAJCW9iai0+c3RvbGVuID0g TlVMTDsKPj4gIAl9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV90aWxpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4+IGlu ZGV4IDc0MTBmNmM5NjJlNy4uYmM0Y2I3ZjRmZTgwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV90aWxpbmcuYwo+PiBAQCAtMTIyLDEwICsxMjIsMTAgQEAgaTkxNV9nZW1fb2Jq ZWN0X2ZlbmNlX29rKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCB0aWxpbmdf bW9kZSkKPj4gIAlpZiAodGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfTk9ORSkKPj4gIAkJcmV0 dXJuIHRydWU7Cj4+ICAKPj4gLQlpZiAoSU5URUxfSU5GTyhvYmotPmJhc2UuZGV2KS0+Z2VuID49 IDQpCj4+ICsJaWYgKElOVEVMX0lORk8ob2JqKS0+Z2VuID49IDQpCj4+ICAJCXJldHVybiB0cnVl Owo+PiAgCj4+IC0JaWYgKElOVEVMX0lORk8ob2JqLT5iYXNlLmRldiktPmdlbiA9PSAzKSB7Cj4+ ICsJaWYgKElOVEVMX0lORk8ob2JqKS0+Z2VuID09IDMpIHsKPj4gIAkJaWYgKGk5MTVfZ2VtX29i al9nZ3R0X29mZnNldChvYmopICYgfkk5MTVfRkVOQ0VfU1RBUlRfTUFTSykKPj4gIAkJCXJldHVy biBmYWxzZTsKPj4gIAl9IGVsc2Ugewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fdXNlcnB0ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNl cnB0ci5jCj4+IGluZGV4IDU0MDg4YTRkNjQ5OC4uZjBlM2FkZTU5MTc3IDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdXNlcnB0ci5jCj4+IEBAIC0zMDMsNyArMzAzLDcgQEAg X19pOTE1X21tX3N0cnVjdF9maW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg c3RydWN0IG1tX3N0cnVjdCAqcmVhbCkKPj4gIHN0YXRpYyBpbnQKPj4gIGk5MTVfZ2VtX3VzZXJw dHJfaW5pdF9fbW1fc3RydWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICB7 Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmotPmJh c2UuZGV2KTsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KG9iaik7Cj4+ICAJc3RydWN0IGk5MTVfbW1fc3RydWN0ICptbTsKPj4gIAlpbnQgcmV0ID0gMDsK Pj4gIAo+PiBAQCAtMzc2LDcgKzM3Niw3IEBAIGk5MTVfZ2VtX3VzZXJwdHJfcmVsZWFzZV9fbW1f c3RydWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICAKPj4gIAlrcmVmX3B1 dF9tdXRleCgmb2JqLT51c2VycHRyLm1tLT5rcmVmLAo+PiAgCQkgICAgICAgX19pOTE1X21tX3N0 cnVjdF9mcmVlLAo+PiAtCQkgICAgICAgJnRvX2k5MTUob2JqLT5iYXNlLmRldiktPm1tX2xvY2sp Owo+PiArCQkgICAgICAgJnRvX2k5MTUob2JqKS0+bW1fbG9jayk7Cj4+ICAJb2JqLT51c2VycHRy Lm1tID0gTlVMTDsKPj4gIH0KPj4gIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCj4+IGluZGV4IGRmMGVmNWJiYThlNS4uZjk4MWJkZGM5YmJmIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4+IEBAIC0yMDY5LDcgKzIwNjksNyBA QCBzdGF0aWMgaW50IGluaXRfcGh5c19zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4+ICAKPj4gIHZvaWQgaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4+ICB7Cj4+IC0JaWYgKEhBU19MTEMocmluZ2J1 Zi0+b2JqLT5iYXNlLmRldikgJiYgIXJpbmdidWYtPm9iai0+c3RvbGVuKQo+PiArCWlmIChIQVNf TExDKHJpbmdidWYtPm9iaikgJiYgIXJpbmdidWYtPm9iai0+c3RvbGVuKQo+PiAgCQl2dW5tYXAo cmluZ2J1Zi0+dmlydHVhbF9zdGFydCk7Cj4+ICAJZWxzZQo+PiAgCQlpb3VubWFwKHJpbmdidWYt PnZpcnR1YWxfc3RhcnQpOwo+PiAtLSAKPj4gMi44LjAucmMzCj4+IAo+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBs aXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApKYW5pIE5pa3Vs YSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==