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: Thu, 25 Oct 2018 20:39:30 +0100 Message-ID: <154049637049.5942.12617641226168472462@skylake-alporthouse-com> References: <20181025124542.21830-1-chris@chris-wilson.co.uk> <20181025191650.GF21967@phenom.ffwll.local> 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 95B066E014 for ; Thu, 25 Oct 2018 19:39:36 +0000 (UTC) In-Reply-To: <20181025191650.GF21967@phenom.ffwll.local> 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@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UXVvdGluZyBEYW5pZWwgVmV0dGVyICgyMDE4LTEwLTI1IDIwOjE2OjUwKQo+IE9uIFRodSwgT2N0 IDI1LCAyMDE4IGF0IDAxOjQ1OjQyUE0gKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiA+IFNp bmNlIGNvbW1pdCA5MzA2NWFjNzUzZTQgKCJtbSwgb29tOiBkaXN0aW5ndWlzaCBibG9ja2FibGUg bW9kZSBmb3IgbW11Cj4gPiBub3RpZmllcnMiKSB3ZSBoYXZlIGJlZW4gYWJsZSB0byByZXBvcnQg ZmFpbHVyZSBmcm9tCj4gPiBtbXVfaW52YWxpZGF0ZV9yYW5nZV9zdGFydCB3aGljaCBhbGxvd3Mg dXMgdG8gdXNlIGEgdHJ5bG9jayBvbiB0aGUKPiA+IHN0cnVjdF9tdXRleCB0byBhdm9pZCBwb3Rl bnRpYWwgcmVjdXJzaW9uIGFuZCByZXBvcnQgLUVCVVNZIGluc3RlYWQuCj4gPiBGdXJ0aGVybW9y ZSwgdGhpcyBhbGxvd3MgdXMgdG8gcHVsbCB0aGUgd29yayBpbnRvIHRoZSBtYWluIGNhbGxiYWNr IGFuZAo+ID4gYXZvaWQgdGhlIHNsZWlnaHQtb2YtaGFuZCBpbiB1c2luZyBhIHdvcmtxdWV1ZSB0 byBhdm9pZCBsb2NrZGVwLgo+ID4gCj4gPiBIb3dldmVyLCBub3QgYWxsIHBhdGhzIHRvIG1tdV9p bnZhbGlkYXRlX3JhbmdlX3N0YXJ0IGFyZSBwcmVwYXJlZCB0bwo+ID4gaGFuZGxlIGZhaWx1cmUs IHNvIGluc3RlYWQgb2YgcmVwb3J0aW5nIHRoZSByZWN1cnNpb24sIGRlYWwgd2l0aCBpdC4KPiA+ IAo+ID4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dp P2lkPTEwODM3NQo+ID4gUmVmZXJlbmNlczogOTMwNjVhYzc1M2U0ICgibW0sIG9vbTogZGlzdGlu Z3Vpc2ggYmxvY2thYmxlIG1vZGUgZm9yIG1tdSBub3RpZmllcnMiKQo+ID4gU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gPiAtLS0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDQgKy0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAgMTIgKy0KPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV91c2VycHRyLmMgfCAyMTkgKysrKysrKysrKysrLS0tLS0t LS0tLS0tCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMTIwIGRlbGV0 aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+IGluZGV4IDJkNzc2MWI4 YWMwNy4uYzNiOTRjM2Y5MzBmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4g QEAgLTMwNzYsOCArMzA3Niw4IEBAIGVudW0gaTkxNV9tbV9zdWJjbGFzcyB7IC8qIGxvY2tkZXAg c3ViY2xhc3MgZm9yIG9iai0+bW0ubG9jayAqLwo+ID4gICAgICAgSTkxNV9NTV9TSFJJTktFUgo+ ID4gIH07Cj4gPiAgCj4gPiAtdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIGk5MTVfbW1fc3ViY2xhc3Mgc3ViY2xhc3MpOwo+ID4gK2ludCBfX2k5MTVfZ2Vt X29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gaTkxNV9tbV9zdWJjbGFzcyBzdWJjbGFz cyk7Cj4gPiAgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopOwo+ID4gIAo+ID4gIGVudW0gaTkxNV9tYXBfdHlwZSB7Cj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+IGluZGV4IDkzZDA5MjgyNzEwZC4uZGU3Y2NiM2ViN2I4 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ID4gQEAgLTI0NTQsMTcgKzI0NTQs MTggQEAgX19pOTE1X2dlbV9vYmplY3RfdW5zZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKPiA+ICAgICAgIHJldHVybiBwYWdlczsKPiA+ICB9Cj4gPiAgCj4gPiAtdm9p ZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGk5MTVfbW1fc3Vi Y2xhc3Mgc3ViY2xhc3MpCj4gPiAraW50IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW51bSBpOTE1X21tX3N1YmNsYXNzIHN1YmNsYXNzKQo+ID4gIHsKPiA+ICAgICAgIHN0 cnVjdCBzZ190YWJsZSAqcGFnZXM7Cj4gPiArICAgICBpbnQgcmV0ID0gLUVCVVNZOwo+ID4gIAo+ ID4gICAgICAgaWYgKGk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpCj4gPiAt ICAgICAgICAgICAgIHJldHVybjsKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKPiA+ ICAKPiA+ICAgICAgIEdFTV9CVUdfT04ob2JqLT5iaW5kX2NvdW50KTsKPiA+ICAgICAgIGlmICgh aTkxNV9nZW1fb2JqZWN0X2hhc19wYWdlcyhvYmopKQo+ID4gLSAgICAgICAgICAgICByZXR1cm47 Cj4gPiArICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gIAo+ID4gICAgICAgLyogTWF5IGJlIGNh bGxlZCBieSBzaHJpbmtlciBmcm9tIHdpdGhpbiBnZXRfcGFnZXMoKSAob24gYW5vdGhlciBibykg Ki8KPiA+ICAgICAgIG11dGV4X2xvY2tfbmVzdGVkKCZvYmotPm1tLmxvY2ssIHN1YmNsYXNzKTsK PiA+IEBAIC0yNDgwLDggKzI0ODEsMTEgQEAgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFn ZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+ICAgICAgIGlmICghSVNfRVJS KHBhZ2VzKSkKPiA+ICAgICAgICAgICAgICAgb2JqLT5vcHMtPnB1dF9wYWdlcyhvYmosIHBhZ2Vz KTsKPiA+ICAKPiA+ICsgICAgIHJldCA9IDA7Cj4gPiAgdW5sb2NrOgo+ID4gICAgICAgbXV0ZXhf dW5sb2NrKCZvYmotPm1tLmxvY2spOwo+ID4gKwo+ID4gKyAgICAgcmV0dXJuIHJldDsKPiA+ICB9 Cj4gPiAgCj4gPiAgYm9vbCBpOTE1X3NnX3RyaW0oc3RydWN0IHNnX3RhYmxlICpvcmlnX3N0KQo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwo+ID4gaW5kZXggMmM5YjI4 NDAzNmQxLi5hOGYzYzMwNGRiNTUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV91c2VycHRyLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3VzZXJwdHIuYwo+ID4gQEAgLTUwLDc5ICs1MCw4NCBAQCBzdHJ1Y3QgaTkxNV9tbXVfbm90 aWZpZXIgewo+ID4gICAgICAgc3RydWN0IGhsaXN0X25vZGUgbm9kZTsKPiA+ICAgICAgIHN0cnVj dCBtbXVfbm90aWZpZXIgbW47Cj4gPiAgICAgICBzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgb2JqZWN0 czsKPiA+IC0gICAgIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTsKPiA+ICsgICAgIHN0cnVj dCBpOTE1X21tX3N0cnVjdCAqbW07Cj4gPiAgfTsKPiA+ICAKPiA+ICBzdHJ1Y3QgaTkxNV9tbXVf b2JqZWN0IHsKPiA+ICAgICAgIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciAqbW47Cj4gPiAgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ID4gICAgICAgc3RydWN0IGludGVy dmFsX3RyZWVfbm9kZSBpdDsKPiA+IC0gICAgIHN0cnVjdCBsaXN0X2hlYWQgbGluazsKPiA+IC0g ICAgIHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwo+ID4gLSAgICAgYm9vbCBhdHRhY2hlZDsKPiA+ ICB9Owo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGNhbmNlbF91c2VycHRyKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKPiA+IC17Cj4gPiAtICAgICBzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0ICptbyA9 IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKm1vKSwgd29yayk7Cj4gPiAtICAgICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gbW8tPm9iajsKPiA+IC0gICAgIHN0cnVjdCB3b3Jr X3N0cnVjdCAqYWN0aXZlOwo+ID4gLQo+ID4gLSAgICAgLyogQ2FuY2VsIGFueSBhY3RpdmUgd29y a2VyIGFuZCBmb3JjZSB1cyB0byByZS1ldmFsdWF0ZSBndXAgKi8KPiA+IC0gICAgIG11dGV4X2xv Y2soJm9iai0+bW0ubG9jayk7Cj4gPiAtICAgICBhY3RpdmUgPSBmZXRjaF9hbmRfemVybygmb2Jq LT51c2VycHRyLndvcmspOwo+ID4gLSAgICAgbXV0ZXhfdW5sb2NrKCZvYmotPm1tLmxvY2spOwo+ ID4gLSAgICAgaWYgKGFjdGl2ZSkKPiA+IC0gICAgICAgICAgICAgZ290byBvdXQ7Cj4gPiAtCj4g PiAtICAgICBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosIEk5MTVfV0FJVF9BTEwsIE1BWF9TQ0hF RFVMRV9USU1FT1VULCBOVUxMKTsKPiA+IC0KPiA+IC0gICAgIG11dGV4X2xvY2soJm9iai0+YmFz ZS5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiAtCj4gPiAtICAgICAvKiBXZSBhcmUgaW5zaWRlIGEg a3RocmVhZCBjb250ZXh0IGFuZCBjYW4ndCBiZSBpbnRlcnJ1cHRlZCAqLwo+ID4gLSAgICAgaWYg KGk5MTVfZ2VtX29iamVjdF91bmJpbmQob2JqKSA9PSAwKQo+ID4gLSAgICAgICAgICAgICBfX2k5 MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqLCBJOTE1X01NX05PUk1BTCk7Cj4gPiAtICAgICBX QVJOX09OQ0UoaTkxNV9nZW1fb2JqZWN0X2hhc19wYWdlcyhvYmopLAo+ID4gLSAgICAgICAgICAg ICAgICJGYWlsZWQgdG8gcmVsZWFzZSBwYWdlczogYmluZF9jb3VudD0lZCwgcGFnZXNfcGluX2Nv dW50PSVkLCBwaW5fZ2xvYmFsPSVkXG4iLAo+ID4gLSAgICAgICAgICAgICAgIG9iai0+YmluZF9j b3VudCwKPiA+IC0gICAgICAgICAgICAgICBhdG9taWNfcmVhZCgmb2JqLT5tbS5wYWdlc19waW5f Y291bnQpLAo+ID4gLSAgICAgICAgICAgICAgIG9iai0+cGluX2dsb2JhbCk7Cj4gPiAtCj4gPiAt ICAgICBtdXRleF91bmxvY2soJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiAtCj4g PiAtb3V0Ogo+ID4gLSAgICAgaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ID4gLX0KPiA+IC0K PiA+ICBzdGF0aWMgdm9pZCBhZGRfb2JqZWN0KHN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vKQo+ ID4gIHsKPiA+IC0gICAgIGlmIChtby0+YXR0YWNoZWQpCj4gPiArICAgICBpZiAoIVJCX0VNUFRZ X05PREUoJm1vLT5pdC5yYikpCj4gPiAgICAgICAgICAgICAgIHJldHVybjsKPiA+ICAKPiA+ICAg ICAgIGludGVydmFsX3RyZWVfaW5zZXJ0KCZtby0+aXQsICZtby0+bW4tPm9iamVjdHMpOwo+ID4g LSAgICAgbW8tPmF0dGFjaGVkID0gdHJ1ZTsKPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIHZvaWQg ZGVsX29iamVjdChzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0ICptbykKPiA+ICB7Cj4gPiAtICAgICBp ZiAoIW1vLT5hdHRhY2hlZCkKPiA+ICsgICAgIGlmIChSQl9FTVBUWV9OT0RFKCZtby0+aXQucmIp KQo+ID4gICAgICAgICAgICAgICByZXR1cm47Cj4gPiAgCj4gPiAgICAgICBpbnRlcnZhbF90cmVl X3JlbW92ZSgmbW8tPml0LCAmbW8tPm1uLT5vYmplY3RzKTsKPiA+IC0gICAgIG1vLT5hdHRhY2hl ZCA9IGZhbHNlOwo+ID4gKyAgICAgUkJfQ0xFQVJfTk9ERSgmbW8tPml0LnJiKTsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIHZvaWQKPiA+ICtfX2k5MTVfZ2VtX3VzZXJwdHJfc2V0X2FjdGl2ZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBib29sIHZhbHVlKQo+ID4gK3sKPiA+ICsg ICAgIHN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vID0gb2JqLT51c2VycHRyLm1tdV9vYmplY3Q7 Cj4gPiArCj4gPiArICAgICAvKgo+ID4gKyAgICAgICogRHVyaW5nIG1tX2ludmFsaWRhdGVfcmFu Z2Ugd2UgbmVlZCB0byBjYW5jZWwgYW55IHVzZXJwdHIgdGhhdAo+ID4gKyAgICAgICogb3Zlcmxh cHMgdGhlIHJhbmdlIGJlaW5nIGludmFsaWRhdGVkLiBEb2luZyBzbyByZXF1aXJlcyB0aGUKPiA+ ICsgICAgICAqIHN0cnVjdF9tdXRleCwgYW5kIHRoYXQgcmlza3MgcmVjdXJzaW9uLiBJbiBvcmRl ciB0byBjYXVzZQo+ID4gKyAgICAgICogcmVjdXJzaW9uLCB0aGUgdXNlciBtdXN0IGFsaWFzIHRo ZSB1c2VycHRyIGFkZHJlc3Mgc3BhY2Ugd2l0aAo+ID4gKyAgICAgICogYSBHVFQgbW1hcHBpbmcg KHBvc3NpYmxlIHdpdGggYSBNQVBfRklYRUQpIC0gdGhlbiB3aGVuIHdlIGhhdmUKPiA+ICsgICAg ICAqIHRvIGludmFsaWRhdGUgdGhhdCBtbWFwaW5nLCBtbV9pbnZhbGlkYXRlX3JhbmdlIGlzIGNh bGxlZCB3aXRoCj4gPiArICAgICAgKiB0aGUgdXNlcnB0ciBhZGRyZXNzICphbmQqIHRoZSBzdHJ1 Y3RfbXV0ZXggaGVsZC4gIFRvIHByZXZlbnQgdGhhdAo+ID4gKyAgICAgICogd2Ugc2V0IGEgZmxh ZyB1bmRlciB0aGUgaTkxNV9tbXVfbm90aWZpZXIgc3BpbmxvY2sgdG8gaW5kaWNhdGUKPiA+ICsg ICAgICAqIHdoZXRoZXIgdGhpcyBvYmplY3QgaXMgdmFsaWQuCj4gPiArICAgICAgKi8KPiA+ICsg ICAgIGlmICghbW8pCj4gPiArICAgICAgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ICsgICAgIHNw aW5fbG9jaygmbW8tPm1uLT5sb2NrKTsKPiA+ICsgICAgIGlmICh2YWx1ZSkKPiA+ICsgICAgICAg ICAgICAgYWRkX29iamVjdChtbyk7Cj4gPiArICAgICBlbHNlCj4gPiArICAgICAgICAgICAgIGRl bF9vYmplY3QobW8pOwo+ID4gKyAgICAgc3Bpbl91bmxvY2soJm1vLT5tbi0+bG9jayk7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyBzdHJ1Y3QgbXV0ZXggKl9faTkxNV9tdXRleF9sb2NrX3JlY3Vy c2l2ZShzdHJ1Y3QgbXV0ZXggKm0pCj4gPiArewo+ID4gKyAgICAgc3dpdGNoIChtdXRleF90cnls b2NrX3JlY3Vyc2l2ZShtKSkgewo+ID4gKyAgICAgZGVmYXVsdDoKPiA+ICsgICAgIGNhc2UgTVVU RVhfVFJZTE9DS19GQUlMRUQ6Cj4gPiArICAgICAgICAgICAgIG11dGV4X2xvY2sobSk7Cj4gPiAr ICAgICBjYXNlIE1VVEVYX1RSWUxPQ0tfU1VDQ0VTUzoKPiA+ICsgICAgICAgICAgICAgcmV0dXJu IG07Cj4gPiArCj4gPiArICAgICBjYXNlIE1VVEVYX1RSWUxPQ0tfUkVDVVJTSVZFOgo+ID4gKyAg ICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRUVYSVNUKTsKPiA+ICsgICAgIH0KPiA+ICB9Cj4g PiAgCj4gPiAgc3RhdGljIGludCBpOTE1X2dlbV91c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vf c3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAqX21uLAo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBzdGFydCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxvY2thYmxlKQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBtbV9zdHJ1Y3QgKm1tLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQsCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v bCBibG9ja2FibGUpCj4gPiAgewo+ID4gICAgICAgc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICpt biA9Cj4gPiAgICAgICAgICAgICAgIGNvbnRhaW5lcl9vZihfbW4sIHN0cnVjdCBpOTE1X21tdV9u b3RpZmllciwgbW4pOwo+ID4gLSAgICAgc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW87Cj4gPiAg ICAgICBzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICppdDsKPiA+IC0gICAgIExJU1RfSEVBRChj YW5jZWxsZWQpOwo+ID4gKyAgICAgc3RydWN0IG11dGV4ICp1bmxvY2sgPSBOVUxMOwo+ID4gKyAg ICAgaW50IHJldCA9IDA7Cj4gPiAgCj4gPiAgICAgICBpZiAoUkJfRU1QVFlfUk9PVCgmbW4tPm9i amVjdHMucmJfcm9vdCkpCj4gPiAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gQEAgLTEzMywx MSArMTM4LDE2IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fdXNlcnB0cl9tbl9pbnZhbGlkYXRlX3Jh bmdlX3N0YXJ0KHN0cnVjdCBtbXVfbm90aWZpZXIgKl9tbiwKPiA+ICAgICAgIHNwaW5fbG9jaygm bW4tPmxvY2spOwo+ID4gICAgICAgaXQgPSBpbnRlcnZhbF90cmVlX2l0ZXJfZmlyc3QoJm1uLT5v YmplY3RzLCBzdGFydCwgZW5kKTsKPiA+ICAgICAgIHdoaWxlIChpdCkgewo+ID4gKyAgICAgICAg ICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ID4gKyAgICAgICAgICAgICBi b29sIGhhc19wYWdlcyA9IGZhbHNlOwo+ID4gKwo+ID4gICAgICAgICAgICAgICBpZiAoIWJsb2Nr YWJsZSkgewo+ID4gLSAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZtbi0+bG9jayk7 Cj4gPiAtICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FQUdBSU47Cj4gPiArICAgICAgICAg ICAgICAgICAgICAgcmV0ID0gLUVBR0FJTjsKPiA+ICsgICAgICAgICAgICAgICAgICAgICBicmVh azsKPiA+ICAgICAgICAgICAgICAgfQo+ID4gLSAgICAgICAgICAgICAvKiBUaGUgbW11X29iamVj dCBpcyByZWxlYXNlZCBsYXRlIHdoZW4gZGVzdHJveWluZyB0aGUKPiA+ICsKPiA+ICsgICAgICAg ICAgICAgLyoKPiA+ICsgICAgICAgICAgICAgICogVGhlIG1tdV9vYmplY3QgaXMgcmVsZWFzZWQg bGF0ZSB3aGVuIGRlc3Ryb3lpbmcgdGhlCj4gPiAgICAgICAgICAgICAgICAqIEdFTSBvYmplY3Qg c28gaXQgaXMgZW50aXJlbHkgcG9zc2libGUgdG8gZ2FpbiBhCj4gPiAgICAgICAgICAgICAgICAq IHJlZmVyZW5jZSBvbiBhbiBvYmplY3QgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZnJlZWQKPiA+ ICAgICAgICAgICAgICAgICogc2luY2Ugb3VyIHNlcmlhbGlzYXRpb24gaXMgdmlhIHRoZSBzcGlu bG9jayBhbmQgbm90Cj4gPiBAQCAtMTQ2LDIxICsxNTYsNDQgQEAgc3RhdGljIGludCBpOTE1X2dl bV91c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9ub3RpZmllciAq X21uLAo+ID4gICAgICAgICAgICAgICAgKiB1c2UtYWZ0ZXItZnJlZSB3ZSBvbmx5IGFjcXVpcmUg YSByZWZlcmVuY2Ugb24gdGhlCj4gPiAgICAgICAgICAgICAgICAqIG9iamVjdCBpZiBpdCBpcyBu b3QgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLgo+ID4gICAgICAgICAgICAgICAg Ki8KPiA+IC0gICAgICAgICAgICAgbW8gPSBjb250YWluZXJfb2YoaXQsIHN0cnVjdCBpOTE1X21t dV9vYmplY3QsIGl0KTsKPiA+IC0gICAgICAgICAgICAgaWYgKGtyZWZfZ2V0X3VubGVzc196ZXJv KCZtby0+b2JqLT5iYXNlLnJlZmNvdW50KSkKPiA+IC0gICAgICAgICAgICAgICAgICAgICBxdWV1 ZV93b3JrKG1uLT53cSwgJm1vLT53b3JrKTsKPiA+ICsgICAgICAgICAgICAgb2JqID0gY29udGFp bmVyX29mKGl0LCBzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0LCBpdCktPm9iajsKPiA+ICsgICAgICAg ICAgICAgaWYgKCFrcmVmX2dldF91bmxlc3NfemVybygmb2JqLT5iYXNlLnJlZmNvdW50KSkgewo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQs IHN0YXJ0LCBlbmQpOwo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ID4gKyAg ICAgICAgICAgICB9Cj4gPiArICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZtbi0+bG9jayk7Cj4g PiAgCj4gPiAtICAgICAgICAgICAgIGxpc3RfYWRkKCZtby0+bGluaywgJmNhbmNlbGxlZCk7Cj4g PiAtICAgICAgICAgICAgIGl0ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX25leHQoaXQsIHN0YXJ0LCBl bmQpOwo+ID4gKyAgICAgICAgICAgICAvKiBDYW5jZWwgYW55IHBlbmRpbmcgd29ya2VyIGFuZCBm b3JjZSB1cyB0byByZS1ldmFsdWF0ZSBndXAgKi8KPiA+ICsgICAgICAgICAgICAgbXV0ZXhfbG9j a19uZXN0ZWQoJm9iai0+bW0ubG9jaywgSTkxNV9NTV9TSFJJTktFUik7Cj4gCj4gbXV0ZXhfbG9j a19uZXN0ZWQgaXMgbWVhbnQgZm9yIHN0YXRpYyBuZXN0aW5nLiBUaGlzIGhlcmUgaXMgcmF0aGVy Cj4gZHluYW1pYywgYW5kIEkgZG9uJ3QgcmVhbGx5IHNlZSB3aGVyZSB0aGUgZ3VhcmFudGVlIGlz IHRoYXQgdGhlIGNsYXNzaWMKPiBkZWFkbG9jayBpc24ndCBwb3NzaWJsZToKCkl0J3MgbWVhbnQg dG8gYmUgYWZ0ZXIgcHV0X3BhZ2VzID09IDAgdG8gZW5zdXJlIGl0IG9ubHkgYXBwbGllZCB0byBh CmRpZmZlcmVudCBvYmplY3QuIEEgYml0IG1vcmUgaW52b2x2ZWQgdG8gZG8gaXQgZXhhY3RseSBo b3cgSSB3YW50LCB0aGF0CmlzIHRvIGJhc2ljYWxseSBpbmNvcnBvcmF0ZSBpdCBpbnRvIHB1dF9w YWdlcyBpdHNlbGYuIEFjdHVhbGx5LCBpZiBpdCBpcwppbiB0aGUgcHV0X3BhZ2VzIGl0IHNob3Vs ZCBqdXN0IHdvcmsuLi4KLUNocmlzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=