From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [PATCH] drm/i915/userptr: Avoid struct_mutex recursion for mmu_invalidate_range_start Date: Mon, 29 Oct 2018 10:56:47 +0000 Message-ID: <154081060710.14741.13970763487646500708@skylake-alporthouse-com> References: <20181025124542.21830-1-chris@chris-wilson.co.uk> <20181025191650.GF21967@phenom.ffwll.local> <154049637049.5942.12617641226168472462@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3759489B69 for ; Mon, 29 Oct 2018 10:56:53 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx List-Id: intel-gfx@lists.freedesktop.org UXVvdGluZyBEYW5pZWwgVmV0dGVyICgyMDE4LTEwLTI2IDE0OjQ4OjA3KQo+IE9uIEZyaSwgT2N0 IDI2LCAyMDE4IGF0IDExOjAyIEFNIERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4gd3Jv dGU6Cj4gPgo+ID4gT24gVGh1LCBPY3QgMjUsIDIwMTggYXQgOTozOSBQTSBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4gd3JvdGU6Cj4gPiA+Cj4gPiA+IFF1b3RpbmcgRGFu aWVsIFZldHRlciAoMjAxOC0xMC0yNSAyMDoxNjo1MCkKPiA+ID4gPiBPbiBUaHUsIE9jdCAyNSwg MjAxOCBhdCAwMTo0NTo0MlBNICswMTAwLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gPiA+ID4gPiBT aW5jZSBjb21taXQgOTMwNjVhYzc1M2U0ICgibW0sIG9vbTogZGlzdGluZ3Vpc2ggYmxvY2thYmxl IG1vZGUgZm9yIG1tdQo+ID4gPiA+ID4gbm90aWZpZXJzIikgd2UgaGF2ZSBiZWVuIGFibGUgdG8g cmVwb3J0IGZhaWx1cmUgZnJvbQo+ID4gPiA+ID4gbW11X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQg d2hpY2ggYWxsb3dzIHVzIHRvIHVzZSBhIHRyeWxvY2sgb24gdGhlCj4gPiA+ID4gPiBzdHJ1Y3Rf bXV0ZXggdG8gYXZvaWQgcG90ZW50aWFsIHJlY3Vyc2lvbiBhbmQgcmVwb3J0IC1FQlVTWSBpbnN0 ZWFkLgo+ID4gPiA+ID4gRnVydGhlcm1vcmUsIHRoaXMgYWxsb3dzIHVzIHRvIHB1bGwgdGhlIHdv cmsgaW50byB0aGUgbWFpbiBjYWxsYmFjayBhbmQKPiA+ID4gPiA+IGF2b2lkIHRoZSBzbGVpZ2h0 LW9mLWhhbmQgaW4gdXNpbmcgYSB3b3JrcXVldWUgdG8gYXZvaWQgbG9ja2RlcC4KPiA+ID4gPiA+ Cj4gPiA+ID4gPiBIb3dldmVyLCBub3QgYWxsIHBhdGhzIHRvIG1tdV9pbnZhbGlkYXRlX3Jhbmdl X3N0YXJ0IGFyZSBwcmVwYXJlZCB0bwo+ID4gPiA+ID4gaGFuZGxlIGZhaWx1cmUsIHNvIGluc3Rl YWQgb2YgcmVwb3J0aW5nIHRoZSByZWN1cnNpb24sIGRlYWwgd2l0aCBpdC4KPiA+ID4gPiA+Cj4g PiA+ID4gPiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9MTA4Mzc1Cj4gPiA+ID4gPiBSZWZlcmVuY2VzOiA5MzA2NWFjNzUzZTQgKCJtbSwgb29t OiBkaXN0aW5ndWlzaCBibG9ja2FibGUgbW9kZSBmb3IgbW11IG5vdGlmaWVycyIpCj4gPiA+ID4g PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K PiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgICB8ICAgNCArLQo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgICAgICAgICB8ICAxMiArLQo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3VzZXJwdHIuYyB8IDIxOSArKysrKysrKysrKystLS0tLS0tLS0tLS0KPiA+ID4gPiA+ICAz IGZpbGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCAxMjAgZGVsZXRpb25zKC0pCj4gPiA+ ID4gPgo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+ID4gPiBpbmRleCAyZDc3 NjFiOGFjMDcuLmMzYjk0YzNmOTMwZiAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiA+ID4gPiA+IEBAIC0zMDc2LDggKzMwNzYsOCBAQCBlbnVtIGk5MTVfbW1f c3ViY2xhc3MgeyAvKiBsb2NrZGVwIHN1YmNsYXNzIGZvciBvYmotPm1tLmxvY2sgKi8KPiA+ID4g PiA+ICAgICAgIEk5MTVfTU1fU0hSSU5LRVIKPiA+ID4gPiA+ICB9Owo+ID4gPiA+ID4KPiA+ID4g PiA+IC12b2lkIF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu dW0gaTkxNV9tbV9zdWJjbGFzcyBzdWJjbGFzcyk7Cj4gPiA+ID4gPiAraW50IF9faTkxNV9nZW1f b2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBpOTE1X21tX3N1YmNsYXNzIHN1 YmNsYXNzKTsKPiA+ID4gPiA+ICB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X2ludmFsaWRhdGUoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gIGVudW0g aTkxNV9tYXBfdHlwZSB7Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+ID4gPiA+ IGluZGV4IDkzZDA5MjgyNzEwZC4uZGU3Y2NiM2ViN2I4IDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ID4gPiA+ID4gQEAgLTI0NTQsMTcgKzI0NTQsMTggQEAg X19pOTE1X2dlbV9vYmplY3RfdW5zZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPiA+ID4gPiA+ICAgICAgIHJldHVybiBwYWdlczsKPiA+ID4gPiA+ICB9Cj4gPiA+ID4g Pgo+ID4gPiA+ID4gLXZvaWQgX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW51bSBpOTE1X21tX3N1YmNsYXNzIHN1YmNsYXNzKQo+ID4gPiA+ID4gK2ludCBfX2k5 MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaTkxNV9tbV9zdWJj bGFzcyBzdWJjbGFzcykKPiA+ID4gPiA+ICB7Cj4gPiA+ID4gPiAgICAgICBzdHJ1Y3Qgc2dfdGFi bGUgKnBhZ2VzOwo+ID4gPiA+ID4gKyAgICAgaW50IHJldCA9IC1FQlVTWTsKPiA+ID4gPiA+Cj4g PiA+ID4gPiAgICAgICBpZiAoaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSkK PiA+ID4gPiA+IC0gICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVCVVNZOwo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAgIEdFTV9CVUdfT04ob2JqLT5i aW5kX2NvdW50KTsKPiA+ID4gPiA+ICAgICAgIGlmICghaTkxNV9nZW1fb2JqZWN0X2hhc19wYWdl cyhvYmopKQo+ID4gPiA+ID4gLSAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ID4gPiArICAgICAg ICAgICAgIHJldHVybiAwOwo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAgIC8qIE1heSBiZSBjYWxs ZWQgYnkgc2hyaW5rZXIgZnJvbSB3aXRoaW4gZ2V0X3BhZ2VzKCkgKG9uIGFub3RoZXIgYm8pICov Cj4gPiA+ID4gPiAgICAgICBtdXRleF9sb2NrX25lc3RlZCgmb2JqLT5tbS5sb2NrLCBzdWJjbGFz cyk7Cj4gPiA+ID4gPiBAQCAtMjQ4MCw4ICsyNDgxLDExIEBAIHZvaWQgX19pOTE1X2dlbV9vYmpl Y3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gPiA+ID4gPiAg ICAgICBpZiAoIUlTX0VSUihwYWdlcykpCj4gPiA+ID4gPiAgICAgICAgICAgICAgIG9iai0+b3Bz LT5wdXRfcGFnZXMob2JqLCBwYWdlcyk7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gKyAgICAgcmV0ID0g MDsKPiA+ID4gPiA+ICB1bmxvY2s6Cj4gPiA+ID4gPiAgICAgICBtdXRleF91bmxvY2soJm9iai0+ bW0ubG9jayk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICByZXR1cm4gcmV0Owo+ID4gPiA+ ID4gIH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAgYm9vbCBpOTE1X3NnX3RyaW0oc3RydWN0IHNnX3Rh YmxlICpvcmlnX3N0KQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3VzZXJwdHIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJw dHIuYwo+ID4gPiA+ID4gaW5kZXggMmM5YjI4NDAzNmQxLi5hOGYzYzMwNGRiNTUgMTAwNjQ0Cj4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMKPiA+ ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwo+ID4g PiA+ID4gQEAgLTUwLDc5ICs1MCw4NCBAQCBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgewo+ID4g PiA+ID4gICAgICAgc3RydWN0IGhsaXN0X25vZGUgbm9kZTsKPiA+ID4gPiA+ICAgICAgIHN0cnVj dCBtbXVfbm90aWZpZXIgbW47Cj4gPiA+ID4gPiAgICAgICBzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQg b2JqZWN0czsKPiA+ID4gPiA+IC0gICAgIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTsKPiA+ ID4gPiA+ICsgICAgIHN0cnVjdCBpOTE1X21tX3N0cnVjdCAqbW07Cj4gPiA+ID4gPiAgfTsKPiA+ ID4gPiA+Cj4gPiA+ID4gPiAgc3RydWN0IGk5MTVfbW11X29iamVjdCB7Cj4gPiA+ID4gPiAgICAg ICBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKm1uOwo+ID4gPiA+ID4gICAgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+ID4gPiA+ICAgICAgIHN0cnVjdCBpbnRlcnZhbF90 cmVlX25vZGUgaXQ7Cj4gPiA+ID4gPiAtICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4gPiA+ ID4gPiAtICAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKPiA+ID4gPiA+IC0gICAgIGJvb2wg YXR0YWNoZWQ7Cj4gPiA+ID4gPiAgfTsKPiA+ID4gPiA+Cj4gPiA+ID4gPiAtc3RhdGljIHZvaWQg Y2FuY2VsX3VzZXJwdHIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ID4gPiA+ID4gLXsKPiA+ ID4gPiA+IC0gICAgIHN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vID0gY29udGFpbmVyX29mKHdv cmssIHR5cGVvZigqbW8pLCB3b3JrKTsKPiA+ID4gPiA+IC0gICAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSBtby0+b2JqOwo+ID4gPiA+ID4gLSAgICAgc3RydWN0IHdvcmtfc3Ry dWN0ICphY3RpdmU7Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAtICAgICAvKiBDYW5jZWwgYW55IGFj dGl2ZSB3b3JrZXIgYW5kIGZvcmNlIHVzIHRvIHJlLWV2YWx1YXRlIGd1cCAqLwo+ID4gPiA+ID4g LSAgICAgbXV0ZXhfbG9jaygmb2JqLT5tbS5sb2NrKTsKPiA+ID4gPiA+IC0gICAgIGFjdGl2ZSA9 IGZldGNoX2FuZF96ZXJvKCZvYmotPnVzZXJwdHIud29yayk7Cj4gPiA+ID4gPiAtICAgICBtdXRl eF91bmxvY2soJm9iai0+bW0ubG9jayk7Cj4gPiA+ID4gPiAtICAgICBpZiAoYWN0aXZlKQo+ID4g PiA+ID4gLSAgICAgICAgICAgICBnb3RvIG91dDsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0gICAg IGk5MTVfZ2VtX29iamVjdF93YWl0KG9iaiwgSTkxNV9XQUlUX0FMTCwgTUFYX1NDSEVEVUxFX1RJ TUVPVVQsIE5VTEwpOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLSAgICAgbXV0ZXhfbG9jaygmb2Jq LT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0gICAgIC8q IFdlIGFyZSBpbnNpZGUgYSBrdGhyZWFkIGNvbnRleHQgYW5kIGNhbid0IGJlIGludGVycnVwdGVk ICovCj4gPiA+ID4gPiAtICAgICBpZiAoaTkxNV9nZW1fb2JqZWN0X3VuYmluZChvYmopID09IDAp Cj4gPiA+ID4gPiAtICAgICAgICAgICAgIF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmos IEk5MTVfTU1fTk9STUFMKTsKPiA+ID4gPiA+IC0gICAgIFdBUk5fT05DRShpOTE1X2dlbV9vYmpl Y3RfaGFzX3BhZ2VzKG9iaiksCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgIkZhaWxlZCB0byBy ZWxlYXNlIHBhZ2VzOiBiaW5kX2NvdW50PSVkLCBwYWdlc19waW5fY291bnQ9JWQsIHBpbl9nbG9i YWw9JWRcbiIsCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgb2JqLT5iaW5kX2NvdW50LAo+ID4g PiA+ID4gLSAgICAgICAgICAgICAgIGF0b21pY19yZWFkKCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3Vu dCksCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgb2JqLT5waW5fZ2xvYmFsKTsKPiA+ID4gPiA+ IC0KPiA+ID4gPiA+IC0gICAgIG11dGV4X3VubG9jaygmb2JqLT5iYXNlLmRldi0+c3RydWN0X211 dGV4KTsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC1vdXQ6Cj4gPiA+ID4gPiAtICAgICBpOTE1X2dl bV9vYmplY3RfcHV0KG9iaik7Cj4gPiA+ID4gPiAtfQo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gIHN0 YXRpYyB2b2lkIGFkZF9vYmplY3Qoc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8pCj4gPiA+ID4g PiAgewo+ID4gPiA+ID4gLSAgICAgaWYgKG1vLT5hdHRhY2hlZCkKPiA+ID4gPiA+ICsgICAgIGlm ICghUkJfRU1QVFlfTk9ERSgmbW8tPml0LnJiKSkKPiA+ID4gPiA+ICAgICAgICAgICAgICAgcmV0 dXJuOwo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAgIGludGVydmFsX3RyZWVfaW5zZXJ0KCZtby0+ aXQsICZtby0+bW4tPm9iamVjdHMpOwo+ID4gPiA+ID4gLSAgICAgbW8tPmF0dGFjaGVkID0gdHJ1 ZTsKPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPgo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIGRlbF9vYmpl Y3Qoc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8pCj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gLSAg ICAgaWYgKCFtby0+YXR0YWNoZWQpCj4gPiA+ID4gPiArICAgICBpZiAoUkJfRU1QVFlfTk9ERSgm bW8tPml0LnJiKSkKPiA+ID4gPiA+ICAgICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiA+ID4KPiA+ ID4gPiA+ICAgICAgIGludGVydmFsX3RyZWVfcmVtb3ZlKCZtby0+aXQsICZtby0+bW4tPm9iamVj dHMpOwo+ID4gPiA+ID4gLSAgICAgbW8tPmF0dGFjaGVkID0gZmFsc2U7Cj4gPiA+ID4gPiArICAg ICBSQl9DTEVBUl9OT0RFKCZtby0+aXQucmIpOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ICtzdGF0aWMgdm9pZAo+ID4gPiA+ID4gK19faTkxNV9nZW1fdXNlcnB0cl9zZXRfYWN0 aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGJvb2wgdmFsdWUpCj4gPiA+ID4g PiArewo+ID4gPiA+ID4gKyAgICAgc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8gPSBvYmotPnVz ZXJwdHIubW11X29iamVjdDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgIC8qCj4gPiA+ID4g PiArICAgICAgKiBEdXJpbmcgbW1faW52YWxpZGF0ZV9yYW5nZSB3ZSBuZWVkIHRvIGNhbmNlbCBh bnkgdXNlcnB0ciB0aGF0Cj4gPiA+ID4gPiArICAgICAgKiBvdmVybGFwcyB0aGUgcmFuZ2UgYmVp bmcgaW52YWxpZGF0ZWQuIERvaW5nIHNvIHJlcXVpcmVzIHRoZQo+ID4gPiA+ID4gKyAgICAgICog c3RydWN0X211dGV4LCBhbmQgdGhhdCByaXNrcyByZWN1cnNpb24uIEluIG9yZGVyIHRvIGNhdXNl Cj4gPiA+ID4gPiArICAgICAgKiByZWN1cnNpb24sIHRoZSB1c2VyIG11c3QgYWxpYXMgdGhlIHVz ZXJwdHIgYWRkcmVzcyBzcGFjZSB3aXRoCj4gPiA+ID4gPiArICAgICAgKiBhIEdUVCBtbWFwcGlu ZyAocG9zc2libGUgd2l0aCBhIE1BUF9GSVhFRCkgLSB0aGVuIHdoZW4gd2UgaGF2ZQo+ID4gPiA+ ID4gKyAgICAgICogdG8gaW52YWxpZGF0ZSB0aGF0IG1tYXBpbmcsIG1tX2ludmFsaWRhdGVfcmFu Z2UgaXMgY2FsbGVkIHdpdGgKPiA+ID4gPiA+ICsgICAgICAqIHRoZSB1c2VycHRyIGFkZHJlc3Mg KmFuZCogdGhlIHN0cnVjdF9tdXRleCBoZWxkLiAgVG8gcHJldmVudCB0aGF0Cj4gPiA+ID4gPiAr ICAgICAgKiB3ZSBzZXQgYSBmbGFnIHVuZGVyIHRoZSBpOTE1X21tdV9ub3RpZmllciBzcGlubG9j ayB0byBpbmRpY2F0ZQo+ID4gPiA+ID4gKyAgICAgICogd2hldGhlciB0aGlzIG9iamVjdCBpcyB2 YWxpZC4KPiA+ID4gPiA+ICsgICAgICAqLwo+ID4gPiA+ID4gKyAgICAgaWYgKCFtbykKPiA+ID4g PiA+ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgc3Bp bl9sb2NrKCZtby0+bW4tPmxvY2spOwo+ID4gPiA+ID4gKyAgICAgaWYgKHZhbHVlKQo+ID4gPiA+ ID4gKyAgICAgICAgICAgICBhZGRfb2JqZWN0KG1vKTsKPiA+ID4gPiA+ICsgICAgIGVsc2UKPiA+ ID4gPiA+ICsgICAgICAgICAgICAgZGVsX29iamVjdChtbyk7Cj4gPiA+ID4gPiArICAgICBzcGlu X3VubG9jaygmbW8tPm1uLT5sb2NrKTsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArc3RhdGljIHN0cnVjdCBtdXRleCAqX19pOTE1X211dGV4X2xvY2tfcmVjdXJzaXZlKHN0cnVj dCBtdXRleCAqbSkKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArICAgICBzd2l0Y2ggKG11dGV4X3Ry eWxvY2tfcmVjdXJzaXZlKG0pKSB7Cj4gPiA+ID4gPiArICAgICBkZWZhdWx0Ogo+ID4gPiA+ID4g KyAgICAgY2FzZSBNVVRFWF9UUllMT0NLX0ZBSUxFRDoKPiA+ID4gPiA+ICsgICAgICAgICAgICAg bXV0ZXhfbG9jayhtKTsKPiA+ID4gPiA+ICsgICAgIGNhc2UgTVVURVhfVFJZTE9DS19TVUNDRVNT Ogo+ID4gPiA+ID4gKyAgICAgICAgICAgICByZXR1cm4gbTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsgICAgIGNhc2UgTVVURVhfVFJZTE9DS19SRUNVUlNJVkU6Cj4gPiA+ID4gPiArICAgICAgICAg ICAgIHJldHVybiBFUlJfUFRSKC1FRVhJU1QpOwo+ID4gPiA+ID4gKyAgICAgfQo+ID4gPiA+ID4g IH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAgc3RhdGljIGludCBpOTE1X2dlbV91c2VycHRyX21uX2lu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21uLAo+ID4gPiA+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgbW1fc3RydWN0ICptbSwKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwKPiA+ID4gPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBlbmQsCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgYmxvY2thYmxlKQo+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tLAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbCBibG9ja2FibGUpCj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gICAgICAgc3RydWN0IGk5 MTVfbW11X25vdGlmaWVyICptbiA9Cj4gPiA+ID4gPiAgICAgICAgICAgICAgIGNvbnRhaW5lcl9v ZihfbW4sIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciwgbW4pOwo+ID4gPiA+ID4gLSAgICAgc3Ry dWN0IGk5MTVfbW11X29iamVjdCAqbW87Cj4gPiA+ID4gPiAgICAgICBzdHJ1Y3QgaW50ZXJ2YWxf dHJlZV9ub2RlICppdDsKPiA+ID4gPiA+IC0gICAgIExJU1RfSEVBRChjYW5jZWxsZWQpOwo+ID4g PiA+ID4gKyAgICAgc3RydWN0IG11dGV4ICp1bmxvY2sgPSBOVUxMOwo+ID4gPiA+ID4gKyAgICAg aW50IHJldCA9IDA7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gICAgICAgaWYgKFJCX0VNUFRZX1JPT1Qo Jm1uLT5vYmplY3RzLnJiX3Jvb3QpKQo+ID4gPiA+ID4gICAgICAgICAgICAgICByZXR1cm4gMDsK PiA+ID4gPiA+IEBAIC0xMzMsMTEgKzEzOCwxNiBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3VzZXJw dHJfbW5faW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdHJ1Y3QgbW11X25vdGlmaWVyICpfbW4sCj4g PiA+ID4gPiAgICAgICBzcGluX2xvY2soJm1uLT5sb2NrKTsKPiA+ID4gPiA+ICAgICAgIGl0ID0g aW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZtbi0+b2JqZWN0cywgc3RhcnQsIGVuZCk7Cj4gPiA+ ID4gPiAgICAgICB3aGlsZSAoaXQpIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgYm9vbCBoYXNf cGFnZXMgPSBmYWxzZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgaWYgKCFi bG9ja2FibGUpIHsKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygm bW4tPmxvY2spOwo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUFHQUlO Owo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FQUdBSU47Cj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ID4gPiAgICAgICAgICAgICAgIH0K PiA+ID4gPiA+IC0gICAgICAgICAgICAgLyogVGhlIG1tdV9vYmplY3QgaXMgcmVsZWFzZWQgbGF0 ZSB3aGVuIGRlc3Ryb3lpbmcgdGhlCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgICAgICAg IC8qCj4gPiA+ID4gPiArICAgICAgICAgICAgICAqIFRoZSBtbXVfb2JqZWN0IGlzIHJlbGVhc2Vk IGxhdGUgd2hlbiBkZXN0cm95aW5nIHRoZQo+ID4gPiA+ID4gICAgICAgICAgICAgICAgKiBHRU0g b2JqZWN0IHNvIGl0IGlzIGVudGlyZWx5IHBvc3NpYmxlIHRvIGdhaW4gYQo+ID4gPiA+ID4gICAg ICAgICAgICAgICAgKiByZWZlcmVuY2Ugb24gYW4gb2JqZWN0IGluIHRoZSBwcm9jZXNzIG9mIGJl aW5nIGZyZWVkCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAqIHNpbmNlIG91ciBzZXJpYWxpc2F0 aW9uIGlzIHZpYSB0aGUgc3BpbmxvY2sgYW5kIG5vdAo+ID4gPiA+ID4gQEAgLTE0NiwyMSArMTU2 LDQ0IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fdXNlcnB0cl9tbl9pbnZhbGlkYXRlX3JhbmdlX3N0 YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICog dXNlLWFmdGVyLWZyZWUgd2Ugb25seSBhY3F1aXJlIGEgcmVmZXJlbmNlIG9uIHRoZQo+ID4gPiA+ ID4gICAgICAgICAgICAgICAgKiBvYmplY3QgaWYgaXQgaXMgbm90IGluIHRoZSBwcm9jZXNzIG9m IGJlaW5nIGRlc3Ryb3llZC4KPiA+ID4gPiA+ICAgICAgICAgICAgICAgICovCj4gPiA+ID4gPiAt ICAgICAgICAgICAgIG1vID0gY29udGFpbmVyX29mKGl0LCBzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0 LCBpdCk7Cj4gPiA+ID4gPiAtICAgICAgICAgICAgIGlmIChrcmVmX2dldF91bmxlc3NfemVybygm bW8tPm9iai0+YmFzZS5yZWZjb3VudCkpCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAg cXVldWVfd29yayhtbi0+d3EsICZtby0+d29yayk7Cj4gPiA+ID4gPiArICAgICAgICAgICAgIG9i aiA9IGNvbnRhaW5lcl9vZihpdCwgc3RydWN0IGk5MTVfbW11X29iamVjdCwgaXQpLT5vYmo7Cj4g PiA+ID4gPiArICAgICAgICAgICAgIGlmICgha3JlZl9nZXRfdW5sZXNzX3plcm8oJm9iai0+YmFz ZS5yZWZjb3VudCkpIHsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBpdCA9IGludGVy dmFsX3RyZWVfaXRlcl9uZXh0KGl0LCBzdGFydCwgZW5kKTsKPiA+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgfQo+ID4gPiA+ID4g KyAgICAgICAgICAgICBzcGluX3VubG9jaygmbW4tPmxvY2spOwo+ID4gPiA+ID4KPiA+ID4gPiA+ IC0gICAgICAgICAgICAgbGlzdF9hZGQoJm1vLT5saW5rLCAmY2FuY2VsbGVkKTsKPiA+ID4gPiA+ IC0gICAgICAgICAgICAgaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfbmV4dChpdCwgc3RhcnQsIGVu ZCk7Cj4gPiA+ID4gPiArICAgICAgICAgICAgIC8qIENhbmNlbCBhbnkgcGVuZGluZyB3b3JrZXIg YW5kIGZvcmNlIHVzIHRvIHJlLWV2YWx1YXRlIGd1cCAqLwo+ID4gPiA+ID4gKyAgICAgICAgICAg ICBtdXRleF9sb2NrX25lc3RlZCgmb2JqLT5tbS5sb2NrLCBJOTE1X01NX1NIUklOS0VSKTsKPiA+ ID4gPgo+ID4gPiA+IG11dGV4X2xvY2tfbmVzdGVkIGlzIG1lYW50IGZvciBzdGF0aWMgbmVzdGlu Zy4gVGhpcyBoZXJlIGlzIHJhdGhlcgo+ID4gPiA+IGR5bmFtaWMsIGFuZCBJIGRvbid0IHJlYWxs eSBzZWUgd2hlcmUgdGhlIGd1YXJhbnRlZSBpcyB0aGF0IHRoZSBjbGFzc2ljCj4gPiA+ID4gZGVh ZGxvY2sgaXNuJ3QgcG9zc2libGU6Cj4gPiA+Cj4gPiA+IEl0J3MgbWVhbnQgdG8gYmUgYWZ0ZXIg cHV0X3BhZ2VzID09IDAgdG8gZW5zdXJlIGl0IG9ubHkgYXBwbGllZCB0byBhCj4gPiA+IGRpZmZl cmVudCBvYmplY3QuIEEgYml0IG1vcmUgaW52b2x2ZWQgdG8gZG8gaXQgZXhhY3RseSBob3cgSSB3 YW50LCB0aGF0Cj4gPiA+IGlzIHRvIGJhc2ljYWxseSBpbmNvcnBvcmF0ZSBpdCBpbnRvIHB1dF9w YWdlcyBpdHNlbGYuIEFjdHVhbGx5LCBpZiBpdCBpcwo+ID4gPiBpbiB0aGUgcHV0X3BhZ2VzIGl0 IHNob3VsZCBqdXN0IHdvcmsuLi4KPiA+Cj4gPiBTbyBmb3IgdGhlIHNocmlua2VyIEkgZ3Vlc3Mg eW91IGNhbiBtYWtlIHRoaXMgd29yay4gRm9yIG15IHRhc3RlCj4gPiB0aGVyZSdzIG5vdCBlbm91 Z2ggR0VNX1dBUk5fT04gdG8gY2hlY2sgdGhlIGludmFyaWFudHMgb2YgdGhlIG5lc3RpbmcKPiA+ IHNjaGVtZSAoSSBhc3N1bWUgaXQgaXMgbGlzdF9lbXB0eShvYmotPm1tLmxpbmspIC0+IHVzZSBJ OTE1X01NX05PUk1BTCwKPiA+IGFuZCBJOTE1X01NX1NIUklOS0VSIGZvciBhbnlvbmUgd2hvIGRp c2NvdmVycyBhbiBvYmplY3QgdGhyb3VnaCB0aGUKPiA+IG9iai0+bW0ubGluayBsaXN0cywgYnV0 IHdvdWxkIGJlIG5pY2UgdG8gZG91YmxlLWNoZWNrIHRoYXQgZXZlcnkgdGltZQo+ID4gd2UgdGFr ZSB0aGUgb2JqLT5tbS5sb2NrIHdpdGggYSBHRU1fV0FSTl9PTikuCj4gCj4gQWZ0ZXIgYSBiaXQg bW9yZSByZWFkaW5nIGFyb3VuZCBJIHRoaW5rIHRoaXMgaXNuJ3QgZW5vdWdoLCBhbmQgd2UgYWxz bwo+IHJlbHkgb24gbGlzdF9kZWwob2JqLT5tbS5saW5rKSBiZWluZyBzZXJpYWxpemVkIGJ5IGRl di0+c3RydWN0X211dGV4Lgo+IEJ1dCBJJ20gbm90IGVudGlyZWx5IHN1cmUuIFdlIGRlZmluaXRl bHkgc2VlbSB0byByZWx5IG9uIHRoZSBtYWdpYwo+ICJob2xkaW5nIGRldi0+c3RydWN0X211dGV4 IGV4dGVuZHMgdGhlIGxpZmV0aW1lIG9mIGFueXRoaW5nIHdpdGggYQo+IG5vbi1lbXB0eSBvYmot Pm1tLmxpbmsiIG9uIHRoZSBzaHJpbmtlciBzaWRlIHN0aWxsLgoKRm9ydHVuYXRlbHkgbm90LCBt bS5saW5rIGlzIHNwaW5sb2NrLCBpdCdzIHRoZSBhY3RpdmUgcmVmIHdoZXJlIHRoZQpzdHJ1Y3Rf bXV0ZXggZGFuY2UgaXMgc3RpbGwgcmVxdWlyZWQuCi1DaHJpcwpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK