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 18:44:01 +0100 Message-ID: <20160321174401.GR28483@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> <20160321094723.GM28483@phenom.ffwll.local> <87mvpsyogt.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id A750C6E060 for ; Mon, 21 Mar 2016 17:43:14 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id p65so24104147wmp.1 for ; Mon, 21 Mar 2016 10:43:14 -0700 (PDT) Content-Disposition: inline In-Reply-To: <87mvpsyogt.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXIgMjEsIDIwMTYgYXQgMDM6MDE6MjJQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gTW9uLCAyMSBNYXIgMjAxNiwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNo PiB3cm90ZToKPiA+IE9uIEZyaSwgTWFyIDE4LCAyMDE2IGF0IDA5OjE2OjIxUE0gKzAwMDAsIENo cmlzIFdpbHNvbiB3cm90ZToKPiA+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPiA+Cj4gPiBJJ20gbm90IHN1cmUgdGhpcyBpcyB0b28gbXVj aCBtYWdpYyAuLi4gSWYgaXQgZ2F0aGVycyByYXZpbmcgYXBwbGF1cyBhbmQKPiA+IHN1cHBvcnQg ZnJvbSBvdGhlcnMgdGhlbiBJJ20gb2sgOy0pCj4gCj4gSSdtIG5vdCB0aHJpbGxlZCwgbGlrZSBJ IHNhaWQgaW4gWzFdLgo+IAo+IElmIHlvdSBndXlzIHJlYWxseSBpbnNpc3Qgb24gaGF2aW5nIHRo aXMsIHBsZWFzZSBhdCBsZWFzdCBtYWtlIGFsbCB0aGUKPiAqb3RoZXIqIG1hY3JvcyByZXF1aXJl IGRldl9wcml2LCBhbmQgdXNlIHRvX2k5MTUoKSBhdCB0aGUgY2FsbCBzaXRlcy4KCnRiaCBwZXJz b25hbGx5IGxlYW5pbmcgdGhlIGV4YWN0IHNhbWUgd2F5LCBpZiBzb21lb25lIHJlYWxseSB3YW50 cyB0byBoZWFyCm15IGJpa2VzaGVkLiBJIGFscmVhZHkgZHJvcHBlZCBpdCBpbiB0aGUgZmlyc3Qg dGhyZWFkIHRvbywgKl90b19pOTE1IHNlZW1zCmxpa2UgYSBtdWNoIG1vcmUgQyBsaWtlIGFwcHJv YWNoLgotRGFuaWVsCgo+IAo+IEJSLAo+IEphbmkuCj4gCj4gCj4gCj4gWzFdIGh0dHA6Ly9taWQu Z21hbmUub3JnLzg3MXQ3OWhyaXEuZnNmQGludGVsLmNvbQo+IAo+ID4gLURhbmllbAo+ID4+IC0t LQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAgNyAr KystLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwg MTUgKysrKysrKystLS0tLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAg ICAgICAgICAgfCAzNCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiA+PiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgMTcgKysrKysrLS0tLS0tLS0t Cj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMgICAgICB8ICA4ICsr Ky0tLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgIHwg IDIgKy0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgICAgIHwg IDQgKy0tLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYyAgICAg fCAgNCArKy0tCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyAg ICB8ICA0ICsrLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j ICAgIHwgIDIgKy0KPiA+PiAgMTAgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgNTEg ZGVsZXRpb25zKC0pCj4gPj4gCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiA+ PiBpbmRleCBlMGJhM2UzODAwMGYuLjMzZGRjZGY2ZDA0NiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gPj4gQEAgLTEyOCw3ICsxMjgsNiBAQCBzdGF0aWMgdTY0 IGk5MTVfZ2VtX29ial90b3RhbF9nZ3R0X3NpemUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPiA+PiAgc3RhdGljIHZvaWQKPiA+PiAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmls ZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiA+PiAgewo+ID4+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsK PiA+PiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiA+PiAgCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwo+ID4+ICAJaW50IHBpbl9jb3VudCA9IDA7Cj4gPj4gQEAgLTE0MywxMyArMTQy LDEzIEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCj4gPj4gIAkJICAgb2JqLT5iYXNlLnNpemUgLyAxMDI0LAo+ID4+ICAJ CSAgIG9iai0+YmFzZS5yZWFkX2RvbWFpbnMsCj4gPj4gIAkJICAgb2JqLT5iYXNlLndyaXRlX2Rv bWFpbik7Cj4gPj4gLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaSkKPiA+PiAr CWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIG9iaiwgaSkKPiA+PiAgCQlzZXFfcHJpbnRmKG0sICIl eCAiLAo+ID4+ICAJCQkJaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2JqLT5sYXN0X3JlYWRf cmVxW2ldKSk7Cj4gPj4gIAlzZXFfcHJpbnRmKG0sICJdICV4ICV4JXMlcyVzIiwKPiA+PiAgCQkg ICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3Rfd3JpdGVfcmVxKSwKPiA+PiAg CQkgICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3RfZmVuY2VkX3JlcSksCj4g Pj4gLQkJICAgaTkxNV9jYWNoZV9sZXZlbF9zdHIodG9faTkxNShvYmotPmJhc2UuZGV2KSwgb2Jq LT5jYWNoZV9sZXZlbCksCj4gPj4gKwkJICAgaTkxNV9jYWNoZV9sZXZlbF9zdHIodG9faTkxNShv YmopLCBvYmotPmNhY2hlX2xldmVsKSwKPiA+PiAgCQkgICBvYmotPmRpcnR5ID8gIiBkaXJ0eSIg OiAiIiwKPiA+PiAgCQkgICBvYmotPm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEID8gIiBwdXJn ZWFibGUiIDogIiIpOwo+ID4+ICAJaWYgKG9iai0+YmFzZS5uYW1lKQo+ID4+IEBAIC0zMzksNyAr MzM4LDcgQEAgc3RhdGljIGludCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9p ZCAqZGF0YSkKPiA+PiAgCWlmIChvYmotPmJhc2UubmFtZSB8fCBvYmotPmJhc2UuZG1hX2J1ZikK PiA+PiAgCQlzdGF0cy0+c2hhcmVkICs9IG9iai0+YmFzZS5zaXplOwo+ID4+ICAKPiA+PiAtCWlm IChVU0VTX0ZVTExfUFBHVFQob2JqLT5iYXNlLmRldikpIHsKPiA+PiArCWlmIChVU0VTX0ZVTExf UFBHVFQob2JqKSkgewo+ID4+ICAJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFf bGlzdCwgb2JqX2xpbmspIHsKPiA+PiAgCQkJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0Owo+ ID4+ICAKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiBpbmRleCAwYzlmZTAwZDNlODMu LjkyMzY1ZjA0N2U1MyAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4+IEBA IC0yMTg2LDYgKzIxODYsMTIgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qgewo+ID4+ICB9 Owo+ID4+ICAjZGVmaW5lIHRvX2ludGVsX2JvKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCwgYmFzZSkKPiA+PiAgCj4gPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKgo+ID4+ICtfX29ial90b19pOTE1KGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gPj4gK3sKPiA+PiArCXJldHVybiBfX3RvX2k5MTUob2Jq LT5iYXNlLmRldik7Cj4gPj4gK30KPiA+PiArCj4gPj4gIHZvaWQgaTkxNV9nZW1fdHJhY2tfZmIo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZCwKPiA+PiAgCQkgICAgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm5ldywKPiA+PiAgCQkgICAgICAgdW5zaWduZWQgZnJvbnRidWZm ZXJfYml0cyk7Cj4gPj4gQEAgLTI0NTUsNiArMjQ2MSw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRf dGFibGUgewo+ID4+ICAJCV9fcCA9IChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKXA7IFwKPiA+ PiAgCWVsc2UgaWYgKF9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKCpwKSwgc3Ry dWN0IGRybV9kZXZpY2UpKSBcCj4gPj4gIAkJX19wID0gX190b19pOTE1KChzdHJ1Y3QgZHJtX2Rl dmljZSAqKXApOyBcCj4gPj4gKwllbHNlIGlmIChfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9w KHR5cGVvZigqcCksIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0KSkgXAo+ID4+ICsJCV9fcCA9 IF9fb2JqX3RvX2k5MTUoKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICopcCk7IFwKPiA+PiAg CWVsc2UgXAo+ID4+ICAJCUJVSUxEX0JVRygpOyBcCj4gPj4gIAlfX3A7IFwKPiA+PiBAQCAtMzEz Miw4ICszMTQwLDcgQEAgaTkxNV9nZW1fb2JqX3RvX2dndHQoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKPiA+PiAgYm9vbCBpOTE1X2dlbV9vYmpfaXNfcGlubmVkKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ID4+ICAKPiA+PiAgLyogU29tZSBHR1RUIFZNIGhlbHBl cnMgKi8KPiA+PiAtI2RlZmluZSBpOTE1X29ial90b19nZ3R0KG9iaikgXAo+ID4+IC0JKCYoKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICopKG9iaiktPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZSktPmdn dHQuYmFzZSkKPiA+PiArI2RlZmluZSBpOTE1X29ial90b19nZ3R0KG9iaikgKCZ0b19pOTE1KG9i aiktPmdndHQuYmFzZSkKPiA+PiAgCj4gPj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfaHdf cHBndHQgKgo+ID4+ICBpOTE1X3ZtX3RvX3BwZ3R0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtKQo+ID4+IEBAIC0zMjgyLDkgKzMyODksNyBAQCB2b2lkIGk5MTVfZ2VtX3Nocmlua2VyX2Ns ZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+PiAgLyogaTkxNV9n ZW1fdGlsaW5nLmMgKi8KPiA+PiAgc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX29iamVjdF9u ZWVkc19iaXQxN19zd2l6emxlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gPj4g IHsKPiA+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5k ZXYtPmRldl9wcml2YXRlOwo+ID4+IC0KPiA+PiAtCXJldHVybiBkZXZfcHJpdi0+bW0uYml0XzZf c3dpenpsZV94ID09IEk5MTVfQklUXzZfU1dJWlpMRV85XzEwXzE3ICYmCj4gPj4gKwlyZXR1cm4g dG9faTkxNShvYmopLT5tbS5iaXRfNl9zd2l6emxlX3ggPT0gSTkxNV9CSVRfNl9TV0laWkxFXzlf MTBfMTcgJiYKPiA+PiAgCQlvYmotPnRpbGluZ19tb2RlICE9IEk5MTVfVElMSU5HX05PTkU7Cj4g Pj4gIH0KPiA+PiAgCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gPj4gaW5kZXggODU4OGM4 M2FiYjM1Li43MTBhNmJiYzk4NWUgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiA+PiBAQCAtMzYxLDE0ICszNjEsMTIgQEAgb3V0Ogo+ID4+ICAKPiA+PiAgdm9pZCAqaTkxNV9n ZW1fb2JqZWN0X2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4gIHsKPiA+PiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4g LQlyZXR1cm4ga21lbV9jYWNoZV96YWxsb2MoZGV2X3ByaXYtPm9iamVjdHMsIEdGUF9LRVJORUwp Owo+ID4+ICsJcmV0dXJuIGttZW1fY2FjaGVfemFsbG9jKHRvX2k5MTUoZGV2KS0+b2JqZWN0cywg R0ZQX0tFUk5FTCk7Cj4gPj4gIH0KPiA+PiAgCj4gPj4gIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2Zy ZWUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiA+PiAgewo+ID4+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7 Cj4gPj4gLQlrbWVtX2NhY2hlX2ZyZWUoZGV2X3ByaXYtPm9iamVjdHMsIG9iaik7Cj4gPj4gKwlr bWVtX2NhY2hlX2ZyZWUodG9faTkxNShvYmopLT5vYmplY3RzLCBvYmopOwo+ID4+ICB9Cj4gPj4g IAo+ID4+ICBzdGF0aWMgaW50Cj4gPj4gQEAgLTIwMjgsNyArMjAyNiw3IEBAIGk5MTVfZ2VtX2dl dF9ndHRfYWxpZ25tZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQzMl90IHNpemUsCj4g Pj4gIAo+ID4+ICBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfbW1hcF9vZmZzZXQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiA+PiAgewo+ID4+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4g Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4g Pj4gIAlpbnQgcmV0Owo+ID4+ICAKPiA+PiAgCWlmIChkcm1fdm1hX25vZGVfaGFzX29mZnNldCgm b2JqLT5iYXNlLnZtYV9ub2RlKSkKPiA+PiBAQCAtMjI0MSw3ICsyMjM5LDcgQEAgaTkxNV9nZW1f b2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4+ICBz dGF0aWMgaW50Cj4gPj4gIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gPj4gIHsKPiA+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ID4+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+ID4+ICAJaW50IHBh Z2VfY291bnQsIGk7Cj4gPj4gIAlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKPiA+PiAg CXN0cnVjdCBzZ190YWJsZSAqc3Q7Cj4gPj4gQEAgLTIzNzIsNyArMjM3MCw3IEBAIGVycl9wYWdl czoKPiA+PiAgaW50Cj4gPj4gIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiA+PiAgewo+ID4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4gPj4gIAljb25zdCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgKm9wcyA9IG9iai0+b3BzOwo+ID4+ICAJaW50 IHJldDsKPiA+PiAgCj4gPj4gQEAgLTI0NDksOCArMjQ0Nyw3IEBAIGk5MTVfZ2VtX29iamVjdF9y ZXRpcmVfX3JlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IHJpbmcpCj4g Pj4gIAkgKiBzbyB0aGF0IHdlIGRvbid0IHN0ZWFsIGZyb20gcmVjZW50bHkgdXNlZCBidXQgaW5h Y3RpdmUgb2JqZWN0cwo+ID4+ICAJICogKHVubGVzcyB3ZSBhcmUgZm9yY2VkIHRvIG9mYyEpCj4g Pj4gIAkgKi8KPiA+PiAtCWxpc3RfbW92ZV90YWlsKCZvYmotPmdsb2JhbF9saXN0LAo+ID4+IC0J CSAgICAgICAmdG9faTkxNShvYmotPmJhc2UuZGV2KS0+bW0uYm91bmRfbGlzdCk7Cj4gPj4gKwls aXN0X21vdmVfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwgJnRvX2k5MTUob2JqKS0+bW0uYm91bmRf bGlzdCk7Cj4gPj4gIAo+ID4+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9s aXN0LCBvYmpfbGluaykgewo+ID4+ICAJCWlmICghbGlzdF9lbXB0eSgmdm1hLT52bV9saW5rKSkK PiA+PiBAQCAtMzE3Miw3ICszMTY5LDcgQEAgX19pOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4+ICAJCXJldHVybiAwOwo+ID4+ICAKPiA+PiAg CWlmICghaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChvYmotPmJhc2UuZGV2KSkgewo+ID4+IC0J CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsK PiA+PiArCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqKTsKPiA+ PiAgCQlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KGZyb21fcmVxLAo+ID4+ICAJCQkJCSAgYXRv bWljX3JlYWQoJmk5MTUtPmdwdV9lcnJvci5yZXNldF9jb3VudGVyKSwKPiA+PiAgCQkJCQkgIGk5 MTUtPm1tLmludGVycnVwdGlibGUsCj4gPj4gQEAgLTMzMTIsNyArMzMwOSw3IEBAIHN0YXRpYyB2 b2lkIGk5MTVfZ2VtX29iamVjdF9maW5pc2hfZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCj4gPj4gIHN0YXRpYyBpbnQgX19pOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1h ICp2bWEsIGJvb2wgd2FpdCkKPiA+PiAgewo+ID4+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiA9IHZtYS0+b2JqOwo+ID4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iaik7Cj4gPj4gIAlpbnQgcmV0Owo+ID4+ICAK PiA+PiAgCWlmIChsaXN0X2VtcHR5KCZ2bWEtPm9ial9saW5rKSkKPiA+PiBAQCAtMzc3Miw3ICsz NzY5LDcgQEAgaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgd3JpdGUpCj4gPj4gIAl2bWEgPSBpOTE1X2dlbV9vYmpf dG9fZ2d0dChvYmopOwo+ID4+ICAJaWYgKHZtYSAmJiBkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZt YS0+bm9kZSkgJiYgIW9iai0+YWN0aXZlKQo+ID4+ICAJCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZt X2xpbmssCj4gPj4gLQkJCSAgICAgICAmdG9faTkxNShvYmotPmJhc2UuZGV2KS0+Z2d0dC5iYXNl LmluYWN0aXZlX2xpc3QpOwo+ID4+ICsJCQkgICAgICAgJnRvX2k5MTUob2JqKS0+Z2d0dC5iYXNl LmluYWN0aXZlX2xpc3QpOwo+ID4+ICAKPiA+PiAgCXJldHVybiAwOwo+ID4+ICB9Cj4gPj4gQEAg LTQwMTAsNyArNDAwNyw3IEBAIGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9wbGFuZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4+ICAJICogd2l0aCB0aGF0IGJpdCBp biB0aGUgUFRFIHRvIG1haW4gbWVtb3J5IHdpdGgganVzdCBvbmUgUElQRV9DT05UUk9MLgo+ID4+ ICAJICovCj4gPj4gIAlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwK PiA+PiAtCQkJCQkgICAgICBIQVNfV1Qob2JqLT5iYXNlLmRldikgPyBJOTE1X0NBQ0hFX1dUIDog STkxNV9DQUNIRV9OT05FKTsKPiA+PiArCQkJCQkgICAgICBIQVNfV1Qob2JqKSA/IEk5MTVfQ0FD SEVfV1QgOiBJOTE1X0NBQ0hFX05PTkUpOwo+ID4+ICAJaWYgKHJldCkKPiA+PiAgCQlnb3RvIGVy cl91bnBpbl9kaXNwbGF5Owo+ID4+ICAKPiA+PiBAQCAtNDIwOSw3ICs0MjA2LDcgQEAgdm9pZCBf X2k5MTVfdm1hX3NldF9tYXBfYW5kX2ZlbmNlYWJsZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiA+ PiAgCQkgICAgICh2bWEtPm5vZGUuc3RhcnQgJiAoZmVuY2VfYWxpZ25tZW50IC0gMSkpID09IDAp Owo+ID4+ICAKPiA+PiAgCW1hcHBhYmxlID0gKHZtYS0+bm9kZS5zdGFydCArIGZlbmNlX3NpemUg PD0KPiA+PiAtCQkgICAgdG9faTkxNShvYmotPmJhc2UuZGV2KS0+Z2d0dC5tYXBwYWJsZV9lbmQp Owo+ID4+ICsJCSAgICB0b19pOTE1KG9iaiktPmdndHQubWFwcGFibGVfZW5kKTsKPiA+PiAgCj4g Pj4gIAlvYmotPm1hcF9hbmRfZmVuY2VhYmxlID0gbWFwcGFibGUgJiYgZmVuY2VhYmxlOwo+ID4+ ICB9Cj4gPj4gQEAgLTQyMjEsNyArNDIxOCw3IEBAIGk5MTVfZ2VtX29iamVjdF9kb19waW4oc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+PiAgCQkgICAgICAgdWludDMyX3QgYWxp Z25tZW50LAo+ID4+ICAJCSAgICAgICB1aW50NjRfdCBmbGFncykKPiA+PiAgewo+ID4+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZh dGU7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9i aik7Cj4gPj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiA+PiAgCXVuc2lnbmVkIGJvdW5kOwo+ ID4+ICAJaW50IHJldDsKPiA+PiBAQCAtNDQ1Niw3ICs0NDUzLDcgQEAgdm9pZCBpOTE1X2dlbV9v YmplY3RfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4+ICAJb2JqLT5m ZW5jZV9yZWcgPSBJOTE1X0ZFTkNFX1JFR19OT05FOwo+ID4+ICAJb2JqLT5tYWR2ID0gSTkxNV9N QURWX1dJTExORUVEOwo+ID4+ICAKPiA+PiAtCWk5MTVfZ2VtX2luZm9fYWRkX29iaihvYmotPmJh c2UuZGV2LT5kZXZfcHJpdmF0ZSwgb2JqLT5iYXNlLnNpemUpOwo+ID4+ICsJaTkxNV9nZW1faW5m b19hZGRfb2JqKHRvX2k5MTUob2JqKSwgb2JqLT5iYXNlLnNpemUpOwo+ID4+ICB9Cj4gPj4gIAo+ ID4+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzIGk5MTVfZ2Vt X29iamVjdF9vcHMgPSB7Cj4gPj4gQEAgLTQ1NDUsOCArNDU0Miw3IEBAIHN0YXRpYyBib29sIGRp c2NhcmRfYmFja2luZ19zdG9yYWdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4g Pj4gIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1f b2JqKQo+ID4+ICB7Cj4gPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdG9f aW50ZWxfYm8oZ2VtX29iaik7Cj4gPj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5i YXNlLmRldjsKPiA+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KG9iaik7Cj4gPj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKm5leHQ7Cj4gPj4gIAo+ ID4+ICAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ID4+IEBAIC00NjQ3LDcgKzQ2 NDMsNyBAQCB2b2lkIGk5MTVfZ2VtX3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ ID4+ICAKPiA+PiAgCWxpc3RfZGVsKCZ2bWEtPm9ial9saW5rKTsKPiA+PiAgCj4gPj4gLQlrbWVt X2NhY2hlX2ZyZWUodG9faTkxNSh2bWEtPm9iai0+YmFzZS5kZXYpLT52bWFzLCB2bWEpOwo+ID4+ ICsJa21lbV9jYWNoZV9mcmVlKHRvX2k5MTUodm1hLT5vYmopLT52bWFzLCB2bWEpOwo+ID4+ICB9 Cj4gPj4gIAo+ID4+ICBzdGF0aWMgdm9pZAo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9leGVjYnVmZmVyLmMKPiA+PiBpbmRleCAzNzRhMGNiN2EwOTIuLjM5ZWQ0MDNiOWRlMyAx MDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVy LmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMK PiA+PiBAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyB2b2lkIGViX2Rlc3Ryb3koc3RydWN0IGVi X3ZtYXMgKmViKQo+ID4+ICAKPiA+PiAgc3RhdGljIGlubGluZSBpbnQgdXNlX2NwdV9yZWxvYyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4+ICB7Cj4gPj4gLQlyZXR1cm4gKEhB U19MTEMob2JqLT5iYXNlLmRldikgfHwKPiA+PiArCXJldHVybiAoSEFTX0xMQyhvYmopIHx8Cj4g Pj4gIAkJb2JqLT5iYXNlLndyaXRlX2RvbWFpbiA9PSBJOTE1X0dFTV9ET01BSU5fQ1BVIHx8Cj4g Pj4gIAkJb2JqLT5jYWNoZV9sZXZlbCAhPSBJOTE1X0NBQ0hFX05PTkUpOwo+ID4+ICB9Cj4gPj4g QEAgLTMxMiw4ICszMTIsNyBAQCByZWxvY2F0ZV9lbnRyeV9ndHQoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiA+PiAgCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25f ZW50cnkgKnJlbG9jLAo+ID4+ICAJCSAgIHVpbnQ2NF90IHRhcmdldF9vZmZzZXQpCj4gPj4gIHsK PiA+PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+ID4+IC0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+PiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqKTsKPiA+PiAg CXVpbnQ2NF90IGRlbHRhID0gcmVsb2NhdGlvbl90YXJnZXQocmVsb2MsIHRhcmdldF9vZmZzZXQp Owo+ID4+ICAJdWludDY0X3Qgb2Zmc2V0Owo+ID4+ICAJdm9pZCBfX2lvbWVtICpyZWxvY19wYWdl Owo+ID4+IEBAIC0zMzQsNyArMzMzLDcgQEAgcmVsb2NhdGVfZW50cnlfZ3R0KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gPj4gIAkJCQkJICAgICAgb2Zmc2V0ICYgUEFHRV9NQVNL KTsKPiA+PiAgCWlvd3JpdGUzMihsb3dlcl8zMl9iaXRzKGRlbHRhKSwgcmVsb2NfcGFnZSArIG9m ZnNldF9pbl9wYWdlKG9mZnNldCkpOwo+ID4+ICAKPiA+PiAtCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA4KSB7Cj4gPj4gKwlpZiAoSU5URUxfSU5GTyhvYmopLT5nZW4gPj0gOCkgewo+ID4+ ICAJCW9mZnNldCArPSBzaXplb2YodWludDMyX3QpOwo+ID4+ICAKPiA+PiAgCQlpZiAob2Zmc2V0 X2luX3BhZ2Uob2Zmc2V0KSA9PSAwKSB7Cj4gPj4gQEAgLTM2Nyw3ICszNjYsNiBAQCByZWxvY2F0 ZV9lbnRyeV9jbGZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gPj4gIAkJ ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCj4gPj4g IAkJICAgICAgIHVpbnQ2NF90IHRhcmdldF9vZmZzZXQpCj4gPj4gIHsKPiA+PiAtCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+ID4+ICAJdWludDMyX3QgcGFnZV9vZmZz ZXQgPSBvZmZzZXRfaW5fcGFnZShyZWxvYy0+b2Zmc2V0KTsKPiA+PiAgCXVpbnQ2NF90IGRlbHRh ID0gcmVsb2NhdGlvbl90YXJnZXQocmVsb2MsIHRhcmdldF9vZmZzZXQpOwo+ID4+ICAJY2hhciAq dmFkZHI7Cj4gPj4gQEAgLTM4MSw3ICszNzksNyBAQCByZWxvY2F0ZV9lbnRyeV9jbGZsdXNoKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gPj4gIAkJCQlyZWxvYy0+b2Zmc2V0ID4+ IFBBR0VfU0hJRlQpKTsKPiA+PiAgCWNsZmx1c2hfd3JpdGUzMih2YWRkciArIHBhZ2Vfb2Zmc2V0 LCBsb3dlcl8zMl9iaXRzKGRlbHRhKSk7Cj4gPj4gIAo+ID4+IC0JaWYgKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDgpIHsKPiA+PiArCWlmIChJTlRFTF9JTkZPKG9iaiktPmdlbiA+PSA4KSB7Cj4g Pj4gIAkJcGFnZV9vZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShwYWdlX29mZnNldCArIHNpemVvZih1 aW50MzJfdCkpOwo+ID4+ICAKPiA+PiAgCQlpZiAocGFnZV9vZmZzZXQgPT0gMCkgewo+ID4+IEBA IC00MDMsNyArNDAxLDYgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9yZWxvY2F0ZV9lbnRyeShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4+ICAJCQkJICAgc3RydWN0IGViX3ZtYXMg KmViLAo+ID4+ICAJCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpy ZWxvYykKPiA+PiAgewo+ID4+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5k ZXY7Cj4gPj4gIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKnRhcmdldF9vYmo7Cj4gPj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqdGFyZ2V0X2k5MTVfb2JqOwo+ID4+ICAJc3RydWN0IGk5 MTVfdm1hICp0YXJnZXRfdm1hOwo+ID4+IEBAIC00MjIsNyArNDE5LDcgQEAgaTkxNV9nZW1fZXhl Y2J1ZmZlcl9yZWxvY2F0ZV9lbnRyeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ ID4+ICAJLyogU2FuZHlicmlkZ2UgUFBHVFQgZXJyYXRhOiBXZSBuZWVkIGEgZ2xvYmFsIGd0dCBt YXBwaW5nIGZvciBNSSBhbmQKPiA+PiAgCSAqIHBpcGVfY29udHJvbCB3cml0ZXMgYmVjYXVzZSB0 aGUgZ3B1IGRvZXNuJ3QgcHJvcGVybHkgcmVkaXJlY3QgdGhlbQo+ID4+ICAJICogdGhyb3VnaCB0 aGUgcHBndHQgZm9yIG5vbl9zZWN1cmUgYmF0Y2hidWZmZXJzLiAqLwo+ID4+IC0JaWYgKHVubGlr ZWx5KElTX0dFTjYoZGV2KSAmJgo+ID4+ICsJaWYgKHVubGlrZWx5KElTX0dFTjYob2JqKSAmJgo+ ID4+ICAJICAgIHJlbG9jLT53cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNU SU9OKSkgewo+ID4+ICAJCXJldCA9IGk5MTVfdm1hX2JpbmQodGFyZ2V0X3ZtYSwgdGFyZ2V0X2k5 MTVfb2JqLT5jYWNoZV9sZXZlbCwKPiA+PiAgCQkJCSAgICBQSU5fR0xPQkFMKTsKPiA+PiBAQCAt NDY0LDcgKzQ2MSw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcmVsb2NhdGVfZW50cnkoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+PiAgCj4gPj4gIAkvKiBDaGVjayB0aGF0IHRo ZSByZWxvY2F0aW9uIGFkZHJlc3MgaXMgdmFsaWQuLi4gKi8KPiA+PiAgCWlmICh1bmxpa2VseShy ZWxvYy0+b2Zmc2V0ID4KPiA+PiAtCQlvYmotPmJhc2Uuc2l6ZSAtIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA4ID8gOCA6IDQpKSkgewo+ID4+ICsJCW9iai0+YmFzZS5zaXplIC0gKElOVEVMX0lO Rk8ob2JqKS0+Z2VuID49IDggPyA4IDogNCkpKSB7Cj4gPj4gIAkJRFJNX0RFQlVHKCJSZWxvY2F0 aW9uIGJleW9uZCBvYmplY3QgYm91bmRzOiAiCj4gPj4gIAkJCSAgIm9iaiAlcCB0YXJnZXQgJWQg b2Zmc2V0ICVkIHNpemUgJWQuXG4iLAo+ID4+ICAJCQkgIG9iaiwgcmVsb2MtPnRhcmdldF9oYW5k bGUsCj4gPj4gQEAgLTY3Miw3ICs2NjksNyBAQCBuZWVkX3JlbG9jX21hcHBhYmxlKHN0cnVjdCBp OTE1X3ZtYSAqdm1hKQo+ID4+ICAJCXJldHVybiBmYWxzZTsKPiA+PiAgCj4gPj4gIAkvKiBTZWUg YWxzbyB1c2VfY3B1X3JlbG9jKCkgKi8KPiA+PiAtCWlmIChIQVNfTExDKHZtYS0+b2JqLT5iYXNl LmRldikpCj4gPj4gKwlpZiAoSEFTX0xMQyh2bWEtPm9iaikpCj4gPj4gIAkJcmV0dXJuIGZhbHNl Owo+ID4+ICAKPiA+PiAgCWlmICh2bWEtPm9iai0+YmFzZS53cml0ZV9kb21haW4gPT0gSTkxNV9H RU1fRE9NQUlOX0NQVSkKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKPiA+ PiBpbmRleCA1OTgxOTg1NDNkY2QuLjFlZjc1YmMyMjIwYyAxMDA2NDQKPiA+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYwo+ID4+IEBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGlj IHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VwZGF0ZV9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ID4+ICAJCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZSwK PiA+PiAgCQkJCQkgYm9vbCBlbmFibGUpCj4gPj4gIHsKPiA+PiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ID4+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+ID4+ICAJaW50 IHJlZyA9IGZlbmNlX251bWJlcihkZXZfcHJpdiwgZmVuY2UpOwo+ID4+ICAKPiA+PiAgCWk5MTVf Z2VtX3dyaXRlX2ZlbmNlKG9iai0+YmFzZS5kZXYsIHJlZywgZW5hYmxlID8gb2JqIDogTlVMTCk7 Cj4gPj4gQEAgLTI4Niw3ICsyODYsNyBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9mZW5jZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4+ICBpbnQKPiA+PiAgaTkxNV9nZW1fb2Jq ZWN0X3B1dF9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4+ICB7Cj4g Pj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvYmotPmJhc2UuZGV2LT5k ZXZfcHJpdmF0ZTsKPiA+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUob2JqKTsKPiA+PiAgCXN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlOwo+ID4+ ICAJaW50IHJldDsKPiA+PiAgCj4gPj4gQEAgLTQzMyw3ICs0MzMsNyBAQCBib29sCj4gPj4gIGk5 MTVfZ2VtX29iamVjdF9waW5fZmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK PiA+PiAgewo+ID4+ICAJaWYgKG9iai0+ZmVuY2VfcmVnICE9IEk5MTVfRkVOQ0VfUkVHX05PTkUp IHsKPiA+PiAtCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvYmotPmJhc2Uu ZGV2LT5kZXZfcHJpdmF0ZTsKPiA+PiArCQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KG9iaik7Cj4gPj4gIAkJc3RydWN0IGk5MTVfdm1hICpnZ3R0X3ZtYSA9IGk5 MTVfZ2VtX29ial90b19nZ3R0KG9iaik7Cj4gPj4gIAo+ID4+ICAJCVdBUk5fT04oIWdndHRfdm1h IHx8Cj4gPj4gQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkCj4gPj4gIGk5MTVfZ2VtX29iamVjdF91 bnBpbl9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4+ICB7Cj4gPj4g IAlpZiAob2JqLT5mZW5jZV9yZWcgIT0gSTkxNV9GRU5DRV9SRUdfTk9ORSkgewo+ID4+IC0JCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2 YXRlOwo+ID4+ICsJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo b2JqKTsKPiA+PiAgCQlXQVJOX09OKGRldl9wcml2LT5mZW5jZV9yZWdzW29iai0+ZmVuY2VfcmVn XS5waW5fY291bnQgPD0gMCk7Cj4gPj4gIAkJZGV2X3ByaXYtPmZlbmNlX3JlZ3Nbb2JqLT5mZW5j ZV9yZWddLnBpbl9jb3VudC0tOwo+ID4+ICAJfQo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jCj4gPj4gaW5kZXggMDcxNWJiNzRkMzA2Li42NDQ3YTVmOTY2MWUgMTAwNjQ0Cj4gPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiA+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ID4+IEBAIC0zMzA1LDcgKzMzMDUsNyBA QCBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiA+PiAgCWlmIChXQVJOX09OKGk5MTVfaXNfZ2d0dCh2bSkgIT0gISFnZ3R0X3ZpZXcpKQo+ID4+ ICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ID4+ICAKPiA+PiAtCXZtYSA9IGttZW1fY2Fj aGVfemFsbG9jKHRvX2k5MTUob2JqLT5iYXNlLmRldiktPnZtYXMsIEdGUF9LRVJORUwpOwo+ID4+ ICsJdm1hID0ga21lbV9jYWNoZV96YWxsb2ModG9faTkxNShvYmopLT52bWFzLCBHRlBfS0VSTkVM KTsKPiA+PiAgCWlmICh2bWEgPT0gTlVMTCkKPiA+PiAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKPiA+PiAgCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiA+PiBp bmRleCBkZTg5MWM5MjhiMmYuLjIyNDM4OWQwNzdjNyAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gPj4gQEAgLTU0MCwxMCArNTQwLDggQEAgc3RhdGlj IHZvaWQgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlc19zdG9sZW4oc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKPiA+PiAgc3RhdGljIHZvaWQKPiA+PiAgaTkxNV9nZW1fb2JqZWN0X3Jl bGVhc2Vfc3RvbGVuKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gPj4gIHsKPiA+ PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRl dl9wcml2YXRlOwo+ID4+IC0KPiA+PiAgCWlmIChvYmotPnN0b2xlbikgewo+ID4+IC0JCWk5MTVf Z2VtX3N0b2xlbl9yZW1vdmVfbm9kZShkZXZfcHJpdiwgb2JqLT5zdG9sZW4pOwo+ID4+ICsJCWk5 MTVfZ2VtX3N0b2xlbl9yZW1vdmVfbm9kZSh0b19pOTE1KG9iaiksIG9iai0+c3RvbGVuKTsKPiA+ PiAgCQlrZnJlZShvYmotPnN0b2xlbik7Cj4gPj4gIAkJb2JqLT5zdG9sZW4gPSBOVUxMOwo+ID4+ ICAJfQo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxp bmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4gPj4gaW5kZXgg NzQxMGY2Yzk2MmU3Li5iYzRjYjdmNGZlODAgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV90aWxpbmcuYwo+ID4+IEBAIC0xMjIsMTAgKzEyMiwxMCBAQCBpOTE1X2dlbV9v YmplY3RfZmVuY2Vfb2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IHRpbGlu Z19tb2RlKQo+ID4+ICAJaWYgKHRpbGluZ19tb2RlID09IEk5MTVfVElMSU5HX05PTkUpCj4gPj4g IAkJcmV0dXJuIHRydWU7Cj4gPj4gIAo+ID4+IC0JaWYgKElOVEVMX0lORk8ob2JqLT5iYXNlLmRl diktPmdlbiA+PSA0KQo+ID4+ICsJaWYgKElOVEVMX0lORk8ob2JqKS0+Z2VuID49IDQpCj4gPj4g IAkJcmV0dXJuIHRydWU7Cj4gPj4gIAo+ID4+IC0JaWYgKElOVEVMX0lORk8ob2JqLT5iYXNlLmRl diktPmdlbiA9PSAzKSB7Cj4gPj4gKwlpZiAoSU5URUxfSU5GTyhvYmopLT5nZW4gPT0gMykgewo+ ID4+ICAJCWlmIChpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSAmIH5JOTE1X0ZFTkNFX1NU QVJUX01BU0spCj4gPj4gIAkJCXJldHVybiBmYWxzZTsKPiA+PiAgCX0gZWxzZSB7Cj4gPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwo+ID4+IGluZGV4IDU0MDg4YTRkNjQ5 OC4uZjBlM2FkZTU5MTc3IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3VzZXJwdHIuYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3VzZXJwdHIuYwo+ID4+IEBAIC0zMDMsNyArMzAzLDcgQEAgX19pOTE1X21tX3N0cnVjdF9maW5k KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IG1tX3N0cnVjdCAqcmVh bCkKPiA+PiAgc3RhdGljIGludAo+ID4+ICBpOTE1X2dlbV91c2VycHRyX2luaXRfX21tX3N0cnVj dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ID4+ICB7Cj4gPj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+ID4+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShvYmopOwo+ID4+ ICAJc3RydWN0IGk5MTVfbW1fc3RydWN0ICptbTsKPiA+PiAgCWludCByZXQgPSAwOwo+ID4+ICAK PiA+PiBAQCAtMzc2LDcgKzM3Niw3IEBAIGk5MTVfZ2VtX3VzZXJwdHJfcmVsZWFzZV9fbW1fc3Ry dWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gPj4gIAo+ID4+ICAJa3JlZl9w dXRfbXV0ZXgoJm9iai0+dXNlcnB0ci5tbS0+a3JlZiwKPiA+PiAgCQkgICAgICAgX19pOTE1X21t X3N0cnVjdF9mcmVlLAo+ID4+IC0JCSAgICAgICAmdG9faTkxNShvYmotPmJhc2UuZGV2KS0+bW1f bG9jayk7Cj4gPj4gKwkJICAgICAgICZ0b19pOTE1KG9iaiktPm1tX2xvY2spOwo+ID4+ICAJb2Jq LT51c2VycHRyLm1tID0gTlVMTDsKPiA+PiAgfQo+ID4+ICAKPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gPj4gaW5kZXggZGYwZWY1YmJhOGU1Li5mOTgxYmRkYzli YmYgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4g Pj4gQEAgLTIwNjksNyArMjA2OSw3IEBAIHN0YXRpYyBpbnQgaW5pdF9waHlzX3N0YXR1c19wYWdl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiA+PiAgCj4gPj4gIHZvaWQgaW50ZWxf dW5waW5fcmluZ2J1ZmZlcl9vYmooc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4g Pj4gIHsKPiA+PiAtCWlmIChIQVNfTExDKHJpbmdidWYtPm9iai0+YmFzZS5kZXYpICYmICFyaW5n YnVmLT5vYmotPnN0b2xlbikKPiA+PiArCWlmIChIQVNfTExDKHJpbmdidWYtPm9iaikgJiYgIXJp bmdidWYtPm9iai0+c3RvbGVuKQo+ID4+ICAJCXZ1bm1hcChyaW5nYnVmLT52aXJ0dWFsX3N0YXJ0 KTsKPiA+PiAgCWVsc2UKPiA+PiAgCQlpb3VubWFwKHJpbmdidWYtPnZpcnR1YWxfc3RhcnQpOwo+ ID4+IC0tIAo+ID4+IDIuOC4wLnJjMwo+ID4+IAo+ID4+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4gPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4+ IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+PiBodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+IC0tIAo+IEphbmkgTmlr dWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgoKLS0gCkRhbmllbCBWZXR0 ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xs LmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=