From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 49/64] drm/i915: Introduce i915_gem_active for request tracking Date: Tue, 12 Jul 2016 17:05:44 +0100 Message-ID: <57851558.5000101@linux.intel.com> References: <1467880930-23082-1-git-send-email-chris@chris-wilson.co.uk> <1467880930-23082-49-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 777FF6E207 for ; Tue, 12 Jul 2016 16:06:38 +0000 (UTC) In-Reply-To: <1467880930-23082-49-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA3LzA3LzE2IDA5OjQxLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gSW4gdGhlIG5leHQgcGF0 Y2gsIHJlcXVlc3QgdHJhY2tpbmcgaXMgbWFkZSBtb3JlIGdlbmVyaWMgYW5kIGZvciB0aGF0IHdl Cj4gbmVlZCBhIG5ldyBleHBhbmRlZCBzdHJ1Y3QgYW5kIHRvIHNlcGFyYXRlIG91dCB0aGUgbG9n aWMgY2hhbmdlcyBmcm9tCj4gdGhlIG1lY2hhbmljYWwgY2h1cm4sIHdlIHNwbGl0IG91dCB0aGUg c3RydWN0dXJlIHJlbmFtaW5nIGludG8gdGhpcwo+IHBhdGNoLgo+Cj4gdjI6IFdyaXRlcidzIGJs b2NrLiBBZGQgc29tZSBzcGllbCBhYm91dCB3aHkgd2UgdHJhY2sgcmVxdWVzdHMuCj4gdjM6IE5v dyBpOTE1X2dlbV9hY3RpdmUuCj4gdjQ6IE5vdyB3aXRoIGk5MTVfZ2VtX2FjdGl2ZV9zZXQoKSBm b3IgYXR0YWNoaW5nIHRvIHRoZSBhY3RpdmUgcmVxdWVzdC4KPgo+IFNpZ25lZC1vZmYtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgMTEgKysrLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgOSArKystLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgNTggKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYu YyAgICAgfCAgOCArKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jIHwgIDQgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5j ICAgICAgfCAgNiArKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0 LmggICAgfCA0MSArKysrKysrKysrKysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3RpbGluZy5jICAgICB8ICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV91c2VycHRyLmMgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYyAgICAgIHwgIDcgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jICAgICAgIHwgIDggKystLS0KPiAgIDExIGZpbGVzIGNoYW5nZWQsIDk4IGlu c2VydGlvbnMoKyksIDU4IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPiBpbmRleCBkMzg1MjgyODg3OGYuLmRkODMyZWFjZTQ4NyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTE1NSwxMCArMTU1LDEwIEBAIGRlc2NyaWJlX29i aihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4g ICAJCSAgIG9iai0+YmFzZS53cml0ZV9kb21haW4pOwo+ICAgCWZvcl9lYWNoX2VuZ2luZV9pZChl bmdpbmUsIGRldl9wcml2LCBpZCkKPiAgIAkJc2VxX3ByaW50ZihtLCAiJXggIiwKPiAtCQkJCWk5 MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9yZWFkX3JlcVtpZF0pKTsKPiArCQkJ ICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2JqLT5sYXN0X3JlYWRbaWRdLnJlcXVlc3Qp KTsKPiAgIAlzZXFfcHJpbnRmKG0sICJdICV4ICV4JXMlcyVzIiwKPiAtCQkgICBpOTE1X2dlbV9y ZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3Rfd3JpdGVfcmVxKSwKPiAtCQkgICBpOTE1X2dlbV9y ZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3RfZmVuY2VkX3JlcSksCj4gKwkJICAgaTkxNV9nZW1f cmVxdWVzdF9nZXRfc2Vxbm8ob2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QpLAo+ICsJCSAgIGk5MTVf Z2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9mZW5jZS5yZXF1ZXN0KSwKPiAgIAkJICAg aTkxNV9jYWNoZV9sZXZlbF9zdHIodG9faTkxNShvYmotPmJhc2UuZGV2KSwgb2JqLT5jYWNoZV9s ZXZlbCksCj4gICAJCSAgIG9iai0+ZGlydHkgPyAiIGRpcnR5IiA6ICIiLAo+ICAgCQkgICBvYmot Pm1hZHYgPT0gSTkxNV9NQURWX0RPTlRORUVEID8gIiBwdXJnZWFibGUiIDogIiIpOwo+IEBAIC0x OTUsOSArMTk1LDggQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAkJKnQgPSAnXDAnOwo+ICAgCQlzZXFfcHJpbnRm KG0sICIgKCVzIG1hcHBhYmxlKSIsIHMpOwo+ICAgCX0KPiAtCWlmIChvYmotPmxhc3Rfd3JpdGVf cmVxICE9IE5VTEwpCj4gLQkJc2VxX3ByaW50ZihtLCAiICglcykiLAo+IC0JCQkgICBpOTE1X2dl bV9yZXF1ZXN0X2dldF9lbmdpbmUob2JqLT5sYXN0X3dyaXRlX3JlcSktPm5hbWUpOwo+ICsJaWYg KG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0KQo+ICsJCXNlcV9wcmludGYobSwgIiAoJXMpIiwgb2Jq LT5sYXN0X3dyaXRlLnJlcXVlc3QtPmVuZ2luZS0+bmFtZSk7Cj4gICAJaWYgKG9iai0+ZnJvbnRi dWZmZXJfYml0cykKPiAgIAkJc2VxX3ByaW50ZihtLCAiIChmcm9udGJ1ZmZlcjogMHglMDN4KSIs IG9iai0+ZnJvbnRidWZmZXJfYml0cyk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g aW5kZXggMjdlMTE4MjU0NGEyLi41YjA5NmM2NTY0NmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiBAQCAtMjIzOCwxMSArMjIzOCwxMCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCB7Cj4gICAJICogcmVxdWVzdHMgb24gb25lIHJpbmcgd2hlcmUgdGhlIHdyaXRlIHJlcXVlc3Qg aXMgb2xkZXIgdGhhbiB0aGUKPiAgIAkgKiByZWFkIHJlcXVlc3QuIFRoaXMgYWxsb3dzIGZvciB0 aGUgQ1BVIHRvIHJlYWQgZnJvbSBhbiBhY3RpdmUKPiAgIAkgKiBidWZmZXIgYnkgb25seSB3YWl0 aW5nIGZvciB0aGUgd3JpdGUgdG8gY29tcGxldGUuCj4gLQkgKiAqLwo+IC0Jc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpsYXN0X3JlYWRfcmVxW0k5MTVfTlVNX0VOR0lORVNdOwo+IC0Jc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpsYXN0X3dyaXRlX3JlcTsKPiAtCS8qKiBCcmVhZGNy dW1iIG9mIGxhc3QgZmVuY2VkIEdQVSBhY2Nlc3MgdG8gdGhlIGJ1ZmZlci4gKi8KPiAtCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqbGFzdF9mZW5jZWRfcmVxOwo+ICsJICovCj4gKwlzdHJ1 Y3QgaTkxNV9nZW1fYWN0aXZlIGxhc3RfcmVhZFtJOTE1X05VTV9FTkdJTkVTXTsKPiArCXN0cnVj dCBpOTE1X2dlbV9hY3RpdmUgbGFzdF93cml0ZTsKPiArCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUg bGFzdF9mZW5jZTsKPgo+ICAgCS8qKiBDdXJyZW50IHRpbGluZyBzdHJpZGUgZm9yIHRoZSBvYmpl Y3QsIGlmIGl0J3MgdGlsZWQuICovCj4gICAJdWludDMyX3Qgc3RyaWRlOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+IGluZGV4IGI2NDk3ZTk5NjFhYi4uNWYzMDJmYWY4NmU3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTEzNTMsMjMgKzEzNTMsMjMgQEAgaTkxNV9nZW1fb2Jq ZWN0X3dhaXRfcmVuZGVyaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJ aW50IHJldCwgaTsKPgo+ICAgCWlmIChyZWFkb25seSkgewo+IC0JCWlmIChvYmotPmxhc3Rfd3Jp dGVfcmVxICE9IE5VTEwpIHsKPiAtCQkJcmV0ID0gaTkxNV93YWl0X3JlcXVlc3Qob2JqLT5sYXN0 X3dyaXRlX3JlcSk7Cj4gKwkJaWYgKG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0KSB7Cj4gKwkJCXJl dCA9IGk5MTVfd2FpdF9yZXF1ZXN0KG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0KTsKPiAgIAkJCWlm IChyZXQpCj4gICAJCQkJcmV0dXJuIHJldDsKPgo+IC0JCQlpID0gb2JqLT5sYXN0X3dyaXRlX3Jl cS0+ZW5naW5lLT5pZDsKPiAtCQkJaWYgKG9iai0+bGFzdF9yZWFkX3JlcVtpXSA9PSBvYmotPmxh c3Rfd3JpdGVfcmVxKQo+ICsJCQlpID0gb2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QtPmVuZ2luZS0+ aWQ7Cj4gKwkJCWlmIChvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0ID09IG9iai0+bGFzdF93cml0 ZS5yZXF1ZXN0KQo+ICAgCQkJCWk5MTVfZ2VtX29iamVjdF9yZXRpcmVfX3JlYWQob2JqLCBpKTsK PiAgIAkJCWVsc2UKPiAgIAkJCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlX193cml0ZShvYmopOwo+ ICAgCQl9Cj4gICAJfSBlbHNlIHsKPiAgIAkJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lO RVM7IGkrKykgewo+IC0JCQlpZiAob2JqLT5sYXN0X3JlYWRfcmVxW2ldID09IE5VTEwpCj4gKwkJ CWlmICghb2JqLT5sYXN0X3JlYWRbaV0ucmVxdWVzdCkKPiAgIAkJCQljb250aW51ZTsKPgo+IC0J CQlyZXQgPSBpOTE1X3dhaXRfcmVxdWVzdChvYmotPmxhc3RfcmVhZF9yZXFbaV0pOwo+ICsJCQly ZXQgPSBpOTE1X3dhaXRfcmVxdWVzdChvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0KTsKPiAgIAkJ CWlmIChyZXQpCj4gICAJCQkJcmV0dXJuIHJldDsKPgo+IEBAIC0xMzk3LDkgKzEzOTcsOSBAQCBp OTE1X2dlbV9vYmplY3RfcmV0aXJlX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPiAgIHsKPiAgIAlpbnQgcmluZyA9IHJlcS0+ZW5naW5lLT5pZDsKPgo+IC0JaWYgKG9i ai0+bGFzdF9yZWFkX3JlcVtyaW5nXSA9PSByZXEpCj4gKwlpZiAob2JqLT5sYXN0X3JlYWRbcmlu Z10ucmVxdWVzdCA9PSByZXEpCj4gICAJCWk5MTVfZ2VtX29iamVjdF9yZXRpcmVfX3JlYWQob2Jq LCByaW5nKTsKPiAtCWVsc2UgaWYgKG9iai0+bGFzdF93cml0ZV9yZXEgPT0gcmVxKQo+ICsJZWxz ZSBpZiAob2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QgPT0gcmVxKQo+ICAgCQlpOTE1X2dlbV9vYmpl Y3RfcmV0aXJlX193cml0ZShvYmopOwo+Cj4gICAJaWYgKCFpOTE1X3Jlc2V0X2luX3Byb2dyZXNz KCZyZXEtPmk5MTUtPmdwdV9lcnJvcikpCj4gQEAgLTE0MjgsNyArMTQyOCw3IEBAIGk5MTVfZ2Vt X29iamVjdF93YWl0X3JlbmRlcmluZ19fbm9uYmxvY2tpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAgIAlpZiAocmVhZG9ubHkpIHsKPiAgIAkJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXE7Cj4KPiAtCQlyZXEgPSBvYmotPmxhc3Rfd3JpdGVfcmVxOwo+ICsJCXJl cSA9IG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0Owo+ICAgCQlpZiAocmVxID09IE5VTEwpCj4gICAJ CQlyZXR1cm4gMDsKPgo+IEBAIC0xNDM3LDcgKzE0MzcsNyBAQCBpOTE1X2dlbV9vYmplY3Rfd2Fp dF9yZW5kZXJpbmdfX25vbmJsb2NraW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gICAJCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspIHsKPiAgIAkJCXN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+Cj4gLQkJCXJlcSA9IG9iai0+bGFzdF9y ZWFkX3JlcVtpXTsKPiArCQkJcmVxID0gb2JqLT5sYXN0X3JlYWRbaV0ucmVxdWVzdDsKPiAgIAkJ CWlmIChyZXEgPT0gTlVMTCkKPiAgIAkJCQljb250aW51ZTsKPgo+IEBAIC0yMzc1LDcgKzIzNzUs NyBAQCB2b2lkIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ ICAgCW9iai0+YWN0aXZlIHw9IGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7Cj4KPiAgIAlsaXN0 X21vdmVfdGFpbCgmb2JqLT5lbmdpbmVfbGlzdFtlbmdpbmUtPmlkXSwgJmVuZ2luZS0+YWN0aXZl X2xpc3QpOwo+IC0JaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFzdF9yZWFkX3JlcVtl bmdpbmUtPmlkXSwgcmVxKTsKPiArCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJm9iai0+bGFzdF9yZWFk W2VuZ2luZS0+aWRdLCByZXEpOwo+Cj4gICAJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywg JnZtYS0+dm0tPmFjdGl2ZV9saXN0KTsKPiAgIH0KPiBAQCAtMjM4MywxMCArMjM4MywxMCBAQCB2 b2lkIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAgc3Rh dGljIHZvaWQKPiAgIGk5MTVfZ2VtX29iamVjdF9yZXRpcmVfX3dyaXRlKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCj4gICB7Cj4gLQlHRU1fQlVHX09OKG9iai0+bGFzdF93cml0ZV9y ZXEgPT0gTlVMTCk7Cj4gLQlHRU1fQlVHX09OKCEob2JqLT5hY3RpdmUgJiBpbnRlbF9lbmdpbmVf ZmxhZyhvYmotPmxhc3Rfd3JpdGVfcmVxLT5lbmdpbmUpKSk7Cj4gKwlHRU1fQlVHX09OKCFvYmot Pmxhc3Rfd3JpdGUucmVxdWVzdCk7Cj4gKwlHRU1fQlVHX09OKCEob2JqLT5hY3RpdmUgJiBpbnRl bF9lbmdpbmVfZmxhZyhvYmotPmxhc3Rfd3JpdGUucmVxdWVzdC0+ZW5naW5lKSkpOwo+Cj4gLQlp OTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3dyaXRlX3JlcSwgTlVMTCk7Cj4gKwlp OTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QsIE5VTEwpOwoK V2h5IG5vdCB1c2UgaTkxNV9nZW1fYWN0aXZlX3NldCBoZXJlPyBJdCB3aWxsIGJlIHN0cmFuZ2Ug dG8gaGF2ZSBhIG1peC4KCj4gICAJaW50ZWxfZmJfb2JqX2ZsdXNoKG9iaiwgdHJ1ZSwgT1JJR0lO X0NTKTsKPiAgIH0KPgo+IEBAIC0yMzk1LDEzICsyMzk1LDEzIEBAIGk5MTVfZ2VtX29iamVjdF9y ZXRpcmVfX3JlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IHJpbmcpCj4g ICB7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4KPiAtCUdFTV9CVUdfT04ob2JqLT5sYXN0 X3JlYWRfcmVxW3JpbmddID09IE5VTEwpOwo+ICsJR0VNX0JVR19PTighb2JqLT5sYXN0X3JlYWRb cmluZ10ucmVxdWVzdCk7Cj4gICAJR0VNX0JVR19PTighKG9iai0+YWN0aXZlICYgKDEgPDwgcmlu ZykpKTsKPgo+ICAgCWxpc3RfZGVsX2luaXQoJm9iai0+ZW5naW5lX2xpc3RbcmluZ10pOwo+IC0J aTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFzdF9yZWFkX3JlcVtyaW5nXSwgTlVMTCk7 Cj4gKwlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3JlYWRbcmluZ10ucmVxdWVz dCwgTlVMTCk7Cj4KPiAtCWlmIChvYmotPmxhc3Rfd3JpdGVfcmVxICYmIG9iai0+bGFzdF93cml0 ZV9yZXEtPmVuZ2luZS0+aWQgPT0gcmluZykKPiArCWlmIChvYmotPmxhc3Rfd3JpdGUucmVxdWVz dCAmJiBvYmotPmxhc3Rfd3JpdGUucmVxdWVzdC0+ZW5naW5lLT5pZCA9PSByaW5nKQo+ICAgCQlp OTE1X2dlbV9vYmplY3RfcmV0aXJlX193cml0ZShvYmopOwo+Cj4gICAJb2JqLT5hY3RpdmUgJj0g figxIDw8IHJpbmcpOwo+IEBAIC0yNDIwLDcgKzI0MjAsNyBAQCBpOTE1X2dlbV9vYmplY3RfcmV0 aXJlX19yZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCByaW5nKQo+ICAg CQkJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0tPmluYWN0aXZlX2xpc3Qp Owo+ICAgCX0KPgo+IC0JaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFzdF9mZW5jZWRf cmVxLCBOVUxMKTsKPiArCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvYmotPmxhc3RfZmVuY2Uu cmVxdWVzdCwgTlVMTCk7Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICAgfQo+Cj4g QEAgLTI2MTgsNyArMjYxOCw3IEBAIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QsCj4gICAJCQkJICAgICAgIGVuZ2luZV9saXN0W2VuZ2luZS0+aWRdKTsKPgo+ IC0JCWlmICghbGlzdF9lbXB0eSgmb2JqLT5sYXN0X3JlYWRfcmVxW2VuZ2luZS0+aWRdLT5saXN0 KSkKPiArCQlpZiAoIWxpc3RfZW1wdHkoJm9iai0+bGFzdF9yZWFkW2VuZ2luZS0+aWRdLnJlcXVl c3QtPmxpc3QpKQo+ICAgCQkJYnJlYWs7Cj4KPiAgIAkJaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9f cmVhZChvYmosIGVuZ2luZS0+aWQpOwo+IEBAIC0yNzQ2LDcgKzI3NDYsNyBAQCBpOTE1X2dlbV9v YmplY3RfZmx1c2hfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJ Zm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykgewo+ICAgCQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKPgo+IC0JCXJlcSA9IG9iai0+bGFzdF9yZWFkX3JlcVtp XTsKPiArCQlyZXEgPSBvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0Owo+ICAgCQlpZiAocmVxID09 IE5VTEwpCj4gICAJCQljb250aW51ZTsKPgo+IEBAIC0yODIyLDEwICsyODIyLDEwIEBAIGk5MTVf Z2VtX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0 IGRybV9maWxlICpmaWxlKQo+ICAgCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPgo+ICAgCWZv ciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspIHsKPiAtCQlpZiAob2JqLT5sYXN0 X3JlYWRfcmVxW2ldID09IE5VTEwpCj4gKwkJaWYgKCFvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0 KQo+ICAgCQkJY29udGludWU7Cj4KPiAtCQlyZXFbbisrXSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0 KG9iai0+bGFzdF9yZWFkX3JlcVtpXSk7Cj4gKwkJcmVxW24rK10gPSBpOTE1X2dlbV9yZXF1ZXN0 X2dldChvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0KTsKPiAgIAl9Cj4KPiAgIAltdXRleF91bmxv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPiBAQCAtMjkxNiwxMiArMjkxNiwxMiBAQCBpOTE1X2dl bV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+Cj4gICAJbiA9 IDA7Cj4gICAJaWYgKHJlYWRvbmx5KSB7Cj4gLQkJaWYgKG9iai0+bGFzdF93cml0ZV9yZXEpCj4g LQkJCXJlcVtuKytdID0gb2JqLT5sYXN0X3dyaXRlX3JlcTsKPiArCQlpZiAob2JqLT5sYXN0X3dy aXRlLnJlcXVlc3QpCj4gKwkJCXJlcVtuKytdID0gb2JqLT5sYXN0X3dyaXRlLnJlcXVlc3Q7Cj4g ICAJfSBlbHNlIHsKPiAgIAkJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykK PiAtCQkJaWYgKG9iai0+bGFzdF9yZWFkX3JlcVtpXSkKPiAtCQkJCXJlcVtuKytdID0gb2JqLT5s YXN0X3JlYWRfcmVxW2ldOwo+ICsJCQlpZiAob2JqLT5sYXN0X3JlYWRbaV0ucmVxdWVzdCkKPiAr CQkJCXJlcVtuKytdID0gb2JqLT5sYXN0X3JlYWRbaV0ucmVxdWVzdDsKPiAgIAl9Cj4gICAJZm9y IChpID0gMDsgaSA8IG47IGkrKykgewo+ICAgCQlyZXQgPSBfX2k5MTVfZ2VtX29iamVjdF9zeW5j KG9iaiwgdG8sIHJlcVtpXSk7Cj4gQEAgLTQwMjIsMTIgKzQwMjIsMTIgQEAgaTkxNV9nZW1fYnVz eV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQlmb3IgKGkg PSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsrKSB7Cj4gICAJCQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcTsKPgo+IC0JCQlyZXEgPSBvYmotPmxhc3RfcmVhZF9yZXFbaV07Cj4g KwkJCXJlcSA9IG9iai0+bGFzdF9yZWFkW2ldLnJlcXVlc3Q7Cj4gICAJCQlpZiAocmVxKQo+ICAg CQkJCWFyZ3MtPmJ1c3kgfD0gMSA8PCAoMTYgKyByZXEtPmVuZ2luZS0+ZXhlY19pZCk7Cj4gICAJ CX0KPiAtCQlpZiAob2JqLT5sYXN0X3dyaXRlX3JlcSkKPiAtCQkJYXJncy0+YnVzeSB8PSBvYmot Pmxhc3Rfd3JpdGVfcmVxLT5lbmdpbmUtPmV4ZWNfaWQ7Cj4gKwkJaWYgKG9iai0+bGFzdF93cml0 ZS5yZXF1ZXN0KQo+ICsJCQlhcmdzLT5idXN5IHw9IG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0LT5l bmdpbmUtPmV4ZWNfaWQ7Cj4gICAJfQo+Cj4gICB1bnJlZjoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9kbWFidWYuYwo+IGluZGV4IDg1YTVjODZiYTgwYS4uYWE3NjdjYTI4NTMyIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPiBAQCAtMjI3LDEzICsyMjcs MTUgQEAgc3RhdGljIHZvaWQgZXhwb3J0X2ZlbmNlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICAgewo+ICAgCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YgPSBkbWFf YnVmLT5yZXN2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+ICsJdW5z aWduZWQgbG9uZyBhY3RpdmU7Cj4gICAJaW50IGlkeDsKPgo+ICAgCW11dGV4X2xvY2soJm9iai0+ YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJbXV0ZXhfbG9jaygmcmVzdi0+bG9jay5iYXNl KTsKPgo+IC0JZm9yIChpZHggPSAwOyBpZHggPCBBUlJBWV9TSVpFKG9iai0+bGFzdF9yZWFkX3Jl cSk7IGlkeCsrKSB7Cj4gLQkJcmVxID0gb2JqLT5sYXN0X3JlYWRfcmVxW2lkeF07Cj4gKwlhY3Rp dmUgPSBvYmotPmFjdGl2ZTsKPiArCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmUsIGlkeCkgewo+ICsJ CXJlcSA9IG9iai0+bGFzdF9yZWFkW2lkeF0ucmVxdWVzdDsKPiAgIAkJaWYgKCFyZXEpCj4gICAJ CQljb250aW51ZTsKPgo+IEBAIC0yNDEsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgZXhwb3J0X2Zl bmNlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQkJcmVzZXJ2YXRpb25f b2JqZWN0X2FkZF9zaGFyZWRfZmVuY2UocmVzdiwgJnJlcS0+ZmVuY2UpOwo+ICAgCX0KPgo+IC0J cmVxID0gb2JqLT5sYXN0X3dyaXRlX3JlcTsKPiArCXJlcSA9IG9iai0+bGFzdF93cml0ZS5yZXF1 ZXN0Owo+ICAgCWlmIChyZXEpCj4gICAJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9mZW5j ZShyZXN2LCAmcmVxLT5mZW5jZSk7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZXhlY2J1ZmZlci5jCj4gaW5kZXggNWJmYjJlMmYzZTY3Li4yMjI2MWE1MTFkN2QgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTExNDMsNyAr MTE0Myw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19hY3RpdmUoc3RydWN0IGxpc3Rf aGVhZCAqdm1hcywKPiAgIAkJaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCByZXEpOwo+ICAg CQllYl9leHBvcnRfZmVuY2Uob2JqLCByZXEpOwo+ICAgCQlpZiAob2JqLT5iYXNlLndyaXRlX2Rv bWFpbikgewo+IC0JCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3dyaXRlX3Jl cSwgcmVxKTsKPiArCQkJaTkxNV9nZW1fYWN0aXZlX3NldCgmb2JqLT5sYXN0X3dyaXRlLCByZXEp Owo+Cj4gICAJCQlpbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShvYmosIE9SSUdJTl9DUyk7Cj4KPiBA QCAtMTE1MSw3ICsxMTUxLDcgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2FjdGl2ZShz dHJ1Y3QgbGlzdF9oZWFkICp2bWFzLAo+ICAgCQkJb2JqLT5iYXNlLndyaXRlX2RvbWFpbiAmPSB+ STkxNV9HRU1fR1BVX0RPTUFJTlM7Cj4gICAJCX0KPiAgIAkJaWYgKGVudHJ5LT5mbGFncyAmIEVY RUNfT0JKRUNUX05FRURTX0ZFTkNFKSB7Cj4gLQkJCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZv YmotPmxhc3RfZmVuY2VkX3JlcSwgcmVxKTsKPiArCQkJaTkxNV9nZW1fYWN0aXZlX3NldCgmb2Jq LT5sYXN0X2ZlbmNlLCByZXEpOwo+ICAgCQkJaWYgKGVudHJ5LT5mbGFncyAmIF9fRVhFQ19PQkpF Q1RfSEFTX0ZFTkNFKSB7Cj4gICAJCQkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZW5naW5lLT5pOTE1Owo+ICAgCQkJCWxpc3RfbW92ZV90YWlsKCZkZXZfcHJpdi0+ZmVuY2Vf cmVnc1tvYmotPmZlbmNlX3JlZ10ubHJ1X2xpc3QsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9mZW5jZS5jCj4gaW5kZXggMjUxZDdhOTVhZjg5Li45ODM4MDQ2ODAxYmQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKPiBAQCAtMjYxLDEyICsyNjEsMTIgQEAgc3Rh dGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF9mZW5jZV9sb3N0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCj4gICBzdGF0aWMgaW50Cj4gICBpOTE1X2dlbV9vYmplY3Rfd2Fp dF9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgewo+IC0JaWYgKG9i ai0+bGFzdF9mZW5jZWRfcmVxKSB7Cj4gLQkJaW50IHJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KG9i ai0+bGFzdF9mZW5jZWRfcmVxKTsKPiArCWlmIChvYmotPmxhc3RfZmVuY2UucmVxdWVzdCkgewo+ ICsJCWludCByZXQgPSBpOTE1X3dhaXRfcmVxdWVzdChvYmotPmxhc3RfZmVuY2UucmVxdWVzdCk7 Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1cm4gcmV0Owo+Cj4gLQkJaTkxNV9nZW1fcmVxdWVz dF9hc3NpZ24oJm9iai0+bGFzdF9mZW5jZWRfcmVxLCBOVUxMKTsKPiArCQlpOTE1X2dlbV9yZXF1 ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X2ZlbmNlLnJlcXVlc3QsIE5VTEwpOwo+ICAgCX0KPgo+ICAg CXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiBpbmRl eCA5MjhmYzhiYWY0MzUuLmZmOGM1NGZhOTU1ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZXF1ZXN0LmgKPiBAQCAtMjQ3LDQgKzI0Nyw0NSBAQCBzdGF0aWMgaW5saW5lIGJv b2wgaTkxNV9zcGluX3JlcXVlc3QoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0LAo+ICAgCQlfX2k5MTVfc3Bpbl9yZXF1ZXN0KHJlcXVlc3QsIHN0YXRlLCB0aW1lb3V0 X3VzKSk7Cj4gICB9Cj4KPiArLyogV2UgdHJlYXQgcmVxdWVzdHMgYXMgZmVuY2VzLiBUaGlzIGlz IG5vdCBiZSB0byBjb25mdXNlZCB3aXRoIG91cgo+ICsgKiAiZmVuY2UgcmVnaXN0ZXJzIiBidXQg cGlwZWxpbmUgc3luY2hyb25pc2F0aW9uIG9iamVjdHMgYWxhIEdMX0FSQl9zeW5jLgo+ICsgKiBX ZSB1c2UgdGhlIGZlbmNlcyB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgZnJvbSB0aGUgQ1BVIHdpdGgg YWN0aXZpdHkgb24gdGhlCj4gKyAqIEdQVSwgZm9yIGV4YW1wbGUsIHdlIHNob3VsZCBub3QgcmV3 cml0ZSBhbiBvYmplY3QncyBQVEUgd2hpbHN0IHRoZSBHUFUKPiArICogaXMgcmVhZGluZyB0aGVt LiBXZSBhbHNvIHRyYWNrIGZlbmNlcyBhdCBhIGhpZ2hlciBsZXZlbCB0byBwcm92aWRlCj4gKyAq IGltcGxpY2l0IHN5bmNocm9uaXNhdGlvbiBhcm91bmQgR0VNIG9iamVjdHMsIGUuZy4gc2V0LWRv bWFpbiB3aWxsIHdhaXQKPiArICogZm9yIG91dHN0YW5kaW5nIEdQVSByZW5kZXJpbmcgYmVmb3Jl IG1hcmtpbmcgdGhlIG9iamVjdCByZWFkeSBmb3IgQ1BVCj4gKyAqIGFjY2Vzcywgb3IgYSBwYWdl ZmxpcCB3aWxsIHdhaXQgdW50aWwgdGhlIEdQVSBpcyBjb21wbGV0ZSBiZWZvcmUgc2hvd2luZwo+ ICsgKiB0aGUgZnJhbWUgb24gdGhlIHNjYW5vdXQuCj4gKyAqCj4gKyAqIEluIG9yZGVyIHRvIHVz ZSBhIGZlbmNlLCB0aGUgb2JqZWN0IG11c3QgdHJhY2sgdGhlIGZlbmNlIGl0IG5lZWRzIHRvCj4g KyAqIHNlcmlhbGlzZSB3aXRoLiBGb3IgZXhhbXBsZSwgR0VNIG9iamVjdHMgd2FudCB0byB0cmFj ayBib3RoIHJlYWQgYW5kCj4gKyAqIHdyaXRlIGFjY2VzcyBzbyB0aGF0IHdlIGNhbiBwZXJmb3Jt IGNvbmN1cnJlbnQgcmVhZCBvcGVyYXRpb25zIGJldHdlZW4KPiArICogdGhlIENQVSBhbmQgR1BV IGVuZ2luZXMsIGFzIHdlbGwgYXMgd2FpdGluZyBmb3IgYWxsIHJlbmRlcmluZyB0bwo+ICsgKiBj b21wbGV0ZSwgb3Igd2FpdGluZyBmb3IgdGhlIGxhc3QgR1BVIHVzZXIgb2YgYSAiZmVuY2UgcmVn aXN0ZXIiLiBUaGUKPiArICogb2JqZWN0IHRoZW4gZW1iZWRzIGEgQGk5MTVfZ2VtX2FjdGl2ZSB0 byB0cmFjayB0aGUgbW9zdCByZWNlbnQgKGluCj4gKyAqIHJldGlybWVudCBvcmRlcikgcmVxdWVz dCByZWxldmFudCBmb3IgdGhlIGRlc2lyZWQgbW9kZSBvZiBhY2Nlc3MuCj4gKyAqIFRoZSBAaTkx NV9nZW1fYWN0aXZlIGlzIHVwZGF0ZWQgd2l0aCBpOTE1X2dlbV9yZXF1ZXN0X21hcmtfYWN0aXZl KCkgdG8KCmk5MTVfZ2VtX2FjdGl2ZV9zZXQKCj4gKyAqIHRyYWNrIHRoZSBtb3N0IHJlY2VudCBm ZW5jZSByZXF1ZXN0LCB0eXBpY2FsbHkgdGhpcyBpcyBkb25lIGFzIHBhcnQgb2YKPiArICogaTkx NV92bWFfbW92ZV90b19hY3RpdmUoKS4KPiArICoKPiArICogV2hlbiB0aGUgQGk5MTVfZ2VtX2Fj dGl2ZSBjb21wbGV0ZXMgKGlzIHJldGlyZWQpLCBpdCB3aWxsCj4gKyAqIHNpZ25hbCBpdHMgY29t cGxldGlvbiB0byB0aGUgb3duZXIgdGhyb3VnaCBhIGNhbGxiYWNrIGFzIHdlbGwgYXMgbWFyawo+ ICsgKiBpdHNlbGYgYXMgaWRsZSAoaTkxNV9nZW1fYWN0aXZlLnJlcXVlc3QgPT0gTlVMTCkuIFRo ZSBvd25lcgo+ICsgKiBjYW4gdGhlbiBwZXJmb3JtIGFueSBhY3Rpb24sIHN1Y2ggYXMgZGVsYXll ZCBmcmVlaW5nIG9mIGFuIGFjdGl2ZQo+ICsgKiByZXNvdXJjZSBpbmNsdWRpbmcgaXRzZWxmLgo+ ICsgKi8KPiArc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3Q7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQKPiAraTkx NV9nZW1fYWN0aXZlX3NldChzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCj4gKwkJICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiArewo+ICsJaTkxNV9nZW1f cmVxdWVzdF9hc3NpZ24oJmFjdGl2ZS0+cmVxdWVzdCwgcmVxdWVzdCk7Cj4gK30KPiArCj4gKyNk ZWZpbmUgZm9yX2VhY2hfYWN0aXZlKG1hc2ssIGlkeCkgXAo+ICsJZm9yICg7IG1hc2sgPyBpZHgg PSBmZnMobWFzaykgLSAxLCAxIDogMDsgbWFzayAmPSB+KDEgPDwgaWR4KSkKPiArCj4gICAjZW5k aWYgLyogSTkxNV9HRU1fUkVRVUVTVF9IICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dGlsaW5nLmMKPiBpbmRleCBlODNmYzJkMDQzM2MuLjAwZDc5NmRhNjVmYiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4gQEAgLTI0Miw3ICsyNDIsNyBAQCBpOTE1 X2dlbV9zZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJ CQl9Cj4KPiAgIAkJCW9iai0+ZmVuY2VfZGlydHkgPQo+IC0JCQkJb2JqLT5sYXN0X2ZlbmNlZF9y ZXEgfHwKPiArCQkJCW9iai0+bGFzdF9mZW5jZS5yZXF1ZXN0IHx8Cj4gICAJCQkJb2JqLT5mZW5j ZV9yZWcgIT0gSTkxNV9GRU5DRV9SRUdfTk9ORTsKPgo+ICAgCQkJb2JqLT50aWxpbmdfbW9kZSA9 IGFyZ3MtPnRpbGluZ19tb2RlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV91c2VycHRyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRy LmMKPiBpbmRleCBlOTM1YjMyN2YzZjkuLjMyZjUwYTcwZWE0MiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKPiBAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgdm9p ZCB3YWl0X3JlbmRlcmluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCWZv ciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspIHsKPiAgIAkJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4KPiAtCQlyZXEgPSBvYmotPmxhc3RfcmVhZF9yZXFbaV07 Cj4gKwkJcmVxID0gb2JqLT5sYXN0X3JlYWRbaV0ucmVxdWVzdDsKPiAgIAkJaWYgKHJlcSA9PSBO VUxMKQo+ICAgCQkJY29udGludWU7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMKPiBpbmRleCAyZmJlODFkNTFhZjEuLjVlMTJiOGVlNDlkMiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC03NDksOCArNzQ5LDggQEAgc3RhdGljIHZvaWQg Y2FwdHVyZV9ibyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICplcnIsCj4gICAJZXJyLT5z aXplID0gb2JqLT5iYXNlLnNpemU7Cj4gICAJZXJyLT5uYW1lID0gb2JqLT5iYXNlLm5hbWU7Cj4g ICAJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykKPiAtCQllcnItPnJzZXFu b1tpXSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9yZWFkX3JlcVtpXSk7 Cj4gLQllcnItPndzZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF93 cml0ZV9yZXEpOwo+ICsJCWVyci0+cnNlcW5vW2ldID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vx bm8ob2JqLT5sYXN0X3JlYWRbaV0ucmVxdWVzdCk7Cj4gKwllcnItPndzZXFubyA9IGk5MTVfZ2Vt X3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0KTsKPiAgIAllcnItPmd0 dF9vZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQ7Cj4gICAJZXJyLT5yZWFkX2RvbWFpbnMgPSBvYmot PmJhc2UucmVhZF9kb21haW5zOwo+ICAgCWVyci0+d3JpdGVfZG9tYWluID0gb2JqLT5iYXNlLndy aXRlX2RvbWFpbjsKPiBAQCAtNzYyLDggKzc2Miw3IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmVfYm8o c3RydWN0IGRybV9pOTE1X2Vycm9yX2J1ZmZlciAqZXJyLAo+ICAgCWVyci0+ZGlydHkgPSBvYmot PmRpcnR5Owo+ICAgCWVyci0+cHVyZ2VhYmxlID0gb2JqLT5tYWR2ICE9IEk5MTVfTUFEVl9XSUxM TkVFRDsKPiAgIAllcnItPnVzZXJwdHIgPSBvYmotPnVzZXJwdHIubW0gIT0gTlVMTDsKPiAtCWVy ci0+cmluZyA9IG9iai0+bGFzdF93cml0ZV9yZXEgPwo+IC0JCQlpOTE1X2dlbV9yZXF1ZXN0X2dl dF9lbmdpbmUob2JqLT5sYXN0X3dyaXRlX3JlcSktPmlkIDogLTE7Cj4gKwllcnItPnJpbmcgPSBv YmotPmxhc3Rfd3JpdGUucmVxdWVzdCA/IG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0LT5lbmdpbmUt PmlkIDogLTE7Cj4gICAJZXJyLT5jYWNoZV9sZXZlbCA9IG9iai0+Y2FjaGVfbGV2ZWw7Cj4gICB9 Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNWY0YmRjM2Q0OTcy Li4yN2FjNmRiNGUyNmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g QEAgLTExNDY1LDcgKzExNDY1LDcgQEAgc3RhdGljIGJvb2wgdXNlX21taW9fZmxpcChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJaWYgKHJlc3YgJiYgIXJlc2VydmF0aW9uX29i amVjdF90ZXN0X3NpZ25hbGVkX3JjdShyZXN2LCBmYWxzZSkpCj4gICAJCXJldHVybiB0cnVlOwo+ Cj4gLQlyZXR1cm4gZW5naW5lICE9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShvYmotPmxh c3Rfd3JpdGVfcmVxKTsKPiArCXJldHVybiBlbmdpbmUgIT0gaTkxNV9nZW1fcmVxdWVzdF9nZXRf ZW5naW5lKG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0KTsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQg c2tsX2RvX21taW9fZmxpcChzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiBAQCAtMTE3 NjgsNyArMTE3NjgsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiAgIAl9IGVsc2UgaWYgKElTX0lWWUJSSURHRShkZXYpIHx8IElTX0hB U1dFTEwoZGV2KSkgewo+ICAgCQllbmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwo+ICAg CX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNykgewo+IC0JCWVuZ2luZSA9IGk5 MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShvYmotPmxhc3Rfd3JpdGVfcmVxKTsKPiArCQllbmdp bmUgPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdpbmUob2JqLT5sYXN0X3dyaXRlLnJlcXVlc3Qp Owo+ICAgCQlpZiAoZW5naW5lID09IE5VTEwgfHwgZW5naW5lLT5pZCAhPSBSQ1MpCj4gICAJCQll bmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwo+ICAgCX0gZWxzZSB7Cj4gQEAgLTExNzkw LDcgKzExNzkwLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gICAJCUlOSVRfV09SSygmd29yay0+bW1pb193b3JrLCBpbnRlbF9tbWlv X2ZsaXBfd29ya19mdW5jKTsKPgo+ICAgCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmd29yay0+ ZmxpcF9xdWV1ZWRfcmVxLAo+IC0JCQkJCW9iai0+bGFzdF93cml0ZV9yZXEpOwo+ICsJCQkJCW9i ai0+bGFzdF93cml0ZS5yZXF1ZXN0KTsKPgo+ICAgCQlzY2hlZHVsZV93b3JrKCZ3b3JrLT5tbWlv X3dvcmspOwo+ICAgCX0gZWxzZSB7Cj4gQEAgLTE0MDk2LDcgKzE0MDk2LDcgQEAgaW50ZWxfcHJl cGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAkJCXRvX2ludGVsX3Bs YW5lX3N0YXRlKG5ld19zdGF0ZSk7Cj4KPiAgIAkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJnBs YW5lX3N0YXRlLT53YWl0X3JlcSwKPiAtCQkJCQlvYmotPmxhc3Rfd3JpdGVfcmVxKTsKPiArCQkJ CQlvYmotPmxhc3Rfd3JpdGUucmVxdWVzdCk7Cj4gICAJfQo+Cj4gICAJcmV0dXJuIHJldDsKPgoK T3RoZXJ3aXNlIGxvb2tzIGZpbmUuCgpSZWdhcmRzLAoKVHZydGtvCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK