From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/6] drm/i915: Extend magic to_i915() to work with drm_i915_gem_object Date: Mon, 21 Mar 2016 10:47:23 +0100 Message-ID: <20160321094723.GM28483@phenom.ffwll.local> References: <1458335784-1773-1-git-send-email-chris@chris-wilson.co.uk> <1458335784-1773-3-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 mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 95C0E6E287 for ; Mon, 21 Mar 2016 09:46:36 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id x188so20581564wmg.0 for ; Mon, 21 Mar 2016 02:46:36 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1458335784-1773-3-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 T24gRnJpLCBNYXIgMTgsIDIwMTYgYXQgMDk6MTY6MjFQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgoKSSdtIG5vdCBzdXJlIHRoaXMgaXMgdG9vIG11Y2ggbWFnaWMgLi4uIElmIGl0IGdhdGhl cnMgcmF2aW5nIGFwcGxhdXMgYW5kCnN1cHBvcnQgZnJvbSBvdGhlcnMgdGhlbiBJJ20gb2sgOy0p Ci1EYW5pZWwKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAg ICAgIHwgIDcgKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg ICAgICB8IDE1ICsrKysrKysrLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YyAgICAgICAgICAgIHwgMzQgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8IDE3ICsrKysrKy0tLS0tLS0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jICAgICAgfCAgOCArKyst LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICB8ICAyICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jICAgICB8ICA0ICstLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgICAgIHwgIDQgKystLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgICAgfCAgNCArKy0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgICB8ICAyICstCj4gIDEw IGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggZTBiYTNlMzgwMDBmLi4zM2RkY2Rm NmQwNDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0xMjgsNyAr MTI4LDYgQEAgc3RhdGljIHU2NCBpOTE1X2dlbV9vYmpfdG90YWxfZ2d0dF9zaXplKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHN0YXRpYyB2b2lkCj4gIGRlc2NyaWJlX29iaihz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqLT5iYXNl LmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gIAlzdHJ1Y3QgaTkx NV92bWEgKnZtYTsKPiAgCWludCBwaW5fY291bnQgPSAwOwo+IEBAIC0xNDMsMTMgKzE0MiwxMyBA QCBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQo+ICAJCSAgIG9iai0+YmFzZS5zaXplIC8gMTAyNCwKPiAgCQkgICBvYmotPmJh c2UucmVhZF9kb21haW5zLAo+ICAJCSAgIG9iai0+YmFzZS53cml0ZV9kb21haW4pOwo+IC0JZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGkpCj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5n aW5lLCBvYmosIGkpCj4gIAkJc2VxX3ByaW50ZihtLCAiJXggIiwKPiAgCQkJCWk5MTVfZ2VtX3Jl cXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9yZWFkX3JlcVtpXSkpOwo+ICAJc2VxX3ByaW50Ziht LCAiXSAleCAleCVzJXMlcyIsCj4gIAkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2Jq LT5sYXN0X3dyaXRlX3JlcSksCj4gIAkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2Jq LT5sYXN0X2ZlbmNlZF9yZXEpLAo+IC0JCSAgIGk5MTVfY2FjaGVfbGV2ZWxfc3RyKHRvX2k5MTUo b2JqLT5iYXNlLmRldiksIG9iai0+Y2FjaGVfbGV2ZWwpLAo+ICsJCSAgIGk5MTVfY2FjaGVfbGV2 ZWxfc3RyKHRvX2k5MTUob2JqKSwgb2JqLT5jYWNoZV9sZXZlbCksCj4gIAkJICAgb2JqLT5kaXJ0 eSA/ICIgZGlydHkiIDogIiIsCj4gIAkJICAgb2JqLT5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVF RCA/ICIgcHVyZ2VhYmxlIiA6ICIiKTsKPiAgCWlmIChvYmotPmJhc2UubmFtZSkKPiBAQCAtMzM5 LDcgKzMzOCw3IEBAIHN0YXRpYyBpbnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lkICpwdHIs IHZvaWQgKmRhdGEpCj4gIAlpZiAob2JqLT5iYXNlLm5hbWUgfHwgb2JqLT5iYXNlLmRtYV9idWYp Cj4gIAkJc3RhdHMtPnNoYXJlZCArPSBvYmotPmJhc2Uuc2l6ZTsKPiAgCj4gLQlpZiAoVVNFU19G VUxMX1BQR1RUKG9iai0+YmFzZS5kZXYpKSB7Cj4gKwlpZiAoVVNFU19GVUxMX1BQR1RUKG9iaikp IHsKPiAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5r KSB7Cj4gIAkJCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gaW5kZXggMGM5ZmUwMGQzZTgzLi45MjM2NWYwNDdlNTMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjE4Niw2ICsyMTg2LDEyIEBAIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0IHsKPiAgfTsKPiAgI2RlZmluZSB0b19pbnRlbF9ibyh4KSBjb250YWluZXJf b2YoeCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsIGJhc2UpCj4gIAo+ICtzdGF0aWMgaW5s aW5lIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICoKPiArX19vYmpfdG9faTkxNShjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlyZXR1cm4gX190b19pOTE1KG9i ai0+YmFzZS5kZXYpOwo+ICt9Cj4gKwo+ICB2b2lkIGk5MTVfZ2VtX3RyYWNrX2ZiKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvbGQsCj4gIAkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpuZXcsCj4gIAkJICAgICAgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOwo+IEBA IC0yNDU1LDYgKzI0NjEsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiAgCQlfX3Ag PSAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKilwOyBcCj4gIAllbHNlIGlmIChfX2J1aWx0aW5f dHlwZXNfY29tcGF0aWJsZV9wKHR5cGVvZigqcCksIHN0cnVjdCBkcm1fZGV2aWNlKSkgXAo+ICAJ CV9fcCA9IF9fdG9faTkxNSgoc3RydWN0IGRybV9kZXZpY2UgKilwKTsgXAo+ICsJZWxzZSBpZiAo X19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcCh0eXBlb2YoKnApLCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCkpIFwKPiArCQlfX3AgPSBfX29ial90b19pOTE1KChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqKXApOyBcCj4gIAllbHNlIFwKPiAgCQlCVUlMRF9CVUcoKTsgXAo+ICAJX19w OyBcCj4gQEAgLTMxMzIsOCArMzE0MCw3IEBAIGk5MTVfZ2VtX29ial90b19nZ3R0KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIGJvb2wgaTkxNV9nZW1fb2JqX2lzX3Bpbm5lZChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPiAgCj4gIC8qIFNvbWUgR0dUVCBWTSBo ZWxwZXJzICovCj4gLSNkZWZpbmUgaTkxNV9vYmpfdG9fZ2d0dChvYmopIFwKPiAtCSgmKChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKShvYmopLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGUpLT5nZ3R0 LmJhc2UpCj4gKyNkZWZpbmUgaTkxNV9vYmpfdG9fZ2d0dChvYmopICgmdG9faTkxNShvYmopLT5n Z3R0LmJhc2UpCj4gIAo+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICoKPiAg aTkxNV92bV90b19wcGd0dChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiBAQCAtMzI4 Miw5ICszMjg5LDcgQEAgdm9pZCBpOTE1X2dlbV9zaHJpbmtlcl9jbGVhbnVwKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIC8qIGk5MTVfZ2VtX3RpbGluZy5jICovCj4gIHN0 YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9vYmplY3RfbmVlZHNfYml0MTdfc3dpenpsZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCj4gLQlyZXR1 cm4gZGV2X3ByaXYtPm1tLmJpdF82X3N3aXp6bGVfeCA9PSBJOTE1X0JJVF82X1NXSVpaTEVfOV8x MF8xNyAmJgo+ICsJcmV0dXJuIHRvX2k5MTUob2JqKS0+bW0uYml0XzZfc3dpenpsZV94ID09IEk5 MTVfQklUXzZfU1dJWlpMRV85XzEwXzE3ICYmCj4gIAkJb2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1 X1RJTElOR19OT05FOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDg1 ODhjODNhYmIzNS4uNzEwYTZiYmM5ODVlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4g QEAgLTM2MSwxNCArMzYxLDEyIEBAIG91dDoKPiAgCj4gIHZvaWQgKmk5MTVfZ2VtX29iamVjdF9h bGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0JcmV0dXJuIGttZW1fY2FjaGVf emFsbG9jKGRldl9wcml2LT5vYmplY3RzLCBHRlBfS0VSTkVMKTsKPiArCXJldHVybiBrbWVtX2Nh Y2hlX3phbGxvYyh0b19pOTE1KGRldiktPm9iamVjdHMsIEdGUF9LRVJORUwpOwo+ICB9Cj4gIAo+ ICB2b2lkIGk5MTVfZ2VtX29iamVjdF9mcmVlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFz ZS5kZXYtPmRldl9wcml2YXRlOwo+IC0Ja21lbV9jYWNoZV9mcmVlKGRldl9wcml2LT5vYmplY3Rz LCBvYmopOwo+ICsJa21lbV9jYWNoZV9mcmVlKHRvX2k5MTUob2JqKS0+b2JqZWN0cywgb2JqKTsK PiAgfQo+ICAKPiAgc3RhdGljIGludAo+IEBAIC0yMDI4LDcgKzIwMjYsNyBAQCBpOTE1X2dlbV9n ZXRfZ3R0X2FsaWdubWVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBzaXplLAo+ ICAKPiAgc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX21tYXBfb2Zmc2V0KHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+ICAJaW50IHJldDsKPiAg Cj4gIAlpZiAoZHJtX3ZtYV9ub2RlX2hhc19vZmZzZXQoJm9iai0+YmFzZS52bWFfbm9kZSkpCj4g QEAgLTIyNDEsNyArMjIzOSw3IEBAIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgc3RhdGljIGludAo+ICBpOTE1X2dlbV9vYmplY3Rf Z2V0X3BhZ2VzX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICB7Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvYmotPmJhc2UuZGV2LT5kZXZfcHJp dmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2Jq KTsKPiAgCWludCBwYWdlX2NvdW50LCBpOwo+ICAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBp bmc7Cj4gIAlzdHJ1Y3Qgc2dfdGFibGUgKnN0Owo+IEBAIC0yMzcyLDcgKzIzNzAsNyBAQCBlcnJf cGFnZXM6Cj4gIGludAo+ICBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+ICAJY29uc3Qgc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3Rfb3BzICpvcHMgPSBvYmotPm9wczsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC0y NDQ5LDggKzI0NDcsNyBAQCBpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCByaW5nKQo+ICAJICogc28gdGhhdCB3ZSBkb24ndCBz dGVhbCBmcm9tIHJlY2VudGx5IHVzZWQgYnV0IGluYWN0aXZlIG9iamVjdHMKPiAgCSAqICh1bmxl c3Mgd2UgYXJlIGZvcmNlZCB0byBvZmMhKQo+ICAJICovCj4gLQlsaXN0X21vdmVfdGFpbCgmb2Jq LT5nbG9iYWxfbGlzdCwKPiAtCQkgICAgICAgJnRvX2k5MTUob2JqLT5iYXNlLmRldiktPm1tLmJv dW5kX2xpc3QpOwo+ICsJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZ0b19pOTE1 KG9iaiktPm1tLmJvdW5kX2xpc3QpOwo+ICAKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAm b2JqLT52bWFfbGlzdCwgb2JqX2xpbmspIHsKPiAgCQlpZiAoIWxpc3RfZW1wdHkoJnZtYS0+dm1f bGluaykpCj4gQEAgLTMxNzIsNyArMzE2OSw3IEBAIF9faTkxNV9nZW1fb2JqZWN0X3N5bmMoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlpZiAo IWk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQob2JqLT5iYXNlLmRldikpIHsKPiAtCQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7Cj4gKwkJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9iaik7Cj4gIAkJcmV0ID0gX19p OTE1X3dhaXRfcmVxdWVzdChmcm9tX3JlcSwKPiAgCQkJCQkgIGF0b21pY19yZWFkKCZpOTE1LT5n cHVfZXJyb3IucmVzZXRfY291bnRlciksCj4gIAkJCQkJICBpOTE1LT5tbS5pbnRlcnJ1cHRpYmxl LAo+IEBAIC0zMzEyLDcgKzMzMDksNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9vYmplY3RfZmlu aXNoX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICBzdGF0aWMgaW50IF9f aTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBib29sIHdhaXQpCj4gIHsKPiAg CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+ICAJ aW50IHJldDsKPiAgCj4gIAlpZiAobGlzdF9lbXB0eSgmdm1hLT5vYmpfbGluaykpCj4gQEAgLTM3 NzIsNyArMzc2OSw3IEBAIGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBib29sIHdyaXRlKQo+ICAJdm1hID0gaTkxNV9nZW1f b2JqX3RvX2dndHQob2JqKTsKPiAgCWlmICh2bWEgJiYgZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2 bWEtPm5vZGUpICYmICFvYmotPmFjdGl2ZSkKPiAgCQlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9s aW5rLAo+IC0JCQkgICAgICAgJnRvX2k5MTUob2JqLT5iYXNlLmRldiktPmdndHQuYmFzZS5pbmFj dGl2ZV9saXN0KTsKPiArCQkJICAgICAgICZ0b19pOTE1KG9iaiktPmdndHQuYmFzZS5pbmFjdGl2 ZV9saXN0KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC00MDEwLDcgKzQwMDcsNyBAQCBp OTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAgCSAqIHdpdGggdGhhdCBiaXQgaW4gdGhlIFBURSB0byBtYWluIG1lbW9y eSB3aXRoIGp1c3Qgb25lIFBJUEVfQ09OVFJPTC4KPiAgCSAqLwo+ICAJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3NldF9jYWNoZV9sZXZlbChvYmosCj4gLQkJCQkJICAgICAgSEFTX1dUKG9iai0+YmFz ZS5kZXYpID8gSTkxNV9DQUNIRV9XVCA6IEk5MTVfQ0FDSEVfTk9ORSk7Cj4gKwkJCQkJICAgICAg SEFTX1dUKG9iaikgPyBJOTE1X0NBQ0hFX1dUIDogSTkxNV9DQUNIRV9OT05FKTsKPiAgCWlmIChy ZXQpCj4gIAkJZ290byBlcnJfdW5waW5fZGlzcGxheTsKPiAgCj4gQEAgLTQyMDksNyArNDIwNiw3 IEBAIHZvaWQgX19pOTE1X3ZtYV9zZXRfbWFwX2FuZF9mZW5jZWFibGUoc3RydWN0IGk5MTVfdm1h ICp2bWEpCj4gIAkJICAgICAodm1hLT5ub2RlLnN0YXJ0ICYgKGZlbmNlX2FsaWdubWVudCAtIDEp KSA9PSAwKTsKPiAgCj4gIAltYXBwYWJsZSA9ICh2bWEtPm5vZGUuc3RhcnQgKyBmZW5jZV9zaXpl IDw9Cj4gLQkJICAgIHRvX2k5MTUob2JqLT5iYXNlLmRldiktPmdndHQubWFwcGFibGVfZW5kKTsK PiArCQkgICAgdG9faTkxNShvYmopLT5nZ3R0Lm1hcHBhYmxlX2VuZCk7Cj4gIAo+ICAJb2JqLT5t YXBfYW5kX2ZlbmNlYWJsZSA9IG1hcHBhYmxlICYmIGZlbmNlYWJsZTsKPiAgfQo+IEBAIC00MjIx LDcgKzQyMTgsNyBAQCBpOTE1X2dlbV9vYmplY3RfZG9fcGluKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4gIAkJICAgICAgIHVpbnQzMl90IGFsaWdubWVudCwKPiAgCQkgICAgICAg dWludDY0X3QgZmxhZ3MpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4g IAl1bnNpZ25lZCBib3VuZDsKPiAgCWludCByZXQ7Cj4gQEAgLTQ0NTYsNyArNDQ1Myw3IEBAIHZv aWQgaTkxNV9nZW1fb2JqZWN0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiAgCW9iai0+ZmVuY2VfcmVnID0gSTkxNV9GRU5DRV9SRUdfTk9ORTsKPiAgCW9iai0+bWFkdiA9 IEk5MTVfTUFEVl9XSUxMTkVFRDsKPiAgCj4gLQlpOTE1X2dlbV9pbmZvX2FkZF9vYmoob2JqLT5i YXNlLmRldi0+ZGV2X3ByaXZhdGUsIG9iai0+YmFzZS5zaXplKTsKPiArCWk5MTVfZ2VtX2luZm9f YWRkX29iaih0b19pOTE1KG9iaiksIG9iai0+YmFzZS5zaXplKTsKPiAgfQo+ICAKPiAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1X2dlbV9vYmplY3Rfb3Bz ID0gewo+IEBAIC00NTQ1LDggKzQ1NDIsNyBAQCBzdGF0aWMgYm9vbCBkaXNjYXJkX2JhY2tpbmdf c3RvcmFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICB2b2lkIGk5MTVfZ2Vt X2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaikKPiAgewo+ICAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHRvX2ludGVsX2JvKGdlbV9vYmopOwo+IC0J c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+ICAJc3RydWN0IGk5MTVfdm1h ICp2bWEsICpuZXh0Owo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiBA QCAtNDY0Nyw3ICs0NjQzLDcgQEAgdm9pZCBpOTE1X2dlbV92bWFfZGVzdHJveShzdHJ1Y3QgaTkx NV92bWEgKnZtYSkKPiAgCj4gIAlsaXN0X2RlbCgmdm1hLT5vYmpfbGluayk7Cj4gIAo+IC0Ja21l bV9jYWNoZV9mcmVlKHRvX2k5MTUodm1hLT5vYmotPmJhc2UuZGV2KS0+dm1hcywgdm1hKTsKPiAr CWttZW1fY2FjaGVfZnJlZSh0b19pOTE1KHZtYS0+b2JqKS0+dm1hcywgdm1hKTsKPiAgfQo+ICAK PiAgc3RhdGljIHZvaWQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCj4gaW5kZXggMzc0YTBjYjdhMDkyLi4zOWVkNDAzYjlkZTMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTI0MSw3ICsyNDEsNyBAQCBz dGF0aWMgdm9pZCBlYl9kZXN0cm95KHN0cnVjdCBlYl92bWFzICplYikKPiAgCj4gIHN0YXRpYyBp bmxpbmUgaW50IHVzZV9jcHVfcmVsb2Moc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK PiAgewo+IC0JcmV0dXJuIChIQVNfTExDKG9iai0+YmFzZS5kZXYpIHx8Cj4gKwlyZXR1cm4gKEhB U19MTEMob2JqKSB8fAo+ICAJCW9iai0+YmFzZS53cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9N QUlOX0NQVSB8fAo+ICAJCW9iai0+Y2FjaGVfbGV2ZWwgIT0gSTkxNV9DQUNIRV9OT05FKTsKPiAg fQo+IEBAIC0zMTIsOCArMzEyLDcgQEAgcmVsb2NhdGVfZW50cnlfZ3R0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9u X2VudHJ5ICpyZWxvYywKPiAgCQkgICB1aW50NjRfdCB0YXJnZXRfb2Zmc2V0KQo+ICB7Cj4gLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4gIAl1aW50NjRfdCBkZWx0YSA9 IHJlbG9jYXRpb25fdGFyZ2V0KHJlbG9jLCB0YXJnZXRfb2Zmc2V0KTsKPiAgCXVpbnQ2NF90IG9m ZnNldDsKPiAgCXZvaWQgX19pb21lbSAqcmVsb2NfcGFnZTsKPiBAQCAtMzM0LDcgKzMzMyw3IEBA IHJlbG9jYXRlX2VudHJ5X2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJ CQkJCSAgICAgIG9mZnNldCAmIFBBR0VfTUFTSyk7Cj4gIAlpb3dyaXRlMzIobG93ZXJfMzJfYml0 cyhkZWx0YSksIHJlbG9jX3BhZ2UgKyBvZmZzZXRfaW5fcGFnZShvZmZzZXQpKTsKPiAgCj4gLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+ICsJaWYgKElOVEVMX0lORk8ob2JqKS0+ Z2VuID49IDgpIHsKPiAgCQlvZmZzZXQgKz0gc2l6ZW9mKHVpbnQzMl90KTsKPiAgCj4gIAkJaWYg KG9mZnNldF9pbl9wYWdlKG9mZnNldCkgPT0gMCkgewo+IEBAIC0zNjcsNyArMzY2LDYgQEAgcmVs b2NhdGVfZW50cnlfY2xmbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJ CSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jLAo+ICAJ CSAgICAgICB1aW50NjRfdCB0YXJnZXRfb2Zmc2V0KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPiAgCXVpbnQzMl90IHBhZ2Vfb2Zmc2V0ID0gb2Zmc2V0 X2luX3BhZ2UocmVsb2MtPm9mZnNldCk7Cj4gIAl1aW50NjRfdCBkZWx0YSA9IHJlbG9jYXRpb25f dGFyZ2V0KHJlbG9jLCB0YXJnZXRfb2Zmc2V0KTsKPiAgCWNoYXIgKnZhZGRyOwo+IEBAIC0zODEs NyArMzc5LDcgQEAgcmVsb2NhdGVfZW50cnlfY2xmbHVzaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICAJCQkJcmVsb2MtPm9mZnNldCA+PiBQQUdFX1NISUZUKSk7Cj4gIAljbGZs dXNoX3dyaXRlMzIodmFkZHIgKyBwYWdlX29mZnNldCwgbG93ZXJfMzJfYml0cyhkZWx0YSkpOwo+ ICAKPiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSB7Cj4gKwlpZiAoSU5URUxfSU5G TyhvYmopLT5nZW4gPj0gOCkgewo+ICAJCXBhZ2Vfb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UocGFn ZV9vZmZzZXQgKyBzaXplb2YodWludDMyX3QpKTsKPiAgCj4gIAkJaWYgKHBhZ2Vfb2Zmc2V0ID09 IDApIHsKPiBAQCAtNDAzLDcgKzQwMSw2IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2NhdGVf ZW50cnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJCSAgIHN0cnVjdCBl Yl92bWFzICplYiwKPiAgCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRy eSAqcmVsb2MpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2 Owo+ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICp0YXJnZXRfb2JqOwo+ICAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKnRhcmdldF9pOTE1X29iajsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdGFy Z2V0X3ZtYTsKPiBAQCAtNDIyLDcgKzQxOSw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2Nh dGVfZW50cnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCS8qIFNhbmR5YnJp ZGdlIFBQR1RUIGVycmF0YTogV2UgbmVlZCBhIGdsb2JhbCBndHQgbWFwcGluZyBmb3IgTUkgYW5k Cj4gIAkgKiBwaXBlX2NvbnRyb2wgd3JpdGVzIGJlY2F1c2UgdGhlIGdwdSBkb2Vzbid0IHByb3Bl cmx5IHJlZGlyZWN0IHRoZW0KPiAgCSAqIHRocm91Z2ggdGhlIHBwZ3R0IGZvciBub25fc2VjdXJl IGJhdGNoYnVmZmVycy4gKi8KPiAtCWlmICh1bmxpa2VseShJU19HRU42KGRldikgJiYKPiArCWlm ICh1bmxpa2VseShJU19HRU42KG9iaikgJiYKPiAgCSAgICByZWxvYy0+d3JpdGVfZG9tYWluID09 IEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTikpIHsKPiAgCQlyZXQgPSBpOTE1X3ZtYV9iaW5k KHRhcmdldF92bWEsIHRhcmdldF9pOTE1X29iai0+Y2FjaGVfbGV2ZWwsCj4gIAkJCQkgICAgUElO X0dMT0JBTCk7Cj4gQEAgLTQ2NCw3ICs0NjEsNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX3JlbG9j YXRlX2VudHJ5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAo+ICAJLyogQ2hl Y2sgdGhhdCB0aGUgcmVsb2NhdGlvbiBhZGRyZXNzIGlzIHZhbGlkLi4uICovCj4gIAlpZiAodW5s aWtlbHkocmVsb2MtPm9mZnNldCA+Cj4gLQkJb2JqLT5iYXNlLnNpemUgLSAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gOCA/IDggOiA0KSkpIHsKPiArCQlvYmotPmJhc2Uuc2l6ZSAtIChJTlRFTF9J TkZPKG9iaiktPmdlbiA+PSA4ID8gOCA6IDQpKSkgewo+ICAJCURSTV9ERUJVRygiUmVsb2NhdGlv biBiZXlvbmQgb2JqZWN0IGJvdW5kczogIgo+ICAJCQkgICJvYmogJXAgdGFyZ2V0ICVkIG9mZnNl dCAlZCBzaXplICVkLlxuIiwKPiAgCQkJICBvYmosIHJlbG9jLT50YXJnZXRfaGFuZGxlLAo+IEBA IC02NzIsNyArNjY5LDcgQEAgbmVlZF9yZWxvY19tYXBwYWJsZShzdHJ1Y3QgaTkxNV92bWEgKnZt YSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJLyogU2VlIGFsc28gdXNlX2NwdV9yZWxvYygp ICovCj4gLQlpZiAoSEFTX0xMQyh2bWEtPm9iai0+YmFzZS5kZXYpKQo+ICsJaWYgKEhBU19MTEMo dm1hLT5vYmopKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlpZiAodm1hLT5vYmotPmJhc2Uu d3JpdGVfZG9tYWluID09IEk5MTVfR0VNX0RPTUFJTl9DUFUpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9mZW5jZS5jCj4gaW5kZXggNTk4MTk4NTQzZGNkLi4xZWY3NWJjMjIyMGMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKPiBAQCAtMjI5LDcgKzIyOSw3IEBA IHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF91cGRhdGVfZmVuY2Uoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJCQkgc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZyAqZmVu Y2UsCj4gIAkJCQkJIGJvb2wgZW5hYmxlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqKTsKPiAgCWludCByZWcgPSBmZW5j ZV9udW1iZXIoZGV2X3ByaXYsIGZlbmNlKTsKPiAgCj4gIAlpOTE1X2dlbV93cml0ZV9mZW5jZShv YmotPmJhc2UuZGV2LCByZWcsIGVuYWJsZSA/IG9iaiA6IE5VTEwpOwo+IEBAIC0yODYsNyArMjg2 LDcgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXRfZmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPiAgaW50Cj4gIGk5MTVfZ2VtX29iamVjdF9wdXRfZmVuY2Uoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZmVu Y2VfcmVnICpmZW5jZTsKPiAgCWludCByZXQ7Cj4gIAo+IEBAIC00MzMsNyArNDMzLDcgQEAgYm9v bAo+ICBpOTE1X2dlbV9vYmplY3RfcGluX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCj4gIHsKPiAgCWlmIChvYmotPmZlbmNlX3JlZyAhPSBJOTE1X0ZFTkNFX1JFR19OT05F KSB7Cj4gLQkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRl di0+ZGV2X3ByaXZhdGU7Cj4gKwkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShvYmopOwo+ICAJCXN0cnVjdCBpOTE1X3ZtYSAqZ2d0dF92bWEgPSBpOTE1X2dlbV9v YmpfdG9fZ2d0dChvYmopOwo+ICAKPiAgCQlXQVJOX09OKCFnZ3R0X3ZtYSB8fAo+IEBAIC00NTcs NyArNDU3LDcgQEAgdm9pZAo+ICBpOTE1X2dlbV9vYmplY3RfdW5waW5fZmVuY2Uoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgewo+ICAJaWYgKG9iai0+ZmVuY2VfcmVnICE9IEk5 MTVfRkVOQ0VfUkVHX05PTkUpIHsKPiAtCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4gIAkJV0FSTl9PTihkZXZfcHJpdi0+ZmVu Y2VfcmVnc1tvYmotPmZlbmNlX3JlZ10ucGluX2NvdW50IDw9IDApOwo+ICAJCWRldl9wcml2LT5m ZW5jZV9yZWdzW29iai0+ZmVuY2VfcmVnXS5waW5fY291bnQtLTsKPiAgCX0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IDA3MTViYjc0ZDMwNi4uNjQ0N2E1Zjk2NjFlIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMzMwNSw3ICszMzA1LDcg QEAgX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gIAlpZiAoV0FSTl9PTihpOTE1X2lzX2dndHQodm0pICE9ICEhZ2d0dF92aWV3KSkKPiAgCQly ZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiAgCj4gLQl2bWEgPSBrbWVtX2NhY2hlX3phbGxvYyh0 b19pOTE1KG9iai0+YmFzZS5kZXYpLT52bWFzLCBHRlBfS0VSTkVMKTsKPiArCXZtYSA9IGttZW1f Y2FjaGVfemFsbG9jKHRvX2k5MTUob2JqKS0+dm1hcywgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAodm1h ID09IE5VTEwpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gaW5kZXggZGU4OTFjOTI4YjJmLi4yMjQzODlkMDc3 YzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+IEBAIC01NDAs MTAgKzU0MCw4IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfc3RvbGVu KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHN0YXRpYyB2b2lkCj4gIGk5MTVf Z2VtX29iamVjdF9yZWxlYXNlX3N0b2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvYmotPmJhc2Uu ZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCj4gIAlpZiAob2JqLT5zdG9sZW4pIHsKPiAtCQlpOTE1X2dl bV9zdG9sZW5fcmVtb3ZlX25vZGUoZGV2X3ByaXYsIG9iai0+c3RvbGVuKTsKPiArCQlpOTE1X2dl bV9zdG9sZW5fcmVtb3ZlX25vZGUodG9faTkxNShvYmopLCBvYmotPnN0b2xlbik7Cj4gIAkJa2Zy ZWUob2JqLT5zdG9sZW4pOwo+ICAJCW9iai0+c3RvbGVuID0gTlVMTDsKPiAgCX0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwo+IGluZGV4IDc0MTBmNmM5NjJlNy4uYmM0Y2I3 ZjRmZTgwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGlu Zy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKPiBAQCAt MTIyLDEwICsxMjIsMTAgQEAgaTkxNV9nZW1fb2JqZWN0X2ZlbmNlX29rKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosIGludCB0aWxpbmdfbW9kZSkKPiAgCWlmICh0aWxpbmdfbW9kZSA9 PSBJOTE1X1RJTElOR19OT05FKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAtCWlmIChJTlRFTF9J TkZPKG9iai0+YmFzZS5kZXYpLT5nZW4gPj0gNCkKPiArCWlmIChJTlRFTF9JTkZPKG9iaiktPmdl biA+PSA0KQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAtCWlmIChJTlRFTF9JTkZPKG9iai0+YmFz ZS5kZXYpLT5nZW4gPT0gMykgewo+ICsJaWYgKElOVEVMX0lORk8ob2JqKS0+Z2VuID09IDMpIHsK PiAgCQlpZiAoaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikgJiB+STkxNV9GRU5DRV9TVEFS VF9NQVNLKQo+ICAJCQlyZXR1cm4gZmFsc2U7Cj4gIAl9IGVsc2Ugewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV91c2VycHRyLmMKPiBpbmRleCA1NDA4OGE0ZDY0OTguLmYwZTNhZGU1OTE3 NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKPiBAQCAtMzAz LDcgKzMwMyw3IEBAIF9faTkxNV9tbV9zdHJ1Y3RfZmluZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHN0cnVjdCBtbV9zdHJ1Y3QgKnJlYWwpCj4gIHN0YXRpYyBpbnQKPiAgaTkx NV9nZW1fdXNlcnB0cl9pbml0X19tbV9zdHJ1Y3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShvYmotPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUob2JqKTsKPiAgCXN0cnVjdCBpOTE1X21tX3N0cnVjdCAqbW07Cj4gIAlpbnQgcmV0 ID0gMDsKPiAgCj4gQEAgLTM3Niw3ICszNzYsNyBAQCBpOTE1X2dlbV91c2VycHRyX3JlbGVhc2Vf X21tX3N0cnVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAKPiAgCWtyZWZf cHV0X211dGV4KCZvYmotPnVzZXJwdHIubW0tPmtyZWYsCj4gIAkJICAgICAgIF9faTkxNV9tbV9z dHJ1Y3RfZnJlZSwKPiAtCQkgICAgICAgJnRvX2k5MTUob2JqLT5iYXNlLmRldiktPm1tX2xvY2sp Owo+ICsJCSAgICAgICAmdG9faTkxNShvYmopLT5tbV9sb2NrKTsKPiAgCW9iai0+dXNlcnB0ci5t bSA9IE5VTEw7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu Ywo+IGluZGV4IGRmMGVmNWJiYThlNS4uZjk4MWJkZGM5YmJmIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0yMDY5LDcgKzIwNjksNyBAQCBzdGF0aWMg aW50IGluaXRfcGh5c19zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gIAo+ICB2b2lkIGludGVsX3VucGluX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nYnVmKQo+ICB7Cj4gLQlpZiAoSEFTX0xMQyhyaW5nYnVmLT5vYmotPmJhc2Uu ZGV2KSAmJiAhcmluZ2J1Zi0+b2JqLT5zdG9sZW4pCj4gKwlpZiAoSEFTX0xMQyhyaW5nYnVmLT5v YmopICYmICFyaW5nYnVmLT5vYmotPnN0b2xlbikKPiAgCQl2dW5tYXAocmluZ2J1Zi0+dmlydHVh bF9zdGFydCk7Cj4gIAllbHNlCj4gIAkJaW91bm1hcChyaW5nYnVmLT52aXJ0dWFsX3N0YXJ0KTsK PiAtLSAKPiAyLjguMC5yYzMKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK