From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 46/64] drm/i915: Count how many VMA are bound for an object Date: Tue, 12 Jul 2016 15:30:25 +0100 Message-ID: <5784FF01.4090107@linux.intel.com> References: <1467880930-23082-1-git-send-email-chris@chris-wilson.co.uk> <1467880930-23082-46-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 3E7FE6E58C for ; Tue, 12 Jul 2016 14:30:27 +0000 (UTC) In-Reply-To: <1467880930-23082-46-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 Ck9uIDA3LzA3LzE2IDA5OjQxLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gU2luY2Ugd2UgbWF5IGhh dmUgVk1BIGFsbG9jYXRlZCBmb3IgYW4gb2JqZWN0LCBidXQgd2UgaW50ZXJydXB0ZWQgdGhlaXIK PiBiaW5kaW5nLCB0aGVyZSBpcyBhIGRpc3Bhcml0eSBiZXR3ZWVuIGhhdmUgZWxlbWVudHMgb24g dGhlIG9iai0+dm1hX2xpc3QKPiBhbmQgYmVpbmcgYm91bmQuIGk5MTVfZ2VtX29ial9ib3VuZF9h bnkoKSBkb2VzIHRoaXMgY2hlY2ssIGJ1dCB0aGlzIGlzCj4gbm90IHJpZ29yb3VzbHkgb2JzZXJ2 ZWQgLSBhZGQgYW4gZXhwbGljaXQgY291bnQgdG8gbWFrZSBpdCBlYXNpZXIuCj4KPiBTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgfCAxMiArKysrKy0tLS0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8ICAzICsrLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICB8IDM0ICsrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9zaHJpbmtlci5jIHwgMTcgKy0tLS0tLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fc3RvbGVuLmMgICB8ICAxICsKPiAgIDUgZmlsZXMgY2hhbmdlZCwgMjMgaW5z ZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+IGluZGV4IDMyNzA2NDgyM2JiMC4uZDM4NTI4Mjg4NzhmIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMTc0LDYgKzE3NCw5IEBAIGRlc2NyaWJlX29iaihz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJ aWYgKG9iai0+ZmVuY2VfcmVnICE9IEk5MTVfRkVOQ0VfUkVHX05PTkUpCj4gICAJCXNlcV9wcmlu dGYobSwgIiAoZmVuY2U6ICVkKSIsIG9iai0+ZmVuY2VfcmVnKTsKPiAgIAlsaXN0X2Zvcl9lYWNo X2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5rKSB7Cj4gKwkJaWYgKCFkcm1fbW1f bm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiAgIAkJc2Vx X3ByaW50ZihtLCAiICglc2d0dCBvZmZzZXQ6ICUwOGxseCwgc2l6ZTogJTA4bGx4IiwKPiAgIAkJ CSAgIHZtYS0+aXNfZ2d0dCA/ICJnIiA6ICJwcCIsCj4gICAJCQkgICB2bWEtPm5vZGUuc3RhcnQs IHZtYS0+bm9kZS5zaXplKTsKPiBAQCAtMzM1LDExICszMzgsMTEgQEAgc3RhdGljIGludCBwZXJf ZmlsZV9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKPiAgIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqID0gcHRyOwo+ICAgCXN0cnVjdCBmaWxlX3N0YXRzICpzdGF0 cyA9IGRhdGE7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gLQlpbnQgYm91bmQgPSAwOwo+ Cj4gICAJc3RhdHMtPmNvdW50Kys7Cj4gICAJc3RhdHMtPnRvdGFsICs9IG9iai0+YmFzZS5zaXpl Owo+IC0KPiArCWlmICghb2JqLT5iaW5kX2NvdW50KQo+ICsJCXN0YXRzLT51bmJvdW5kICs9IG9i ai0+YmFzZS5zaXplOwo+ICAgCWlmIChvYmotPmJhc2UubmFtZSB8fCBvYmotPmJhc2UuZG1hX2J1 ZikKPiAgIAkJc3RhdHMtPnNoYXJlZCArPSBvYmotPmJhc2Uuc2l6ZTsKPgo+IEBAIC0zNDcsOCAr MzUwLDYgQEAgc3RhdGljIGludCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9p ZCAqZGF0YSkKPiAgIAkJaWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCj4g ICAJCQljb250aW51ZTsKPgo+IC0JCWJvdW5kKys7Cj4gLQo+ICAgCQlpZiAodm1hLT5pc19nZ3R0 KSB7Cj4gICAJCQlzdGF0cy0+Z2xvYmFsICs9IHZtYS0+bm9kZS5zaXplOwo+ICAgCQl9IGVsc2Ug ewo+IEBAIC0zNjYsOSArMzY3LDYgQEAgc3RhdGljIGludCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQs IHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKPiAgIAkJCXN0YXRzLT5pbmFjdGl2ZSArPSB2bWEtPm5v ZGUuc2l6ZTsKPiAgIAl9Cj4KPiAtCWlmICghYm91bmQpCj4gLQkJc3RhdHMtPnVuYm91bmQgKz0g b2JqLT5iYXNlLnNpemU7Cj4gLQo+ICAgCXJldHVybiAwOwo+ICAgfQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gaW5kZXggYTE5ZDE4ZWEwNzRlLi42MzM1ODUwNTQ2NjkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjIxNyw2ICsyMjE3LDggQEAgc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3Qgewo+ICAgCXVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9iaXRzOklOVEVMX0ZS T05UQlVGRkVSX0JJVFM7Cj4KPiAgIAl1bnNpZ25lZCBpbnQgaGFzX3djX21tYXA7Cj4gKwkvKiog Q291bnQgb2YgVk1BIGFjdHVhbGx5IGJvdW5kIGJ5IHRoaXMgb2JqZWN0ICovCj4gKwl1bnNpZ25l ZCBpbnQgYmluZF9jb3VudDsKPiAgIAl1bnNpZ25lZCBpbnQgcGluX2Rpc3BsYXk7Cj4KPiAgIAlz dHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzOwo+IEBAIC0zMjQ2LDcgKzMyNDgsNiBAQCBpOTE1X2dlbV9v YmpfZ2d0dF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8pCj4gICAJcmV0dXJu IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldF92aWV3KG8sICZpOTE1X2dndHRfdmlld19ub3JtYWwp Owo+ICAgfQo+Cj4gLWJvb2wgaTkxNV9nZW1fb2JqX2JvdW5kX2FueShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqbyk7Cj4gICBib29sIGk5MTVfZ2VtX29ial9nZ3R0X2JvdW5kX3ZpZXcoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gICAJCQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9n Z3R0X3ZpZXcgKnZpZXcpOwo+ICAgYm9vbCBpOTE1X2dlbV9vYmpfYm91bmQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm8sCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggOThmMzk0 NWZjNTBmLi5jNjgxNmY5OTY5ZDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAt MjEwNyw3ICsyMTA3LDcgQEAgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCWlmIChvYmotPnBhZ2VzX3Bpbl9jb3VudCkKPiAgIAkJ cmV0dXJuIC1FQlVTWTsKPgo+IC0JQlVHX09OKGk5MTVfZ2VtX29ial9ib3VuZF9hbnkob2JqKSk7 Cj4gKwlHRU1fQlVHX09OKG9iai0+YmluZF9jb3VudCk7Cj4KPiAgIAkvKiAtPnB1dF9wYWdlcyBt aWdodCBuZWVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGJpdDE3IHN3aXp6bGUKPiAgIAkg KiBhcnJheSwgaGVuY2UgcHJvdGVjdCB0aGVtIGZyb20gYmVpbmcgcmVhcGVkIGJ5IHJlbW92aW5n IHRoZW0gZnJvbSBndHQKPiBAQCAtMjk1Nyw3ICsyOTU3LDYgQEAgc3RhdGljIHZvaWQgX19pOTE1 X3ZtYV9pb3VubWFwKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgc3RhdGljIGludCBfX2k5MTVf dm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgYm9vbCB3YWl0KQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7Cj4gICAJaW50 IHJldDsKPgo+ICAgCWlmIChsaXN0X2VtcHR5KCZ2bWEtPm9ial9saW5rKSkKPiBAQCAtMjk3MSw3 ICsyOTcwLDggQEAgc3RhdGljIGludCBfX2k5MTVfdm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEg KnZtYSwgYm9vbCB3YWl0KQo+ICAgCWlmICh2bWEtPnBpbl9jb3VudCkKPiAgIAkJcmV0dXJuIC1F QlVTWTsKPgo+IC0JQlVHX09OKG9iai0+cGFnZXMgPT0gTlVMTCk7Cj4gKwlHRU1fQlVHX09OKG9i ai0+YmluZF9jb3VudCA9PSAwKTsKPiArCUdFTV9CVUdfT04oIW9iai0+cGFnZXMpOwo+Cj4gICAJ aWYgKHdhaXQpIHsKPiAgIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKG9i aiwgZmFsc2UpOwo+IEBAIC0zMDExLDggKzMwMTEsOSBAQCBzdGF0aWMgaW50IF9faTkxNV92bWFf dW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBib29sIHdhaXQpCj4KPiAgIAkvKiBTaW5jZSB0 aGUgdW5ib3VuZCBsaXN0IGlzIGdsb2JhbCwgb25seSBtb3ZlIHRvIHRoYXQgbGlzdCBpZgo+ICAg CSAqIG5vIG1vcmUgVk1BcyBleGlzdC4gKi8KPiAtCWlmIChsaXN0X2VtcHR5KCZvYmotPnZtYV9s aXN0KSkKPiAtCQlsaXN0X21vdmVfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwgJmRldl9wcml2LT5t bS51bmJvdW5kX2xpc3QpOwo+ICsJaWYgKC0tb2JqLT5iaW5kX2NvdW50ID09IDApCj4gKwkJbGlz dF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsCj4gKwkJCSAgICAgICAmdG9faTkxNShvYmot PmJhc2UuZGV2KS0+bW0udW5ib3VuZF9saXN0KTsKPgo+ICAgCS8qIEFuZCBmaW5hbGx5IG5vdyB0 aGUgb2JqZWN0IGlzIGNvbXBsZXRlbHkgZGVjb3VwbGVkIGZyb20gdGhpcyB2bWEsCj4gICAJICog d2UgY2FuIGRyb3AgaXRzIGhvbGQgb24gdGhlIGJhY2tpbmcgc3RvcmFnZSBhbmQgYWxsb3cgaXQg dG8gYmUKPiBAQCAtMzI0Nyw2ICszMjQ4LDcgQEAgc2VhcmNoX2ZyZWU6Cj4KPiAgIAlsaXN0X21v dmVfdGFpbCgmb2JqLT5nbG9iYWxfbGlzdCwgJmRldl9wcml2LT5tbS5ib3VuZF9saXN0KTsKPiAg IAlsaXN0X2FkZF90YWlsKCZ2bWEtPnZtX2xpbmssICZ2bS0+aW5hY3RpdmVfbGlzdCk7Cj4gKwlv YmotPmJpbmRfY291bnQrKzsKPgo+ICAgCXJldHVybiB2bWE7Cj4KPiBAQCAtMzQ0Miw3ICszNDQ0 LDYgQEAgaW50IGk5MTVfZ2VtX29iamVjdF9zZXRfY2FjaGVfbGV2ZWwoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2Jq LT5iYXNlLmRldjsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKm5leHQ7Cj4gLQlib29sIGJv dW5kID0gZmFsc2U7Cj4gICAJaW50IHJldCA9IDA7Cj4KPiAgIAlpZiAob2JqLT5jYWNoZV9sZXZl bCA9PSBjYWNoZV9sZXZlbCkKPiBAQCAtMzQ2Niw4ICszNDY3LDcgQEAgaW50IGk5MTVfZ2VtX29i amVjdF9zZXRfY2FjaGVfbGV2ZWwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAg IAkJCXJldCA9IGk5MTVfdm1hX3VuYmluZCh2bWEpOwo+ICAgCQkJaWYgKHJldCkKPiAgIAkJCQly ZXR1cm4gcmV0Owo+IC0JCX0gZWxzZQo+IC0JCQlib3VuZCA9IHRydWU7Cj4gKwkJfQo+ICAgCX0K Pgo+ICAgCS8qIFdlIGNhbiByZXVzZSB0aGUgZXhpc3RpbmcgZHJtX21tIG5vZGVzIGJ1dCBuZWVk IHRvIGNoYW5nZSB0aGUKPiBAQCAtMzQ3Nyw3ICszNDc3LDcgQEAgaW50IGk5MTVfZ2VtX29iamVj dF9zZXRfY2FjaGVfbGV2ZWwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAkg KiByZXdyaXRlIHRoZSBQVEUgaW4gdGhlIGJlbGllZiB0aGF0IGRvaW5nIHNvIHRyYW1wbGVzIHVw b24gbGVzcwo+ICAgCSAqIHN0YXRlIGFuZCBzbyBpbnZvbHZlcyBsZXNzIHdvcmsuCj4gICAJICov Cj4gLQlpZiAoYm91bmQpIHsKPiArCWlmIChvYmotPmJpbmRfY291bnQpIHsKPiAgIAkJLyogQmVm b3JlIHdlIGNoYW5nZSB0aGUgUFRFLCB0aGUgR1BVIG11c3Qgbm90IGJlIGFjY2Vzc2luZyBpdC4K PiAgIAkJICogSWYgd2Ugd2FpdCB1cG9uIHRoZSBvYmplY3QsIHdlIGtub3cgdGhhdCBhbGwgdGhl IGJvdW5kCj4gICAJCSAqIFZNQSBhcmUgbm8gbG9uZ2VyIGFjdGl2ZS4KPiBAQCAtMzY4NCw2ICsz Njg0LDkgQEAgaTkxNV9nZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCQkJCSAgICBvbGRfcmVhZF9kb21haW5zLAo+ICAg CQkJCQkgICAgb2xkX3dyaXRlX2RvbWFpbik7Cj4KPiArCS8qIEluY3JlbWVudCB0aGUgcGFnZXNf cGluX2NvdW50IHRvIGd1YXJkIGFnYWluc3QgdGhlIHNocmlua2VyICovCj4gKwlvYmotPnBhZ2Vz X3Bpbl9jb3VudCsrOwoKV291bGQgaXQgYmUgY2xlYXJlciB0byBsb29rIGF0IG9iai0+cGluX2Rp c3BsYXkgaW4gdGhlIHNocmlua2VyPyAKQWx0aG91Z2ggaXQgbG9va3MgbGlrZSBzcGVjaWFsIGNh c2luZyBvdXQgb2YgdGhlIGNsZWFubGluZXNzIG9mIHRoZSAKZGVzaWduIGluIGJvdGggY2FzZSBz byBJIGFtIG5vdCBzdXJlLgoKPiArCj4gICAJcmV0dXJuIDA7Cj4KPiAgIGVycl91bnBpbl9kaXNw bGF5Ogo+IEBAIC0zNzAwLDYgKzM3MDMsNyBAQCBpOTE1X2dlbV9vYmplY3RfdW5waW5fZnJvbV9k aXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4KPiAgIAlpOTE1 X2dlbV9vYmplY3RfZ2d0dF91bnBpbl92aWV3KG9iaiwgdmlldyk7Cj4KPiArCW9iai0+cGFnZXNf cGluX2NvdW50LS07Cj4gICAJb2JqLT5waW5fZGlzcGxheS0tOwo+ICAgfQo+Cj4gQEAgLTQyMTUs NiArNDIxOSw3IEBAIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpnZW1fb2JqKQo+ICAgCQkJZGV2X3ByaXYtPm1tLmludGVycnVwdGlibGUgPSB3YXNfaW50 ZXJydXB0aWJsZTsKPiAgIAkJfQo+ICAgCX0KPiArCUdFTV9CVUdfT04ob2JqLT5iaW5kX2NvdW50 KTsKPgo+ICAgCS8qIFN0b2xlbiBvYmplY3RzIGRvbid0IGhvbGQgYSByZWYsIGJ1dCBkbyBob2xk IHBpbiBjb3VudC4gRml4IHRoYXQgdXAKPiAgIAkgKiBiZWZvcmUgcHJvZ3Jlc3NpbmcuICovCj4g QEAgLTQ4NTEsMTcgKzQ4NTYsNiBAQCBib29sIGk5MTVfZ2VtX29ial9nZ3R0X2JvdW5kX3ZpZXco c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gICAJcmV0dXJuIGZhbHNlOwo+ICAgfQo+ Cj4gLWJvb2wgaTkxNV9nZW1fb2JqX2JvdW5kX2FueShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqbykKPiAtewo+IC0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gLQo+IC0JbGlzdF9mb3JfZWFj aF9lbnRyeSh2bWEsICZvLT52bWFfbGlzdCwgb2JqX2xpbmspCj4gLQkJaWYgKGRybV9tbV9ub2Rl X2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiAtCQkJcmV0dXJuIHRydWU7Cj4gLQo+IC0JcmV0dXJu IGZhbHNlOwo+IC19Cj4gLQo+ICAgdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfZ2d0dF9zaXpl KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJp bmtlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+IGluZGV4 IGU5M2E4MzdjZjJhMS4uNzI1YThjODk0NTE3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9zaHJpbmtlci5jCj4gQEAgLTQ4LDIxICs0OCw2IEBAIHN0YXRpYyBib29sIG11dGV4 X2lzX2xvY2tlZF9ieShzdHJ1Y3QgbXV0ZXggKm11dGV4LCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRh c2spCj4gICAjZW5kaWYKPiAgIH0KPgo+IC1zdGF0aWMgaW50IG51bV92bWFfYm91bmQoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAtewo+IC0Jc3RydWN0IGk5MTVfdm1hICp2bWE7 Cj4gLQlpbnQgY291bnQgPSAwOwo+IC0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2Jq LT52bWFfbGlzdCwgb2JqX2xpbmspIHsKPiAtCQlpZiAoZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2 bWEtPm5vZGUpKQo+IC0JCQljb3VudCsrOwo+IC0JCWlmICh2bWEtPnBpbl9jb3VudCkKPiAtCQkJ Y291bnQrKzsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gY291bnQ7Cj4gLX0KPiAtCj4gICBzdGF0aWMg Ym9vbCBzd2FwX2F2YWlsYWJsZSh2b2lkKQo+ICAgewo+ICAgCXJldHVybiBnZXRfbnJfc3dhcF9w YWdlcygpID4gMDsKPiBAQCAtODIsNyArNjcsNyBAQCBzdGF0aWMgYm9vbCBjYW5fcmVsZWFzZV9w YWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCSAqIHRvIHRoZSBHUFUs IHNpbXBseSB1bmJpbmRpbmcgZnJvbSB0aGUgR1BVIGlzIG5vdCBnb2luZyB0byBzdWNjZWVkCj4g ICAJICogaW4gcmVsZWFzaW5nIG91ciBwaW4gY291bnQgb24gdGhlIHBhZ2VzIHRoZW1zZWx2ZXMu Cj4gICAJICovCj4gLQlpZiAob2JqLT5wYWdlc19waW5fY291bnQgIT0gbnVtX3ZtYV9ib3VuZChv YmopKQo+ICsJaWYgKG9iai0+cGFnZXNfcGluX2NvdW50ICE9IG9iai0+YmluZF9jb3VudCkKCldv dWxkIHRoaXMgYmUgY2xlYXJlciBhcyBvYmotPnBhZ2VzX3Bpbl9jb3VudCA+IG9iai0+YmluZF9j b3VudCA/Cgo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4KPiAgIAkvKiBXZSBjYW4gb25seSByZXR1cm4g cGh5c2ljYWwgcGFnZXMgdG8gdGhlIHN5c3RlbSBpZiB3ZSBjYW4gZWl0aGVyCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBpbmRleCA5YThjYzhjNTEwNzcuLjJjMzIxYzhk ZjdjMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4u Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gQEAgLTcw OCw2ICs3MDgsNyBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2Nh dGVkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJdm1hLT5ib3VuZCB8PSBHTE9CQUxfQklO RDsKPiAgIAlfX2k5MTVfdm1hX3NldF9tYXBfYW5kX2ZlbmNlYWJsZSh2bWEpOwo+ICAgCWxpc3Rf YWRkX3RhaWwoJnZtYS0+dm1fbGluaywgJmdndHQtPmJhc2UuaW5hY3RpdmVfbGlzdCk7Cj4gKwlv YmotPmJpbmRfY291bnQrKzsKPgo+ICAgCWxpc3RfYWRkX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3Qs ICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdl cyhvYmopOwo+CgpMb29rcyBmaW5lIHRvIG1lLgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGlu IDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=