From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/3] drm/i915: Use a task to cancel the userptr on invalidate_range Date: Wed, 01 Jul 2015 13:56:30 +0100 Message-ID: <5593E37E.4010702@linux.intel.com> References: <1435676470-18125-1-git-send-email-michal.winiarski@intel.com> <1435683333-17844-1-git-send-email-chris@chris-wilson.co.uk> <1435683333-17844-3-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 91FF76EB0C for ; Wed, 1 Jul 2015 05:56:42 -0700 (PDT) In-Reply-To: <1435683333-17844-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA2LzMwLzIwMTUgMDU6NTUgUE0sIENocmlzIFdpbHNvbiB3cm90ZToKPiBXaGlsc3QgZGlz Y3Vzc2luZyBwb3NzaWJsZSB3YXlzIHRvIHRyaWdnZXIgYW4gaW52YWxpZGF0ZV9yYW5nZSBvbiBh Cj4gdXNlcnB0ciB3aXRoIGFuIGFsaWFzZWQgR0dUVCBtbWFwcGluZyAoYW5kIHNvIGNhdXNlIGEg c3RydWN0X211dGV4Cj4gZGVhZGxvY2spLCB0aGUgY29uY2x1c2lvbiBpcyB0aGF0IHdlIGNhbiwg YW5kIHdlIG11c3QsIHByZXZlbnQgYW55Cj4gcG9zc2libGUgZGVhZGxvY2sgYnkgYXZvaWRpbmcg dGFraW5nIHRoZSBtdXRleCBhdCBhbGwgZHVyaW5nCj4gaW52YWxpZGF0ZV9yYW5nZS4gVGhpcyBo YXMgbnVtZXJvdXMgYWR2YW50YWdlcyBhbGwgb2Ygd2hpY2ggc3RlbSBmcm9tCj4gYXZvaWQgdGhl IHNsZWVwaW5nIGZ1bmN0aW9uIGZyb20gaW5zaWRlIHRoZSB1bmtub3duIGNvbnRleHQuIEluCj4g cGFydGljdWxhciwgaXQgc2ltcGxpZmllcyB0aGUgaW52YWxpZGF0ZV9yYW5nZSBiZWNhdXNlIHdl IG5vIGxvbmdlcgo+IGhhdmUgdG8ganVnZ2xlIHRoZSBzcGlubG9jay9tdXRleCBhbmQgY2FuIGp1 c3QgaG9sZCB0aGUgc3BpbmxvY2sKPiBmb3IgdGhlIGVudGlyZSB3YWxrLiBUbyBjb21wZW5zYXRl LCB3ZSBoYXZlIHRvIG1ha2UgZ2V0X3BhZ2VzIGEgYml0IG1vcmUKPiBjb21wbGljYXRlZCBpbiBv cmRlciB0byBzZXJpYWxpc2Ugd2l0aCBhIHBlbmRpbmcgY2FuY2VsX3VzZXJwdHIgd29ya2VyLgo+ IEFzIHdlIGhvbGQgdGhlIHN0cnVjdF9tdXRleCwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIHJl dHVybiBFQUdBSU4gYW5kCj4gaG9wZSB0aGF0IHRoZSB3b3JrZXIgaXMgdGhlbiBmbHVzaGVkIGJl Zm9yZSB3ZSByZXRyeSBhZnRlciByZWFjcXVpcmluZwo+IHRoZSBzdHJ1Y3RfbXV0ZXguCj4KPiBU aGUgaW1wb3J0YW50IGNhdmVhdCBpcyB0aGF0IHRoZSBpbnZhbGlkYXRlX3JhbmdlIGl0c2VsZiBp cyBubyBsb25nZXIKPiBzeW5jaHJvbm91cy4gVGhlcmUgZXhpc3RzIGEgc21hbGwgYnV0IGRlZmlu aXRlIHBlcmlvZCBpbiB0aW1lIGluIHdoaWNoCj4gdGhlIG9sZCBQVEUgcmVtYWluIGFjY2Vzc2li bGUgdmlhIHRoZSBHUFUuIE5vdGUgaG93ZXZlciB0aGF0IHRoZQo+IHBoeXNpY2FsIHBhZ2VzIHRo ZW1zZWx2ZXMgYXJlIG5vdCBpbnZhbGlkYXRlZCBieSB0aGUgbW11X25vdGlmaWVyLCBqdXN0Cj4g dGhlIENQVSB2aWV3IG9mIHRoZSBhZGRyZXNzIHNwYWNlLiBUaGUgaW1wYWN0IHNob3VsZCBiZSBs aW1pdGVkIHRvIGEKPiBkZWxheSBpbiBwYWdlcyBiZWluZyBmbHVzaGVkLCByYXRoZXIgdGhhbiBh IHBvc3NpYmlsaXR5IG9mIHdyaXRpbmcgdG8KPiB0aGUgd3JvbmcgcGFnZXMuCgpJOTE1X1VTRVJQ VFJfU09NRVdIQVRfU1lOQ0hST05JWkVEIDovCgpCZWNhdXNlICJzbWFsbCBidXQgZGVmaW5pdGUi IG1pZ2h0IGJlIG5vdCB0aGF0IHNtYWxsIGluIHNvbWUgCmNpcmN1bXN0YW5jZXMuIEFsdGhvdWdo Li4gaXQgaXMgbm90IGxpa2UgY3VycmVudCBzeW5jaHJvbm91cyBiZWhhdmlvciAKcmVhbGx5IGlz IHNvIHNpbmNlIGEpIEdQVSBhY3Rpdml0eSBkb2Vzbid0IHN0b3AgcmlnaHQgYXdheSBvbiAKY2Fu Y2VsbGF0aW9uIGFuZCBiKSBpdCBpcyBhICJkb24ndCBkbyB0aGF0IiBzaXR1YXRpb24gYW55d2F5 LiBTbyBmcm9tIAp0aGF0IGFuZ2xlIG1heWJlIGl0IGlzIG5vdCB0aGF0IGJhZCwgYW5kIGFkdmFu dGFnZXMgZnJvbSB5b3VyIGZpcnN0IApjb21taXQgcGFyYWdyYXBoIGFyZSBkZWZpbml0ZWx5IHJl YWwuCgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgoKT2sgb2sgOikKCj4gQ2M6IE1pY2hhxYIgV2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tp QGludGVsLmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNv bT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyB8IDE0 MiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDU2 IGluc2VydGlvbnMoKyksIDg2IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3VzZXJwdHIuYwo+IGluZGV4IGQzMjEzZmRlZmFmYy4uOTA1NmFhNWIwMGYzIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwo+IEBAIC01MCw3ICs1MCw2 IEBAIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciB7Cj4gICAJc3RydWN0IG1tdV9ub3RpZmllciBt bjsKPiAgIAlzdHJ1Y3QgcmJfcm9vdCBvYmplY3RzOwo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgbGlu ZWFyOwo+IC0JdW5zaWduZWQgbG9uZyBzZXJpYWw7Cj4gICAJYm9vbCBoYXNfbGluZWFyOwo+ICAg fTsKPgo+IEBAIC01OSwxNCArNTgsMTYgQEAgc3RydWN0IGk5MTVfbW11X29iamVjdCB7Cj4gICAJ c3RydWN0IGludGVydmFsX3RyZWVfbm9kZSBpdDsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7 Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiArCXN0cnVjdCB3b3JrX3N0 cnVjdCB3b3JrOwo+ICAgCWJvb2wgYWN0aXZlOwo+ICAgCWJvb2wgaXNfbGluZWFyOwo+ICAgfTsK Pgo+IC1zdGF0aWMgdW5zaWduZWQgbG9uZyBjYW5jZWxfdXNlcnB0cihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQo+ICtzdGF0aWMgdm9pZCBfX2NhbmNlbF91c2VycHRyX193b3JrZXIo c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAgewo+ICsJc3RydWN0IGk5MTVfbW11X29iamVj dCAqbW8gPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCptbyksIHdvcmspOwo+ICsJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IG1vLT5vYmo7Cj4gICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Cj4gLQl1bnNpZ25lZCBsb25nIGVuZDsKPgo+ICAgCW11 dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgIAkvKiBDYW5jZWwgYW55IGFjdGl2ZSB3 b3JrZXIgYW5kIGZvcmNlIHVzIHRvIHJlLWV2YWx1YXRlIGd1cCAqLwo+IEBAIC04OSw0NiArOTAs MjYgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgY2FuY2VsX3VzZXJwdHIoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKPiAgIAkJZGV2X3ByaXYtPm1tLmludGVycnVwdGlibGUgPSB3YXNf aW50ZXJydXB0aWJsZTsKPiAgIAl9Cj4KPiAtCWVuZCA9IG9iai0+dXNlcnB0ci5wdHIgKyBvYmot PmJhc2Uuc2l6ZTsKPiAtCj4gICAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFz ZSk7Cj4gICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQo+IC0JcmV0dXJu IGVuZDsKPiAgIH0KPgo+IC1zdGF0aWMgdm9pZCAqaW52YWxpZGF0ZV9yYW5nZV9fbGluZWFyKHN0 cnVjdCBpOTE1X21tdV9ub3RpZmllciAqbW4sCj4gLQkJCQkgICAgICBzdHJ1Y3QgbW1fc3RydWN0 ICptbSwKPiAtCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gLQkJCQkgICAgICB1bnNp Z25lZCBsb25nIGVuZCkKPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgY2FuY2VsX3VzZXJwdHIoc3Ry dWN0IGk5MTVfbW11X29iamVjdCAqbW8pCj4gICB7Cj4gLQlzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0 ICptbzsKPiAtCXVuc2lnbmVkIGxvbmcgc2VyaWFsOwo+IC0KPiAtcmVzdGFydDoKPiAtCXNlcmlh bCA9IG1uLT5zZXJpYWw7Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1vLCAmbW4tPmxpbmVhciwg bGluaykgewo+IC0JCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQo+IC0JCWlm IChtby0+aXQubGFzdCA8IHN0YXJ0IHx8IG1vLT5pdC5zdGFydCA+IGVuZCkKPiAtCQkJY29udGlu dWU7Cj4gLQo+IC0JCW9iaiA9IG1vLT5vYmo7Cj4gLQo+IC0JCWlmICghbW8tPmFjdGl2ZSB8fAo+ IC0JCSAgICAha3JlZl9nZXRfdW5sZXNzX3plcm8oJm9iai0+YmFzZS5yZWZjb3VudCkpCj4gLQkJ CWNvbnRpbnVlOwo+IC0KPiAtCQlzcGluX3VubG9jaygmbW4tPmxvY2spOwo+IC0KPiAtCQljYW5j ZWxfdXNlcnB0cihvYmopOwo+IC0KPiAtCQlzcGluX2xvY2soJm1uLT5sb2NrKTsKPiAtCQlpZiAo c2VyaWFsICE9IG1uLT5zZXJpYWwpCj4gLQkJCWdvdG8gcmVzdGFydDsKPiAtCX0KPiArCXVuc2ln bmVkIGxvbmcgZW5kID0gbW8tPm9iai0+dXNlcnB0ci5wdHIgKyBtby0+b2JqLT5iYXNlLnNpemU7 Cj4gKwo+ICsJLyogVGhlIG1tdV9vYmplY3QgaXMgcmVsZWFzZWQgbGF0ZSB3aGVuIGRlc3Ryb3lp bmcgdGhlCj4gKwkgKiBHRU0gb2JqZWN0IHNvIGl0IGlzIGVudGlyZWx5IHBvc3NpYmxlIHRvIGdh aW4gYQo+ICsJICogcmVmZXJlbmNlIG9uIGFuIG9iamVjdCBpbiB0aGUgcHJvY2VzcyBvZiBiZWlu ZyBmcmVlZAo+ICsJICogc2luY2Ugb3VyIHNlcmlhbGlzYXRpb24gaXMgdmlhIHRoZSBzcGlubG9j ayBhbmQgbm90Cj4gKwkgKiB0aGUgc3RydWN0X211dGV4IC0gYW5kIGNvbnNlcXVlbnRseSB1c2Ug aXQgYWZ0ZXIgaXQKPiArCSAqIGlzIGZyZWVkIGFuZCB0aGVuIGRvdWJsZSBmcmVlIGl0Lgo+ICsJ ICovCj4gKwlpZiAobW8tPmFjdGl2ZSAmJgo+ICsJICAgIGtyZWZfZ2V0X3VubGVzc196ZXJvKCZt by0+b2JqLT5iYXNlLnJlZmNvdW50KSkKPiArCQlzY2hlZHVsZV93b3JrKCZtby0+d29yayk7Cj4K PiAtCXJldHVybiBOVUxMOwo+ICsJcmV0dXJuIGVuZDsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQg aTkxNV9nZW1fdXNlcnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90 aWZpZXIgKl9tbiwKPiBAQCAtMTM2LDQ1ICsxMTcsMzIgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1f dXNlcnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9t biwKPiAgIAkJCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIHN0YXJ0LAo+ICAgCQkJCQkJICAgICAg IHVuc2lnbmVkIGxvbmcgZW5kKQo+ICAgewo+IC0Jc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICpt biA9IGNvbnRhaW5lcl9vZihfbW4sIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciwgbW4pOwo+IC0J c3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqaXQgPSBOVUxMOwo+IC0JdW5zaWduZWQgbG9uZyBu ZXh0ID0gc3RhcnQ7Cj4gLQl1bnNpZ25lZCBsb25nIHNlcmlhbCA9IDA7Cj4gLQo+IC0JZW5kLS07 IC8qIGludGVydmFsIHJhbmdlcyBhcmUgaW5jbHVzaXZlLCBidXQgaW52YWxpZGF0ZSByYW5nZSBp cyBleGNsdXNpdmUgKi8KPiAtCXdoaWxlIChuZXh0IDwgZW5kKSB7Cj4gLQkJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7Cj4gLQo+IC0JCXNwaW5fbG9jaygmbW4tPmxvY2sp Owo+IC0JCWlmIChtbi0+aGFzX2xpbmVhcikKPiAtCQkJaXQgPSBpbnZhbGlkYXRlX3JhbmdlX19s aW5lYXIobW4sIG1tLCBzdGFydCwgZW5kKTsKPiAtCQllbHNlIGlmIChzZXJpYWwgPT0gbW4tPnNl cmlhbCkKPiAtCQkJaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfbmV4dChpdCwgbmV4dCwgZW5kKTsK PiAtCQllbHNlCj4gLQkJCWl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZtbi0+b2JqZWN0 cywgc3RhcnQsIGVuZCk7Cj4gLQkJaWYgKGl0ICE9IE5VTEwpIHsKPiAtCQkJc3RydWN0IGk5MTVf bW11X29iamVjdCAqbW8gPQo+IC0JCQkJY29udGFpbmVyX29mKGl0LCBzdHJ1Y3QgaTkxNV9tbXVf b2JqZWN0LCBpdCk7Cj4gLQo+IC0JCQkvKiBUaGUgbW11X29iamVjdCBpcyByZWxlYXNlZCBsYXRl IHdoZW4gZGVzdHJveWluZyB0aGUKPiAtCQkJICogR0VNIG9iamVjdCBzbyBpdCBpcyBlbnRpcmVs eSBwb3NzaWJsZSB0byBnYWluIGEKPiAtCQkJICogcmVmZXJlbmNlIG9uIGFuIG9iamVjdCBpbiB0 aGUgcHJvY2VzcyBvZiBiZWluZyBmcmVlZAo+IC0JCQkgKiBzaW5jZSBvdXIgc2VyaWFsaXNhdGlv biBpcyB2aWEgdGhlIHNwaW5sb2NrIGFuZCBub3QKPiAtCQkJICogdGhlIHN0cnVjdF9tdXRleCAt IGFuZCBjb25zZXF1ZW50bHkgdXNlIGl0IGFmdGVyIGl0Cj4gLQkJCSAqIGlzIGZyZWVkIGFuZCB0 aGVuIGRvdWJsZSBmcmVlIGl0Lgo+IC0JCQkgKi8KPiAtCQkJaWYgKG1vLT5hY3RpdmUgJiYKPiAt CQkJICAgIGtyZWZfZ2V0X3VubGVzc196ZXJvKCZtby0+b2JqLT5iYXNlLnJlZmNvdW50KSkKPiAt CQkJCW9iaiA9IG1vLT5vYmo7Cj4gKwlzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKm1uID0KPiAr CQljb250YWluZXJfb2YoX21uLCBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIsIG1uKTsKPiArCXN0 cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vOwo+ICsKPiArCS8qIGludGVydmFsIHJhbmdlcyBhcmUg aW5jbHVzaXZlLCBidXQgaW52YWxpZGF0ZSByYW5nZSBpcyBleGNsdXNpdmUgKi8KPiArCWVuZC0t Owo+Cj4gLQkJCXNlcmlhbCA9IG1uLT5zZXJpYWw7Cj4gKwlzcGluX2xvY2soJm1uLT5sb2NrKTsK PiArCWlmIChtbi0+aGFzX2xpbmVhcikgewo+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnkobW8sICZt bi0+bGluZWFyLCBsaW5rKSB7Cj4gKwkJCWlmIChtby0+aXQubGFzdCA8IHN0YXJ0IHx8IG1vLT5p dC5zdGFydCA+IGVuZCkKPiArCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJY2FuY2VsX3VzZXJwdHIo bW8pOwo+ICAgCQl9Cj4gLQkJc3Bpbl91bmxvY2soJm1uLT5sb2NrKTsKPiAtCQlpZiAob2JqID09 IE5VTEwpCj4gLQkJCXJldHVybjsKPiArCX0gZWxzZSB7Cj4gKwkJc3RydWN0IGludGVydmFsX3Ry ZWVfbm9kZSAqaXQ7Cj4KPiAtCQluZXh0ID0gY2FuY2VsX3VzZXJwdHIob2JqKTsKPiArCQlpdCA9 IGludGVydmFsX3RyZWVfaXRlcl9maXJzdCgmbW4tPm9iamVjdHMsIHN0YXJ0LCBlbmQpOwo+ICsJ CXdoaWxlIChpdCkgewo+ICsJCQltbyA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGk5MTVfbW11 X29iamVjdCwgaXQpOwo+ICsJCQlzdGFydCA9IGNhbmNlbF91c2VycHRyKG1vKTsKPiArCQkJaXQg PSBpbnRlcnZhbF90cmVlX2l0ZXJfbmV4dChpdCwgc3RhcnQsIGVuZCk7Cj4gKwkJfQo+ICAgCX0K PiArCXNwaW5fdW5sb2NrKCZtbi0+bG9jayk7Cj4gICB9Cj4KPiAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgbW11X25vdGlmaWVyX29wcyBpOTE1X2dlbV91c2VycHRyX25vdGlmaWVyID0gewo+IEBAIC0x OTQsNyArMTYyLDYgQEAgaTkxNV9tbXVfbm90aWZpZXJfY3JlYXRlKHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tKQo+ICAgCXNwaW5fbG9ja19pbml0KCZtbi0+bG9jayk7Cj4gICAJbW4tPm1uLm9wcyA9ICZp OTE1X2dlbV91c2VycHRyX25vdGlmaWVyOwo+ICAgCW1uLT5vYmplY3RzID0gUkJfUk9PVDsKPiAt CW1uLT5zZXJpYWwgPSAxOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZtbi0+bGluZWFyKTsKPiAgIAlt bi0+aGFzX2xpbmVhciA9IGZhbHNlOwo+Cj4gQEAgLTIwOCwxMiArMTc1LDYgQEAgaTkxNV9tbXVf bm90aWZpZXJfY3JlYXRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQo+ICAgCXJldHVybiBtbjsKPiAg IH0KPgo+IC1zdGF0aWMgdm9pZCBfX2k5MTVfbW11X25vdGlmaWVyX3VwZGF0ZV9zZXJpYWwoc3Ry dWN0IGk5MTVfbW11X25vdGlmaWVyICptbikKPiAtewo+IC0JaWYgKCsrbW4tPnNlcmlhbCA9PSAw KQo+IC0JCW1uLT5zZXJpYWwgPSAxOwo+IC19Cj4gLQo+ICAgc3RhdGljIGludAo+ICAgaTkxNV9t bXVfbm90aWZpZXJfYWRkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCSAgICAgIHN0cnVj dCBpOTE1X21tdV9ub3RpZmllciAqbW4sCj4gQEAgLTI2MCwxMCArMjIxLDkgQEAgaTkxNV9tbXVf bm90aWZpZXJfYWRkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJfSBlbHNlCj4gICAJCWlu dGVydmFsX3RyZWVfaW5zZXJ0KCZtby0+aXQsICZtbi0+b2JqZWN0cyk7Cj4KPiAtCWlmIChyZXQg PT0gMCkgewo+ICsJaWYgKHJldCA9PSAwKQo+ICAgCQlsaXN0X2FkZCgmbW8tPmxpbmssICZtbi0+ bGluZWFyKTsKPiAtCQlfX2k5MTVfbW11X25vdGlmaWVyX3VwZGF0ZV9zZXJpYWwobW4pOwo+IC0J fQo+ICsKPiAgIAlzcGluX3VubG9jaygmbW4tPmxvY2spOwo+ICAgCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+Cj4gQEAgLTI5MSw3ICsyNTEsNiBAQCBpOTE1X21tdV9ub3RpZmll cl9kZWwoc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiwKPiAgIAkJbW4tPmhhc19saW5lYXIg PSBpOTE1X21tdV9ub3RpZmllcl9oYXNfbGluZWFyKG1uKTsKPiAgIAllbHNlCj4gICAJCWludGVy dmFsX3RyZWVfcmVtb3ZlKCZtby0+aXQsICZtbi0+b2JqZWN0cyk7Cj4gLQlfX2k5MTVfbW11X25v dGlmaWVyX3VwZGF0ZV9zZXJpYWwobW4pOwo+ICAgCXNwaW5fdW5sb2NrKCZtbi0+bG9jayk7Cj4g ICB9Cj4KPiBAQCAtMzU4LDYgKzMxNyw3IEBAIGk5MTVfZ2VtX3VzZXJwdHJfaW5pdF9fbW11X25v dGlmaWVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJbW8tPml0LnN0YXJ0 ID0gb2JqLT51c2VycHRyLnB0cjsKPiAgIAltby0+aXQubGFzdCA9IG1vLT5pdC5zdGFydCArIG9i ai0+YmFzZS5zaXplIC0gMTsKPiAgIAltby0+b2JqID0gb2JqOwo+ICsJSU5JVF9XT1JLKCZtby0+ d29yaywgX19jYW5jZWxfdXNlcnB0cl9fd29ya2VyKTsKPgo+ICAgCXJldCA9IGk5MTVfbW11X25v dGlmaWVyX2FkZChvYmotPmJhc2UuZGV2LCBtbiwgbW8pOwo+ICAgCWlmIChyZXQpIHsKPiBAQCAt NTQ2LDEwICs1MDYsMTIgQEAgZXJyOgo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4KPiAtc3RhdGlj IHZvaWQKPiArc3RhdGljIGludAo+ICAgX19pOTE1X2dlbV91c2VycHRyX3NldF9hY3RpdmUoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAkJCSAgICAgIGJvb2wgdmFsdWUpCj4g ICB7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gICAJLyogRHVyaW5nIG1tX2ludmFsaWRhdGVfcmFu Z2Ugd2UgbmVlZCB0byBjYW5jZWwgYW55IHVzZXJwdHIgdGhhdAo+ICAgCSAqIG92ZXJsYXBzIHRo ZSByYW5nZSBiZWluZyBpbnZhbGlkYXRlZC4gRG9pbmcgc28gcmVxdWlyZXMgdGhlCj4gICAJICog c3RydWN0X211dGV4LCBhbmQgdGhhdCByaXNrcyByZWN1cnNpb24uIEluIG9yZGVyIHRvIGNhdXNl Cj4gQEAgLTU2MiwxMiArNTI0LDIwIEBAIF9faTkxNV9nZW1fdXNlcnB0cl9zZXRfYWN0aXZlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJICovCj4gICAjaWYgZGVmaW5lZChD T05GSUdfTU1VX05PVElGSUVSKQo+ICAgCWlmIChvYmotPnVzZXJwdHIubW11X29iamVjdCA9PSBO VUxMKQo+IC0JCXJldHVybjsKPiArCQlyZXR1cm4gMDsKPgo+ICAgCXNwaW5fbG9jaygmb2JqLT51 c2VycHRyLm1tdV9vYmplY3QtPm1uLT5sb2NrKTsKPiAtCW9iai0+dXNlcnB0ci5tbXVfb2JqZWN0 LT5hY3RpdmUgPSB2YWx1ZTsKPiArCS8qIEluIG9yZGVyIHRvIHNlcmlhbGlzZSBnZXRfcGFnZXMg d2l0aCBhbiBvdXRzdGFuZGluZwo+ICsJICogY2FuY2VsX3VzZXJwdHIsIHdlIG11c3QgZHJvcCB0 aGUgc3RydWN0X211dGV4IGFuZCB0cnkgYWdhaW4uCj4gKwkgKi8KPiArCWlmICghdmFsdWUgfHwg IXdvcmtfcGVuZGluZygmb2JqLT51c2VycHRyLm1tdV9vYmplY3QtPndvcmspKQo+ICsJCW9iai0+ dXNlcnB0ci5tbXVfb2JqZWN0LT5hY3RpdmUgPSB2YWx1ZTsKPiArCWVsc2UKPiArCQlyZXQgPSAt RUFHQUlOOwo+ICAgCXNwaW5fdW5sb2NrKCZvYmotPnVzZXJwdHIubW11X29iamVjdC0+bW4tPmxv Y2spOwo+ICAgI2VuZGlmCj4gKwo+ICsJcmV0dXJuIHJldDsKPiAgIH0KCkkgdGhpbmsgaXQgd291 bGQgYmUgYSBsb3QgbW9yZSBlZmZpY2llbnQgaWYgd2UgZHJvcHBlZCB0aGUgbXV0ZXggaGVyZSAK YW5kIHdhaXRlZCBmb3IgdGhlIHdvcmtlciB0byBjb21wbGV0ZSBpbiBrZXJuZWwsIHJhdGhlciB0 aGFuIGxldHRpbmcgCnVzZXJzcGFjZSBoYW1tZXIgaXQgKHRoZSBtdXRleCkuIEVzcGVjaWFsbHkg aGF2aW5nIGV4cGVyaWVuY2VkIG9uZSAKd29ya2VyLXN0cnVjdG11dGV4IHN0YXJ2YXRpb24geWVz dGVyZGF5LgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=