From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 7/8] drm/i915/selftests: Reorder request allocation vs vma pinning Date: Tue, 4 Dec 2018 11:06:30 +0000 Message-ID: <8310850f-4def-671c-e29a-0be28f133110@linux.intel.com> References: <20181203113701.12106-1-chris@chris-wilson.co.uk> <20181203113701.12106-7-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id D736A6E234 for ; Tue, 4 Dec 2018 11:06:32 +0000 (UTC) In-Reply-To: <20181203113701.12106-7-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDAzLzEyLzIwMTggMTE6MzcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbXBvc2UgYSByZXN0 cmFpbnQgdGhhdCB3ZSBoYXZlIGFsbCB2bWEgcGlubmVkIGZvciBhIHJlcXVlc3QgcHJpb3IgdG8K PiBpdHMgYWxsb2NhdGlvbi4gVGhpcyBpcyB0byBzaW1wbGlmeSByZXF1ZXN0IGNvbnN0cnVjdGlv biwgYW5kIHNob3VsZAo+IGZhY2lsaXRhdGUgdW5yYXZlbGxpbmcgdGhlIGxvY2sgaW50ZXJkZXBl bmRlbmNpZXMgbGF0ZXIuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaHVnZV9wYWdlcy5jICAgfCAgMzEgKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5jICB8ICA4NiArKysrKystLS0tLS0KPiAgIC4uLi9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX2hhbmdjaGVjay5jICB8IDEyMyArKysrKysrKystLS0tLS0t LS0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDEyMSBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2Vf cGFnZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiBp bmRleCAyNmMwNjVjOGQyYzAuLmEwYzdjYmMyMTJiYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+IEBAIC05NzIsNyArOTcyLDYgQEAgc3RhdGlj IGludCBncHVfd3JpdGUoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gICB7Cj4gICAJc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnE7Cj4gICAJc3RydWN0IGk5MTVfdm1hICpiYXRjaDsKPiAtCWludCBmbGFn cyA9IDA7Cj4gICAJaW50IGVycjsKPiAgIAo+ICAgCUdFTV9CVUdfT04oIWludGVsX2VuZ2luZV9j YW5fc3RvcmVfZHdvcmQoZW5naW5lKSk7Cj4gQEAgLTk4MSwxNCArOTgwLDE0IEBAIHN0YXRpYyBp bnQgZ3B1X3dyaXRlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAgCWlmIChlcnIpCj4gICAJCXJl dHVybiBlcnI7Cj4gICAKPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsK PiAtCWlmIChJU19FUlIocnEpKQo+IC0JCXJldHVybiBQVFJfRVJSKHJxKTsKPiAtCj4gICAJYmF0 Y2ggPSBncHVfd3JpdGVfZHcodm1hLCBkd29yZCAqIHNpemVvZih1MzIpLCB2YWx1ZSk7Cj4gLQlp ZiAoSVNfRVJSKGJhdGNoKSkgewo+IC0JCWVyciA9IFBUUl9FUlIoYmF0Y2gpOwo+IC0JCWdvdG8g ZXJyX3JlcXVlc3Q7Cj4gKwlpZiAoSVNfRVJSKGJhdGNoKSkKPiArCQlyZXR1cm4gUFRSX0VSUihi YXRjaCk7Cj4gKwo+ICsJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOwo+ICsJ aWYgKElTX0VSUihycSkpIHsKPiArCQllcnIgPSBQVFJfRVJSKHJxKTsKPiArCQlnb3RvIGVycl9i YXRjaDsKPiAgIAl9Cj4gICAKPiAgIAllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShiYXRj aCwgcnEsIDApOwo+IEBAIC05OTYsMjEgKzk5NSwyMSBAQCBzdGF0aWMgaW50IGdwdV93cml0ZShz dHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgIAkJZ290byBlcnJfcmVxdWVzdDsKPiAgIAo+ICAgCWk5 MTVfZ2VtX29iamVjdF9zZXRfYWN0aXZlX3JlZmVyZW5jZShiYXRjaC0+b2JqKTsKPiAtCWk5MTVf dm1hX3VucGluKGJhdGNoKTsKPiAtCWk5MTVfdm1hX2Nsb3NlKGJhdGNoKTsKPiAgIAo+IC0JZXJy ID0gZW5naW5lLT5lbWl0X2JiX3N0YXJ0KHJxLAo+IC0JCQkJICAgIGJhdGNoLT5ub2RlLnN0YXJ0 LCBiYXRjaC0+bm9kZS5zaXplLAo+IC0JCQkJICAgIGZsYWdzKTsKPiArCWVyciA9IGk5MTVfdm1h X21vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIEVYRUNfT0JKRUNUX1dSSVRFKTsKPiAgIAlpZiAoZXJy KQo+ICAgCQlnb3RvIGVycl9yZXF1ZXN0Owo+ICAgCj4gLQllcnIgPSBpOTE1X3ZtYV9tb3ZlX3Rv X2FjdGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7Cj4gKwllcnIgPSBlbmdpbmUtPmVt aXRfYmJfc3RhcnQocnEsCj4gKwkJCQkgICAgYmF0Y2gtPm5vZGUuc3RhcnQsIGJhdGNoLT5ub2Rl LnNpemUsCj4gKwkJCQkgICAgMCk7Cj4gK2Vycl9yZXF1ZXN0Ogo+ICAgCWlmIChlcnIpCj4gICAJ CWk5MTVfcmVxdWVzdF9za2lwKHJxLCBlcnIpOwo+IC0KPiAtZXJyX3JlcXVlc3Q6Cj4gICAJaTkx NV9yZXF1ZXN0X2FkZChycSk7Cj4gK2Vycl9iYXRjaDoKPiArCWk5MTVfdm1hX3VucGluKGJhdGNo KTsKPiArCWk5MTVfdm1hX2Nsb3NlKGJhdGNoKTsKPiAgIAo+ICAgCXJldHVybiBlcnI7Cj4gICB9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5l ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2lndF9zcGlubmVyLmMKPiBpbmRl eCA4Y2QzNGY2ZTY4NTkuLjBlNzBkZjAyMzBiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaWd0X3NwaW5uZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5jCj4gQEAgLTY4LDQ4ICs2OCw2NSBAQCBzdGF0aWMg dTY0IGh3c19hZGRyZXNzKGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAqaHdzLAo+ICAgCXJldHVybiBo d3MtPm5vZGUuc3RhcnQgKyBzZXFub19vZmZzZXQocnEtPmZlbmNlLmNvbnRleHQpOwo+ICAgfQo+ ICAgCj4gLXN0YXRpYyBpbnQgZW1pdF9yZWN1cnNlX2JhdGNoKHN0cnVjdCBpZ3Rfc3Bpbm5lciAq c3BpbiwKPiAtCQkJICAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gLQkJCSAgICAgIHUz MiBhcmJpdHJhdGlvbl9jb21tYW5kKQo+ICtzdGF0aWMgaW50IG1vdmVfdG9fYWN0aXZlKHN0cnVj dCBpOTE1X3ZtYSAqdm1hLAo+ICsJCQkgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICsJCQkg IHVuc2lnbmVkIGludCBmbGFncykKPiAgIHsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtID0gJnJxLT5nZW1fY29udGV4dC0+cHBndHQtPnZtOwo+ICsJaW50IGVycjsKPiArCj4gKwll cnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJxLCBmbGFncyk7Cj4gKwlpZiAoZXJy KQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJaWYgKCFpOTE1X2dlbV9vYmplY3RfaGFzX2FjdGl2 ZV9yZWZlcmVuY2Uodm1hLT5vYmopKSB7Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X2dldCh2bWEtPm9i aik7Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNlKHZtYS0+b2JqKTsK PiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RydWN0IGk5MTVfcmVxdWVzdCAq Cj4gK2lndF9zcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KHN0cnVjdCBpZ3Rfc3Bpbm5lciAqc3BpbiwK PiArCQkJICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCQkJICAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICsJCQkgICB1MzIgYXJiaXRyYXRpb25fY29tbWFuZCkK PiArewo+ICsJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSAmY3R4LT5wcGd0dC0+dm07 Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IE5VTEw7Cj4gICAJc3RydWN0IGk5MTVfdm1h ICpod3MsICp2bWE7Cj4gICAJdTMyICpiYXRjaDsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gICAJdm1h ID0gaTkxNV92bWFfaW5zdGFuY2Uoc3Bpbi0+b2JqLCB2bSwgTlVMTCk7Cj4gICAJaWYgKElTX0VS Uih2bWEpKQo+IC0JCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gKwkJcmV0dXJuIEVSUl9DQVNUKHZt YSk7Cj4gICAKPiAgIAlod3MgPSBpOTE1X3ZtYV9pbnN0YW5jZShzcGluLT5od3MsIHZtLCBOVUxM KTsKPiAgIAlpZiAoSVNfRVJSKGh3cykpCj4gLQkJcmV0dXJuIFBUUl9FUlIoaHdzKTsKPiArCQly ZXR1cm4gRVJSX0NBU1QoaHdzKTsKPiAgIAo+ICAgCWVyciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAs IDAsIFBJTl9VU0VSKTsKPiAgIAlpZiAoZXJyKQo+IC0JCXJldHVybiBlcnI7Cj4gKwkJcmV0dXJu IEVSUl9QVFIoZXJyKTsKPiAgIAo+ICAgCWVyciA9IGk5MTVfdm1hX3Bpbihod3MsIDAsIDAsIFBJ Tl9VU0VSKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIHVucGluX3ZtYTsKPiAgIAo+IC0JZXJy ID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBycSwgMCk7Cj4gLQlpZiAoZXJyKQo+ICsJ cnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOwo+ICsJaWYgKElTX0VSUihycSkp IHsKPiArCQllcnIgPSBQVFJfRVJSKHJxKTsKPiAgIAkJZ290byB1bnBpbl9od3M7Cj4gLQo+IC0J aWYgKCFpOTE1X2dlbV9vYmplY3RfaGFzX2FjdGl2ZV9yZWZlcmVuY2Uodm1hLT5vYmopKSB7Cj4g LQkJaTkxNV9nZW1fb2JqZWN0X2dldCh2bWEtPm9iaik7Cj4gLQkJaTkxNV9nZW1fb2JqZWN0X3Nl dF9hY3RpdmVfcmVmZXJlbmNlKHZtYS0+b2JqKTsKPiAgIAl9Cj4gICAKPiAtCWVyciA9IGk5MTVf dm1hX21vdmVfdG9fYWN0aXZlKGh3cywgcnEsIDApOwo+ICsJZXJyID0gbW92ZV90b19hY3RpdmUo dm1hLCBycSwgMCk7Cj4gICAJaWYgKGVycikKPiAtCQlnb3RvIHVucGluX2h3czsKPiArCQlnb3Rv IGNhbmNlbF9ycTsKPiAgIAo+IC0JaWYgKCFpOTE1X2dlbV9vYmplY3RfaGFzX2FjdGl2ZV9yZWZl cmVuY2UoaHdzLT5vYmopKSB7Cj4gLQkJaTkxNV9nZW1fb2JqZWN0X2dldChod3MtPm9iaik7Cj4g LQkJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVfcmVmZXJlbmNlKGh3cy0+b2JqKTsKPiAtCX0K PiArCWVyciA9IG1vdmVfdG9fYWN0aXZlKGh3cywgcnEsIDApOwo+ICsJaWYgKGVycikKPiArCQln b3RvIGNhbmNlbF9ycTsKPiAgIAo+ICAgCWJhdGNoID0gc3Bpbi0+YmF0Y2g7Cj4gICAKPiBAQCAt MTI3LDM1ICsxNDQsMTggQEAgc3RhdGljIGludCBlbWl0X3JlY3Vyc2VfYmF0Y2goc3RydWN0IGln dF9zcGlubmVyICpzcGluLAo+ICAgCj4gICAJaTkxNV9nZW1fY2hpcHNldF9mbHVzaChzcGluLT5p OTE1KTsKPiAgIAo+IC0JZXJyID0gcnEtPmVuZ2luZS0+ZW1pdF9iYl9zdGFydChycSwgdm1hLT5u b2RlLnN0YXJ0LCBQQUdFX1NJWkUsIDApOwo+ICsJZXJyID0gZW5naW5lLT5lbWl0X2JiX3N0YXJ0 KHJxLCB2bWEtPm5vZGUuc3RhcnQsIFBBR0VfU0laRSwgMCk7Cj4gICAKPiArY2FuY2VsX3JxOgo+ ICsJaWYgKGVycikgewo+ICsJCWk5MTVfcmVxdWVzdF9za2lwKHJxLCBlcnIpOwo+ICsJCWk5MTVf cmVxdWVzdF9hZGQocnEpOwo+ICsJfQo+ICAgdW5waW5faHdzOgo+ICAgCWk5MTVfdm1hX3VucGlu KGh3cyk7Cj4gICB1bnBpbl92bWE6Cj4gICAJaTkxNV92bWFfdW5waW4odm1hKTsKPiAtCXJldHVy biBlcnI7Cj4gLX0KPiAtCj4gLXN0cnVjdCBpOTE1X3JlcXVlc3QgKgo+IC1pZ3Rfc3Bpbm5lcl9j cmVhdGVfcmVxdWVzdChzdHJ1Y3QgaWd0X3NwaW5uZXIgKnNwaW4sCj4gLQkJCSAgIHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gLQkJCSAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPiAtCQkJICAgdTMyIGFyYml0cmF0aW9uX2NvbW1hbmQpCj4gLXsKPiAtCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOwo+IC0JaW50IGVycjsKPiAtCj4gLQlycSA9IGk5MTVfcmVxdWVzdF9h bGxvYyhlbmdpbmUsIGN0eCk7Cj4gLQlpZiAoSVNfRVJSKHJxKSkKPiAtCQlyZXR1cm4gcnE7Cj4g LQo+IC0JZXJyID0gZW1pdF9yZWN1cnNlX2JhdGNoKHNwaW4sIHJxLCBhcmJpdHJhdGlvbl9jb21t YW5kKTsKPiAtCWlmIChlcnIpIHsKPiAtCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKPiAtCQlyZXR1 cm4gRVJSX1BUUihlcnIpOwo+IC0JfQo+IC0KPiAtCXJldHVybiBycTsKPiArCXJldHVybiBlcnIg PyBFUlJfUFRSKGVycikgOiBycTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHUzMgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiBpbmRleCBh NDhmYmUyNTU3ZWEuLjBmZjgxM2FkMzQ2MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaW50ZWxfaGFuZ2NoZWNrLmMKPiBAQCAtMTAyLDUyICsxMDIsODcgQEAg c3RhdGljIHU2NCBod3NfYWRkcmVzcyhjb25zdCBzdHJ1Y3QgaTkxNV92bWEgKmh3cywKPiAgIAly ZXR1cm4gaHdzLT5ub2RlLnN0YXJ0ICsgb2Zmc2V0X2luX3BhZ2Uoc2l6ZW9mKHUzMikqcnEtPmZl bmNlLmNvbnRleHQpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgZW1pdF9yZWN1cnNlX2JhdGNo KHN0cnVjdCBoYW5nICpoLAo+IC0JCQkgICAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAr c3RhdGljIGludCBtb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiArCQkJICBz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiArCQkJICB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK3sK PiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBy cSwgZmxhZ3MpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCWlmICghaTkx NV9nZW1fb2JqZWN0X2hhc19hY3RpdmVfcmVmZXJlbmNlKHZtYS0+b2JqKSkgewo+ICsJCWk5MTVf Z2VtX29iamVjdF9nZXQodm1hLT5vYmopOwo+ICsJCWk5MTVfZ2VtX29iamVjdF9zZXRfYWN0aXZl X3JlZmVyZW5jZSh2bWEtPm9iaik7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAraGFuZ19jcmVhdGVfcmVxdWVzdChzdHJ1 Y3QgaGFuZyAqaCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gaC0+aTkxNTsKPiAgIAlzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSA9Cj4gLQkJcnEtPmdlbV9jb250ZXh0LT5wcGd0dCA/Cj4gLQkJJnJx LT5nZW1fY29udGV4dC0+cHBndHQtPnZtIDoKPiAtCQkmaTkxNS0+Z2d0dC52bTsKPiArCQloLT5j dHgtPnBwZ3R0ID8gJmgtPmN0eC0+cHBndHQtPnZtIDogJmk5MTUtPmdndHQudm07Cj4gKwlzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IE5VTEw7Cj4gICAJc3RydWN0IGk5MTVfdm1hICpod3MsICp2 bWE7Cj4gICAJdW5zaWduZWQgaW50IGZsYWdzOwo+ICAgCXUzMiAqYmF0Y2g7Cj4gICAJaW50IGVy cjsKPiAgIAo+ICsJaWYgKGk5MTVfZ2VtX29iamVjdF9pc19hY3RpdmUoaC0+b2JqKSkgewo+ICsJ CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwkJdm9pZCAqdmFkZHI7Cj4gKwo+ ICsJCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaC0+aTkxNSwgUEFHRV9T SVpFKTsKPiArCQlpZiAoSVNfRVJSKG9iaikpCj4gKwkJCXJldHVybiBFUlJfQ0FTVChvYmopOwo+ ICsKPiArCQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwKPiArCQkJCQkJaTkx NV9jb2hlcmVudF9tYXBfdHlwZShoLT5pOTE1KSk7Cj4gKwkJaWYgKElTX0VSUih2YWRkcikpIHsK PiArCQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICsJCQlyZXR1cm4gRVJSX0NBU1QodmFk ZHIpOwo+ICsJCX0KPiArCj4gKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChoLT5vYmopOwo+ ICsJCWk5MTVfZ2VtX29iamVjdF9wdXQoaC0+b2JqKTsKPiArCj4gKwkJaC0+b2JqID0gb2JqOwo+ ICsJCWgtPmJhdGNoID0gdmFkZHI7Cj4gKwl9Cj4gKwo+ICAgCXZtYSA9IGk5MTVfdm1hX2luc3Rh bmNlKGgtPm9iaiwgdm0sIE5VTEwpOwo+ICAgCWlmIChJU19FUlIodm1hKSkKPiAtCQlyZXR1cm4g UFRSX0VSUih2bWEpOwo+ICsJCXJldHVybiBFUlJfQ0FTVCh2bWEpOwo+ICAgCj4gICAJaHdzID0g aTkxNV92bWFfaW5zdGFuY2UoaC0+aHdzLCB2bSwgTlVMTCk7Cj4gICAJaWYgKElTX0VSUihod3Mp KQo+IC0JCXJldHVybiBQVFJfRVJSKGh3cyk7Cj4gKwkJcmV0dXJuIEVSUl9DQVNUKGh3cyk7Cj4g ICAKPiAgIAllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fVVNFUik7Cj4gICAJaWYg KGVycikKPiAtCQlyZXR1cm4gZXJyOwo+ICsJCXJldHVybiBFUlJfUFRSKGVycik7Cj4gICAKPiAg IAllcnIgPSBpOTE1X3ZtYV9waW4oaHdzLCAwLCAwLCBQSU5fVVNFUik7Cj4gICAJaWYgKGVycikK PiAgIAkJZ290byB1bnBpbl92bWE7Cj4gICAKPiAtCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0 aXZlKHZtYSwgcnEsIDApOwo+IC0JaWYgKGVycikKPiArCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9j KGVuZ2luZSwgaC0+Y3R4KTsKPiArCWlmIChJU19FUlIocnEpKSB7Cj4gKwkJZXJyID0gUFRSX0VS UihycSk7Cj4gICAJCWdvdG8gdW5waW5faHdzOwo+IC0KPiAtCWlmICghaTkxNV9nZW1fb2JqZWN0 X2hhc19hY3RpdmVfcmVmZXJlbmNlKHZtYS0+b2JqKSkgewo+IC0JCWk5MTVfZ2VtX29iamVjdF9n ZXQodm1hLT5vYmopOwo+IC0JCWk5MTVfZ2VtX29iamVjdF9zZXRfYWN0aXZlX3JlZmVyZW5jZSh2 bWEtPm9iaik7Cj4gICAJfQo+ICAgCj4gLQllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSho d3MsIHJxLCAwKTsKPiArCWVyciA9IG1vdmVfdG9fYWN0aXZlKHZtYSwgcnEsIDApOwo+ICAgCWlm IChlcnIpCj4gLQkJZ290byB1bnBpbl9od3M7Cj4gKwkJZ290byBjYW5jZWxfcnE7Cj4gICAKPiAt CWlmICghaTkxNV9nZW1fb2JqZWN0X2hhc19hY3RpdmVfcmVmZXJlbmNlKGh3cy0+b2JqKSkgewo+ IC0JCWk5MTVfZ2VtX29iamVjdF9nZXQoaHdzLT5vYmopOwo+IC0JCWk5MTVfZ2VtX29iamVjdF9z ZXRfYWN0aXZlX3JlZmVyZW5jZShod3MtPm9iaik7Cj4gLQl9Cj4gKwllcnIgPSBtb3ZlX3RvX2Fj dGl2ZShod3MsIHJxLCAwKTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBjYW5jZWxfcnE7Cj4gICAK PiAgIAliYXRjaCA9IGgtPmJhdGNoOwo+ICAgCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgewo+ IEBAIC0yMTIsNTIgKzI0NywxNiBAQCBzdGF0aWMgaW50IGVtaXRfcmVjdXJzZV9iYXRjaChzdHJ1 Y3QgaGFuZyAqaCwKPiAgIAo+ICAgCWVyciA9IHJxLT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEs IHZtYS0+bm9kZS5zdGFydCwgUEFHRV9TSVpFLCBmbGFncyk7Cj4gICAKPiArY2FuY2VsX3JxOgo+ ICsJaWYgKGVycikgewo+ICsJCWk5MTVfcmVxdWVzdF9za2lwKHJxLCBlcnIpOwo+ICsJCWk5MTVf cmVxdWVzdF9hZGQocnEpOwo+ICsJfQo+ICAgdW5waW5faHdzOgo+ICAgCWk5MTVfdm1hX3VucGlu KGh3cyk7Cj4gICB1bnBpbl92bWE6Cj4gICAJaTkxNV92bWFfdW5waW4odm1hKTsKPiAtCXJldHVy biBlcnI7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAtaGFuZ19j cmVhdGVfcmVxdWVzdChzdHJ1Y3QgaGFuZyAqaCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+IC17Cj4gLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAtCWludCBlcnI7Cj4gLQo+ IC0JaWYgKGk5MTVfZ2VtX29iamVjdF9pc19hY3RpdmUoaC0+b2JqKSkgewo+IC0JCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQkJdm9pZCAqdmFkZHI7Cj4gLQo+IC0JCW9iaiA9 IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaC0+aTkxNSwgUEFHRV9TSVpFKTsKPiAt CQlpZiAoSVNfRVJSKG9iaikpCj4gLQkJCXJldHVybiBFUlJfQ0FTVChvYmopOwo+IC0KPiAtCQl2 YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwKPiAtCQkJCQkJaTkxNV9jb2hlcmVu dF9tYXBfdHlwZShoLT5pOTE1KSk7Cj4gLQkJaWYgKElTX0VSUih2YWRkcikpIHsKPiAtCQkJaTkx NV9nZW1fb2JqZWN0X3B1dChvYmopOwo+IC0JCQlyZXR1cm4gRVJSX0NBU1QodmFkZHIpOwo+IC0J CX0KPiAtCj4gLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChoLT5vYmopOwo+IC0JCWk5MTVf Z2VtX29iamVjdF9wdXQoaC0+b2JqKTsKPiAtCj4gLQkJaC0+b2JqID0gb2JqOwo+IC0JCWgtPmJh dGNoID0gdmFkZHI7Cj4gLQl9Cj4gLQo+IC0JcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5l LCBoLT5jdHgpOwo+IC0JaWYgKElTX0VSUihycSkpCj4gLQkJcmV0dXJuIHJxOwo+IC0KPiAtCWVy ciA9IGVtaXRfcmVjdXJzZV9iYXRjaChoLCBycSk7Cj4gLQlpZiAoZXJyKSB7Cj4gLQkJaTkxNV9y ZXF1ZXN0X2FkZChycSk7Cj4gLQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPiAtCX0KPiAtCj4gLQly ZXR1cm4gcnE7Cj4gKwlyZXR1cm4gZXJyID8gRVJSX1BUUihlcnIpIDogcnE7Cj4gICB9Cj4gICAK PiAgIHN0YXRpYyB1MzIgaHdzX3NlcW5vKGNvbnN0IHN0cnVjdCBoYW5nICpoLCBjb25zdCBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAKClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK