From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 6/6] drm/i915: Lazily unbind vma on close Date: Mon, 23 Apr 2018 14:08:35 +0100 Message-ID: <48c0245f-0baf-5d01-858d-dfa83c891611@linux.intel.com> References: <20180423101400.27418-1-chris@chris-wilson.co.uk> <20180423101400.27418-6-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF9096E1C7 for ; Mon, 23 Apr 2018 13:08:38 +0000 (UTC) In-Reply-To: <20180423101400.27418-6-chris@chris-wilson.co.uk> Content-Language: en-GB 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 Ck9uIDIzLzA0LzIwMTggMTE6MTQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBXaGVuIHVzZXJzcGFj ZSBpcyBwYXNzaW5nIGFyb3VuZCBzd2FwYnVmZmVycyB1c2luZyBEUkksIHdlIGZyZXF1ZW50bHkK PiBoYXZlIHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBzYW1lIG9iamVjdCBpbiB0aGUgZm9yZWlnbiBh ZGRyZXNzIHNwYWNlLgo+IFRoaXMgc2hvd3MgaXRzZWxmIGFzIHRoZSBzYW1lIG9iamVjdCBiZWlu ZyByZWJvdW5kIGF0IHJvdWdobHkgMzBmcHMKPiAod2l0aCBhIHNlY29uZCBvYmplY3QgYWxzbyBi ZWluZyByZWJvdW5kIGF0IDMwZnBzKSwgd2hpY2ggaW52b2x2ZXMgdXMKPiBoYXZpbmcgdG8gcmV3 cml0ZSB0aGUgcGFnZSB0YWJsZXMgYW5kIG1haW50YWluIHRoZSBkcm1fbW0gcmFuZ2UgbWFuYWdl cgo+IGV2ZXJ5IHRpbWUuCj4gCj4gSG93ZXZlciwgc2luY2UgdGhlIG9iamVjdCBzdGlsbCBleGlz dHMgYW5kIGl0IGlzIG9ubHkgdGhlIGxvY2FsIGhhbmRsZQo+IHRoYXQgZGlzYXBwZWFycywgaWYg d2UgYXJlIGxhenkgYW5kIGRvIG5vdCB1bmJpbmQgdGhlIFZNQSBpbW1lZGlhdGVseQo+IHdoZW4g dGhlIGxvY2FsIHVzZXIgY2xvc2VzIHRoZSBvYmplY3QgYnV0IGRlZmVyIGl0IHVudGlsIHRoZSBH UFUgaXMKPiBpZGxlLCB0aGVuIHdlIGNhbiByZXVzZSB0aGUgc2FtZSBWTUEgYmluZGluZy4gV2Ug c3RpbGwgaGF2ZSB0byBiZQo+IGNhcmVmdWwgdG8gbWFyayB0aGUgaGFuZGxlIGFuZCBsb29rdXAg dGFibGVzIGFzIGNsb3NlZCB0byBtYWludGFpbiB0aGUKPiB1QUJJLCBqdXN0IGFsbG93aW5nIHRo ZSB1bmRlcmx5aW5nIFZNQSB0byBiZSByZXN1cnJlY3RlZCBpZiB0aGUgdXNlciBpcwo+IGFibGUg dG8gYWNjZXNzIHRoZSBzYW1lIG9iamVjdCBmcm9tIHRoZSBzYW1lIGNvbnRleHQgYWdhaW4uCj4g Cj4gSWYgdGhlIG9iamVjdCBpdHNlbGYgaXMgZGVzdHJveWVkIChuZWl0aGVyIHVzZXJzcGFjZSBr ZWVwaW5nIGEgaGFuZGxlIHRvCj4gaXQpLCB0aGUgVk1BIHdpbGwgYmUgcmVhcGVkIGltbWVkaWF0 ZWx5IGFzIHVzdWFsLgo+IAo+IEluIHRoZSBmdXR1cmUsIHRoaXMgd2lsbCBiZSBldmVuIG1vcmUg dXNlZnVsIGFzIGluc3RhbnRpYXRpbmcgYSBuZXcgVk1BCj4gZm9yIHVzZSBvbiB0aGUgR1BVIHdp bGwgYmVjb21lIGhlYXZpZXIuIEEgbnVpc2FuY2UgaW5kZWVkLCBzbyBuaXAgaXQgaW4KPiB0aGUg YnVkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+ IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwg IDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwg IDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8 ICA1ICsrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgICAg IHwgMTQgKysrKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAgICAg ICAgICAgIHwgMzkgKysrKysrKysrKysrLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV92bWEuaCAgICAgICAgICAgICAgIHwgIDUgKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jICAgfCAgMiArLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgIHwgIDEgKwo+ICAgOCBmaWxlcyBjaGFuZ2VkLCA1 MSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBpbmRleCA4OWNiNzRjMzBhMDAuLmIyZjc4ZGE5YmMzYyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IEBAIC0yMDYwLDYgKzIwNjAsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSB7Cj4gICAKPiAgIAkJc3RydWN0IGxpc3RfaGVhZCB0aW1lbGluZXM7Cj4gICAJCXN0cnVjdCBs aXN0X2hlYWQgbGl2ZV9yaW5nczsKPiArCQlzdHJ1Y3QgbGlzdF9oZWFkIGNsb3NlZF92bWE7Cj4g ICAJCXUzMiBhY3RpdmVfcmVxdWVzdHM7Cj4gICAKPiAgIAkJLyoqCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gaW5kZXggZjA3NTU2NjkzY2ZlLi40ZmI3ZDQ1YjViNWQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiBAQCAtMTY1LDYgKzE2NSw3IEBAIHN0YXRpYyB1MzIgX19pOTE1X2dl bV9wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCWk5MTVfdGltZWxpbmVz X3BhcmsoaTkxNSk7Cj4gICAKPiAgIAlpOTE1X3BtdV9ndF9wYXJrZWQoaTkxNSk7Cj4gKwlpOTE1 X3ZtYV9wYXJrZWQoaTkxNSk7Cj4gICAKPiAgIAlpOTE1LT5ndC5hd2FrZSA9IGZhbHNlOwo+ICAg Cj4gQEAgLTQ3OTIsNyArNDc5Myw3IEBAIHN0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmpl Y3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkJCQkgJm9iai0+dm1hX2xp c3QsIG9ial9saW5rKSB7Cj4gICAJCQlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEp KTsKPiAgIAkJCXZtYS0+ZmxhZ3MgJj0gfkk5MTVfVk1BX1BJTl9NQVNLOwo+IC0JCQlpOTE1X3Zt YV9jbG9zZSh2bWEpOwo+ICsJCQlfX2k5MTVfdm1hX2ZpbmFsX2Nsb3NlKHZtYSk7Cj4gICAJCX0K PiAgIAkJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmb2JqLT52bWFfbGlzdCkpOwo+ICAgCQlHRU1f QlVHX09OKCFSQl9FTVBUWV9ST09UKCZvYmotPnZtYV90cmVlKSk7Cj4gQEAgLTU1OTUsNiArNTU5 Niw3IEBAIGludCBpOTE1X2dlbV9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgIAo+ICAgCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Z3QubGl2ZV9yaW5n cyk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5ndC50aW1lbGluZXMpOwo+ICsJSU5J VF9MSVNUX0hFQUQoJmRldl9wcml2LT5ndC5jbG9zZWRfdm1hKTsKPiAgIAo+ICAgCWk5MTVfZ2Vt X2luaXRfX21tKGRldl9wcml2KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMKPiBpbmRleCBjNzRmNWRmM2ZiNWEuLmU1YjgzNzFlMzBkZSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBAQCAtNzY4LDYg Kzc2OCwxMSBAQCBzdGF0aWMgaW50IGViX2xvb2t1cF92bWFzKHN0cnVjdCBpOTE1X2V4ZWNidWZm ZXIgKmViKQo+ICAgCQlsdXQtPmN0eCA9IGViLT5jdHg7Cj4gICAJCWx1dC0+aGFuZGxlID0gaGFu ZGxlOwo+ICAgCj4gKwkJaWYgKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9DTE9TRUQpIHsKPiArCQkJ dm1hLT5mbGFncyAmPSB+STkxNV9WTUFfQ0xPU0VEOwo+ICsJCQlsaXN0X2RlbCgmdm1hLT5jbG9z ZWRfbGluayk7Cj4gKwkJfQoKRmVlbHMgbGlrZSBpOTE1X3ZtYS5jIHNob3VsZCBjb250YWluIGNv ZGUgZG8gZGVhbCB3aXRoIHRoaXMgbGV2ZWwgb2YgCm9wZXJhdGlvbi4gTm90IHN1cmUgLSBpOTE1 X3ZtYV9waW4gcGVyaGFwcywgb3Igc29tZXdoZXJlIGVsc2UsIG9yIApzb21ld2hlcmUgbmV3IHll dC4gaTkxNV92bWFfcmVvcGVuIG1heWJlPwoKPiArCj4gICBhZGRfdm1hOgo+ICAgCQllcnIgPSBl Yl9hZGRfdm1hKGViLCBpLCB2bWEpOwo+ICAgCQlpZiAodW5saWtlbHkoZXJyKSkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IGU5ZDgyODMyNGY2Ny4uYzE1ODdkODNmZDE5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMjIxOCw2ICsyMjE4 LDEyIEBAIGk5MTVfcHBndHRfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgIH0KPiAgIAo+ICAgdm9pZCBpOTE1X3BwZ3R0X2Nsb3NlKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtKQo+ICt7Cj4gKwlHRU1fQlVHX09OKHZtLT5jbG9zZWQpOwo+ICsJdm0tPmNs b3NlZCA9IHRydWU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHBwZ3R0X2Nsb3NlX3ZtYShzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAgIHsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkICpw aGFzZXNbXSA9IHsKPiAgIAkJJnZtLT5hY3RpdmVfbGlzdCwKPiBAQCAtMjIyNiwxNSArMjIzMiwx MiBAQCB2b2lkIGk5MTVfcHBndHRfY2xvc2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0p Cj4gICAJCU5VTEwsCj4gICAJfSwgKipwaGFzZTsKPiAgIAo+IC0JR0VNX0JVR19PTih2bS0+Y2xv c2VkKTsKPiAgIAl2bS0+Y2xvc2VkID0gdHJ1ZTsKPiAtCj4gICAJZm9yIChwaGFzZSA9IHBoYXNl czsgKnBoYXNlOyBwaGFzZSsrKSB7Cj4gICAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqdm47Cj4g ICAKPiAgIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sICpwaGFzZSwgdm1fbGlu aykKPiAtCQkJaWYgKCFpOTE1X3ZtYV9pc19jbG9zZWQodm1hKSkKPiAtCQkJCWk5MTVfdm1hX2Ns b3NlKHZtYSk7Cj4gKwkJCV9faTkxNV92bWFfZmluYWxfY2xvc2Uodm1hKTsKPiAgIAl9Cj4gICB9 Cj4gICAKPiBAQCAtMjI0NSw3ICsyMjQ4LDggQEAgdm9pZCBpOTE1X3BwZ3R0X3JlbGVhc2Uoc3Ry dWN0IGtyZWYgKmtyZWYpCj4gICAKPiAgIAl0cmFjZV9pOTE1X3BwZ3R0X3JlbGVhc2UoJnBwZ3R0 LT5iYXNlKTsKPiAgIAo+IC0JLyogdm1hcyBzaG91bGQgYWxyZWFkeSBiZSB1bmJvdW5kIGFuZCBk ZXN0cm95ZWQgKi8KPiArCXBwZ3R0X2Nsb3NlX3ZtYSgmcHBndHQtPmJhc2UpOwoKcHBndHRfZGVz dHJveV92bWFzPwoKPiArCj4gICAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcHBndHQtPmJhc2Uu YWN0aXZlX2xpc3QpKTsKPiAgIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZwcGd0dC0+YmFzZS5p bmFjdGl2ZV9saXN0KSk7Cj4gICAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcHBndHQtPmJhc2Uu dW5ib3VuZF9saXN0KSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCj4gaW5kZXggNGJkYTNiZDI5 YmY1Li41NzQ0ZjQ0MDlmMDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92bWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiBAQCAtNDYs OCArNDYsNiBAQCBpOTE1X3ZtYV9yZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZl LCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAo+ICAgCUdFTV9CVUdfT04oIWRybV9tbV9u b2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSk7Cj4gICAJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1f bGluaywgJnZtYS0+dm0tPmluYWN0aXZlX2xpc3QpOwo+IC0JaWYgKHVubGlrZWx5KGk5MTVfdm1h X2lzX2Nsb3NlZCh2bWEpICYmICFpOTE1X3ZtYV9pc19waW5uZWQodm1hKSkpCj4gLQkJV0FSTl9P TihpOTE1X3ZtYV91bmJpbmQodm1hKSk7Cj4gICAKPiAgIAlHRU1fQlVHX09OKCFpOTE1X2dlbV9v YmplY3RfaXNfYWN0aXZlKG9iaikpOwo+ICAgCWlmICgtLW9iai0+YWN0aXZlX2NvdW50KQo+IEBA IC0yMzIsNyArMjMwLDYgQEAgaTkxNV92bWFfaW5zdGFuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAgIAlpZiAoIXZtYSkKPiAgIAkJdm1hID0gdm1hX2NyZWF0ZShvYmosIHZt LCB2aWV3KTsKPiAgIAo+IC0JR0VNX0JVR19PTighSVNfRVJSKHZtYSkgJiYgaTkxNV92bWFfaXNf Y2xvc2VkKHZtYSkpOwo+ICAgCUdFTV9CVUdfT04oIUlTX0VSUih2bWEpICYmIGk5MTVfdm1hX2Nv bXBhcmUodm1hLCB2bSwgdmlldykpOwo+ICAgCUdFTV9CVUdfT04oIUlTX0VSUih2bWEpICYmIHZt YV9sb29rdXAob2JqLCB2bSwgdmlldykgIT0gdm1hKTsKPiAgIAlyZXR1cm4gdm1hOwo+IEBAIC02 ODksOCArNjg2LDYgQEAgc3RhdGljIHZvaWQgaTkxNV92bWFfZGVzdHJveShzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkKPiAgIAlpbnQgaTsKPiAgIAo+ICAgCUdFTV9CVUdfT04odm1hLT5ub2RlLmFsbG9j YXRlZCk7Cj4gLQlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKTsKPiAtCUdFTV9C VUdfT04oIWk5MTVfdm1hX2lzX2Nsb3NlZCh2bWEpKTsKPiAgIAlHRU1fQlVHX09OKHZtYS0+ZmVu Y2UpOwo+ICAgCj4gICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodm1hLT5sYXN0X3JlYWQp OyBpKyspCj4gQEAgLTY5OSw2ICs2OTQsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3ZtYV9kZXN0cm95 KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgCj4gICAJbGlzdF9kZWwoJnZtYS0+b2JqX2xpbmsp Owo+ICAgCWxpc3RfZGVsKCZ2bWEtPnZtX2xpbmspOwo+ICsJcmJfZXJhc2UoJnZtYS0+b2JqX25v ZGUsICZ2bWEtPm9iai0+dm1hX3RyZWUpOwo+ICAgCj4gICAJaWYgKCFpOTE1X3ZtYV9pc19nZ3R0 KHZtYSkpCj4gICAJCWk5MTVfcHBndHRfcHV0KGk5MTVfdm1fdG9fcHBndHQodm1hLT52bSkpOwo+ IEBAIC03MDgsMTMgKzcwNCwzNCBAQCBzdGF0aWMgdm9pZCBpOTE1X3ZtYV9kZXN0cm95KHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQo+ICAgCj4gICB2b2lkIGk5MTVfdm1hX2Nsb3NlKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQo+ICAgewo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm1hLT52bS0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICAgCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfY2xvc2Vk KHZtYSkpOwo+ICAgCXZtYS0+ZmxhZ3MgfD0gSTkxNV9WTUFfQ0xPU0VEOwo+ICAgCj4gLQlyYl9l cmFzZSgmdm1hLT5vYmpfbm9kZSwgJnZtYS0+b2JqLT52bWFfdHJlZSk7Cj4gKwlsaXN0X2FkZF90 YWlsKCZ2bWEtPmNsb3NlZF9saW5rLCAmdm1hLT52bS0+aTkxNS0+Z3QuY2xvc2VkX3ZtYSk7Cj4g K30KPiAgIAo+IC0JaWYgKCFpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSAmJiAhaTkxNV92bWFfaXNf cGlubmVkKHZtYSkpCj4gLQkJV0FSTl9PTihpOTE1X3ZtYV91bmJpbmQodm1hKSk7Cj4gK3ZvaWQg X19pOTE1X3ZtYV9maW5hbF9jbG9zZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKCl9faTkxNV92bWFf ZmluYWxfZGVzdHJveT8gU2luY2UgaXQgaXMgbm90IGRlYWxpbmcgb25seSB3aXRoIGNsb3NlZCB2 bWFzLgoKT3IgZXZlbiB0aGlzIG9uZSBjb3VsZCBiZSBpOTE1X3ZtYV9kZXN0cm95LCBhbmQgY3Vy cmVudCBpOTE1X3ZtYV9kZXN0cm95IApyZW5hbWVkIF9faTkxNV92bWFfZGVzdHJveSB0byBmb2xs b3cgdGhlIHByYWN0aWNlIG9mICJhbG1vc3QiIHZzICJyZWFsIiAKZGVzdHJveT8gSXQgd291bGQg YmUgdGhlIG9ubHkgY2FsbGVyLCBzbyBpbiB0aGlzIGNhc2UgaXQgd291bGQgYmUgbW9yZSAKbGlr ZSBoaWdoZXIgbGV2ZWwgZGVzdHJveSBjYWxscyBsb3dlciBsZXZlbCBkZXN0cm95IHNvIHN0aWxs IGZpdHMuCgo+ICt7Cj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ2bWEtPnZtLT5pOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiArCj4gKwlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEp KTsKPiArCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfcGlubmVkKHZtYSkpOwo+ICsKPiArCWlmIChp OTE1X3ZtYV9pc19jbG9zZWQodm1hKSkKPiArCQlsaXN0X2RlbCgmdm1hLT5jbG9zZWRfbGluayk7 Cj4gKwo+ICsJV0FSTl9PTihpOTE1X3ZtYV91bmJpbmQodm1hKSk7Cj4gKwlpOTE1X3ZtYV9kZXN0 cm95KHZtYSk7Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV92bWFfcGFya2VkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKm5leHQ7Cj4g Kwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgbmV4dCwgJmk5MTUtPmd0LmNsb3Nl ZF92bWEsIGNsb3NlZF9saW5rKQo+ICsJCV9faTkxNV92bWFfZmluYWxfY2xvc2Uodm1hKTsKClRo ZW4gaW4gbXkgc2NoZW1lIHRoaXMgd291bGQgY2FsbCBpOTE1X3ZtYV9kZXN0cm95LgoKQnR3IGFz c2VydCB0aGF0IHRoZXJlIGFyZSBubyAidW5jbG9zZWQiIHZtYXMgb24gdGhpcyBsaXN0IGF0IHRo aXMgcG9pbnQ/Cgo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBfX2k5MTVfdm1hX2lvdW5tYXAo c3RydWN0IGk5MTVfdm1hICp2bWEpCj4gQEAgLTgwNCw3ICs4MjEsNyBAQCBpbnQgaTkxNV92bWFf dW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgCQlyZXR1cm4gLUVCVVNZOwo+ICAgCj4g ICAJaWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCj4gLQkJZ290byBkZXN0 cm95Owo+ICsJCXJldHVybiAwOwo+ICAgCj4gICAJR0VNX0JVR19PTihvYmotPmJpbmRfY291bnQg PT0gMCk7Cj4gICAJR0VNX0JVR19PTighaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMo b2JqKSk7Cj4gQEAgLTg0MSwxMCArODU4LDYgQEAgaW50IGk5MTVfdm1hX3VuYmluZChzdHJ1Y3Qg aTkxNV92bWEgKnZtYSkKPiAgIAo+ICAgCWk5MTVfdm1hX3JlbW92ZSh2bWEpOwo+ICAgCj4gLWRl c3Ryb3k6Cj4gLQlpZiAodW5saWtlbHkoaTkxNV92bWFfaXNfY2xvc2VkKHZtYSkpKQo+IC0JCWk5 MTVfdm1hX2Rlc3Ryb3kodm1hKTsKPiAtCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdm1hLmgKPiBpbmRleCA4YzUwMjIwOTU0MTguLjBhOTc5MDU1NWQ4NCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAo+IEBAIC0xMTksNiArMTE5LDggQEAgc3RydWN0IGk5 MTVfdm1hIHsKPiAgIAkvKiogVGhpcyB2bWEncyBwbGFjZSBpbiB0aGUgZXZpY3Rpb24gbGlzdCAq Lwo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgZXZpY3RfbGluazsKPiAgIAo+ICsJc3RydWN0IGxpc3Rf aGVhZCBjbG9zZWRfbGluazsKPiArCj4gICAJLyoqCj4gICAJICogVXNlZCBmb3IgcGVyZm9ybWlu ZyByZWxvY2F0aW9ucyBkdXJpbmcgZXhlY2J1ZmZlciBpbnNlcnRpb24uCj4gICAJICovCj4gQEAg LTI4NSw2ICsyODcsNyBAQCB2b2lkIGk5MTVfdm1hX3Jldm9rZV9tbWFwKHN0cnVjdCBpOTE1X3Zt YSAqdm1hKTsKPiAgIGludCBfX211c3RfY2hlY2sgaTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKTsKPiAgIHZvaWQgaTkxNV92bWFfdW5saW5rX2N0eChzdHJ1Y3QgaTkxNV92bWEg KnZtYSk7Cj4gICB2b2lkIGk5MTVfdm1hX2Nsb3NlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPiAr dm9pZCBfX2k5MTVfdm1hX2ZpbmFsX2Nsb3NlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPiAgIAo+ ICAgaW50IF9faTkxNV92bWFfZG9fcGluKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAgCQkgICAg ICB1NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0IGZsYWdzKTsKPiBAQCAtNDA4LDYgKzQxMSw4 IEBAIGk5MTVfdm1hX3VucGluX2ZlbmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgCQlfX2k5 MTVfdm1hX3VucGluX2ZlbmNlKHZtYSk7Cj4gICB9Cj4gICAKPiArdm9pZCBpOTE1X3ZtYV9wYXJr ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICsKPiAgICNkZWZpbmUgZm9yX2Vh Y2hfdW50aWwoY29uZCkgaWYgKGNvbmQpIGJyZWFrOyBlbHNlCj4gICAKPiAgIC8qKgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IGluZGV4IDA1YmJlZjM2 M2ZmZi4uOGZiMGI5ZjQzNGM5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaHVnZV9wYWdlcy5jCj4gQEAgLTEwOTEsNyArMTA5MSw3IEBAIHN0YXRpYyBpbnQgX19pZ3Rf d3JpdGVfaHVnZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgb3V0X3ZtYV91bnBp bjoKPiAgIAlpOTE1X3ZtYV91bnBpbih2bWEpOwo+ICAgb3V0X3ZtYV9jbG9zZToKPiAtCWk5MTVf dm1hX2Nsb3NlKHZtYSk7Cj4gKwlfX2k5MTVfdm1hX2ZpbmFsX2Nsb3NlKHZtYSk7Cj4gICAKPiAg IAlyZXR1cm4gZXJyOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19nZW1fZGV2aWNlLmMKPiBpbmRleCBhYjZjZDBlMTZkOWIuLmM1MGQ5ZmU3NjQ2NSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMKPiBAQCAtMjI2LDYgKzIyNiw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICptb2Nr X2dlbV9kZXZpY2Uodm9pZCkKPiAgIAo+ICAgCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5ndC5saXZl X3JpbmdzKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmaTkxNS0+Z3QudGltZWxpbmVzKTsKPiArCUlO SVRfTElTVF9IRUFEKCZpOTE1LT5ndC5jbG9zZWRfdm1hKTsKPiAgIAo+ICAgCW11dGV4X2xvY2so Jmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCW1vY2tfaW5pdF9nZ3R0KGk5MTUpOwo+IAoK TG9va3MgYmVsaWV2YWJsZS4gSSdsbCBoYXZlIGFub3RoZXIgcGFzcyBhZnRlciBhIGJyZWFrIGFu ZCBhbHNvIHdpbGwgc2VlIAp3aGF0IENJIHNheXMuIDopCgpSZWdhcmRzLAoKVHZydGtvCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=