From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 07/39] drm/i915: Report the number of closed vma held by each context in debugfs Date: Fri, 04 Jan 2019 15:54:21 +0200 Message-ID: <871s5s4jg2.fsf@gaia.fi.intel.com> References: <20190102094139.24014-1-chris@chris-wilson.co.uk> <20190102094139.24014-7-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0F4EC6E342 for ; Fri, 4 Jan 2019 13:55:58 +0000 (UTC) In-Reply-To: <20190102094139.24014-7-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 Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gSW5jbHVk ZSB0aGUgdG90YWwgc2l6ZSBvZiBjbG9zZWQgdm1hIHdoZW4gcmVwb3J0aW5nIHRoZSBwZXJfY3R4 X3N0YXRzIG9mCj4gZGVidWdmcy9pOTE1X2dlbV9vYmplY3RzLgo+Cj4gV2hpbHN0IGFkanVzdGlu ZyB0aGUgY29udGV4dCB0cmFja2luZywgbm90ZSB0aGF0IHdlIGNhbiBzaW1wbHkgdXNlIG91cgo+ IGxpc3Qgb2YgY29udGV4dHMgaW4gaTkxNS0+Y29udGV4dHMgcmF0aGVyIHRoYW4gY2lyY3VtbG9j dXRlIHZpYQo+IGRldi0+ZmlsZWxpc3QgYW5kIHRoZSBwZXItZmlsZSBjb250ZXh0IGlkciwgd2l0 aCB0aGUgcmVzdWx0IHRoYXQgd2UgY2FuCj4gc2hvdyBvYmplY3RzIGFsbG9jYXRlZCB0byBkaWZm ZXJlbnQgdm0gKGkuZS4gY29udGV4dHMgd2l0aGluIGEgZmlsZSkuCj4KPiBTaWduZWQtb2ZmLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCAxMjQgKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25z KC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IGI4OWFiYmJhNDYw NC4uYzJmNTZjMWM4MTk5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBA QCAtMjk3LDExICsyOTcsMTIgQEAgc3RhdGljIGludCBpOTE1X2dlbV9zdG9sZW5fbGlzdF9pbmZv KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgfQo+ICAKPiAgc3RydWN0IGZpbGVf c3RhdHMgewo+IC0Jc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2Owo+ICsJ c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Cj4gIAl1bnNpZ25lZCBsb25nIGNvdW50Owo+ ICAJdTY0IHRvdGFsLCB1bmJvdW5kOwo+ICAJdTY0IGdsb2JhbCwgc2hhcmVkOwo+ICAJdTY0IGFj dGl2ZSwgaW5hY3RpdmU7Cj4gKwl1NjQgY2xvc2VkOwo+ICB9Owo+ICAKPiAgc3RhdGljIGludCBw ZXJfZmlsZV9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKPiBAQCAtMzI2LDkg KzMyNyw3IEBAIHN0YXRpYyBpbnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lkICpwdHIsIHZv aWQgKmRhdGEpCj4gIAkJaWYgKGk5MTVfdm1hX2lzX2dndHQodm1hKSkgewo+ICAJCQlzdGF0cy0+ Z2xvYmFsICs9IHZtYS0+bm9kZS5zaXplOwo+ICAJCX0gZWxzZSB7Cj4gLQkJCXN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCA9IGk5MTVfdm1fdG9fcHBndHQodm1hLT52bSk7Cj4gLQo+IC0JCQlp ZiAocHBndHQtPnZtLmZpbGUgIT0gc3RhdHMtPmZpbGVfcHJpdikKPiArCQkJaWYgKHZtYS0+dm0g IT0gc3RhdHMtPnZtKQo+ICAJCQkJY29udGludWU7Cj4gIAkJfQo+ICAKPiBAQCAtMzM2LDYgKzMz NSw5IEBAIHN0YXRpYyBpbnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQg KmRhdGEpCj4gIAkJCXN0YXRzLT5hY3RpdmUgKz0gdm1hLT5ub2RlLnNpemU7Cj4gIAkJZWxzZQo+ ICAJCQlzdGF0cy0+aW5hY3RpdmUgKz0gdm1hLT5ub2RlLnNpemU7Cj4gKwo+ICsJCWlmIChpOTE1 X3ZtYV9pc19jbG9zZWQodm1hKSkKPiArCQkJc3RhdHMtPmNsb3NlZCArPSB2bWEtPm5vZGUuc2l6 ZTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMzQzLDcgKzM0NSw3IEBAIHN0YXRpYyBp bnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpCj4gIAo+ICAj ZGVmaW5lIHByaW50X2ZpbGVfc3RhdHMobSwgbmFtZSwgc3RhdHMpIGRvIHsgXAo+ICAJaWYgKHN0 YXRzLmNvdW50KSBcCj4gLQkJc2VxX3ByaW50ZihtLCAiJXM6ICVsdSBvYmplY3RzLCAlbGx1IGJ5 dGVzICglbGx1IGFjdGl2ZSwgJWxsdSBpbmFjdGl2ZSwgJWxsdSBnbG9iYWwsICVsbHUgc2hhcmVk LCAlbGx1IHVuYm91bmQpXG4iLCBcCj4gKwkJc2VxX3ByaW50ZihtLCAiJXM6ICVsdSBvYmplY3Rz LCAlbGx1IGJ5dGVzICglbGx1IGFjdGl2ZSwgJWxsdSBpbmFjdGl2ZSwgJWxsdSBnbG9iYWwsICVs bHUgc2hhcmVkLCAlbGx1IHVuYm91bmQsICVsbHUgY2xvc2VkKVxuIiwgXAo+ICAJCQkgICBuYW1l LCBcCj4gIAkJCSAgIHN0YXRzLmNvdW50LCBcCj4gIAkJCSAgIHN0YXRzLnRvdGFsLCBcCj4gQEAg LTM1MSwyMCArMzUzLDE5IEBAIHN0YXRpYyBpbnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lk ICpwdHIsIHZvaWQgKmRhdGEpCj4gIAkJCSAgIHN0YXRzLmluYWN0aXZlLCBcCj4gIAkJCSAgIHN0 YXRzLmdsb2JhbCwgXAo+ICAJCQkgICBzdGF0cy5zaGFyZWQsIFwKPiAtCQkJICAgc3RhdHMudW5i b3VuZCk7IFwKPiArCQkJICAgc3RhdHMudW5ib3VuZCwgXAo+ICsJCQkgICBzdGF0cy5jbG9zZWQp OyBcCj4gIH0gd2hpbGUgKDApCj4gIAo+ICBzdGF0aWMgdm9pZCBwcmludF9iYXRjaF9wb29sX3N0 YXRzKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiAgCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAt CXN0cnVjdCBmaWxlX3N0YXRzIHN0YXRzOwo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOwo+ICsJc3RydWN0IGZpbGVfc3RhdHMgc3RhdHMgPSB7fTsKPiAgCWVudW0gaW50ZWxfZW5n aW5lX2lkIGlkOwo+ICAJaW50IGo7Cj4gIAo+IC0JbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKHN0 YXRzKSk7Cj4gLQo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7Cj4g IAkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoZW5naW5lLT5iYXRjaF9wb29sLmNhY2hlX2xp c3QpOyBqKyspIHsKPiAgCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosCj4gQEAgLTM3Nyw0NCAr Mzc4LDQ3IEBAIHN0YXRpYyB2b2lkIHByaW50X2JhdGNoX3Bvb2xfc3RhdHMoc3RydWN0IHNlcV9m aWxlICptLAo+ICAJcHJpbnRfZmlsZV9zdGF0cyhtLCAiW2tdYmF0Y2ggcG9vbCIsIHN0YXRzKTsK PiAgfQo+ICAKPiAtc3RhdGljIGludCBwZXJfZmlsZV9jdHhfc3RhdHMoaW50IGlkeCwgdm9pZCAq cHRyLCB2b2lkICpkYXRhKQo+ICtzdGF0aWMgdm9pZCBwcmludF9jb250ZXh0X3N0YXRzKHN0cnVj dCBzZXFfZmlsZSAqbSwKPiArCQkJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICB7 Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gcHRyOwo+IC0Jc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lOwo+IC0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlzdHJ1 Y3QgZmlsZV9zdGF0cyBrc3RhdHMgPSB7fTsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHg7Cj4gIAo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgY3R4LT5pOTE1LCBpZCkgewo+IC0J CXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUp Owo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZpOTE1LT5jb250ZXh0cy5saXN0LCBsaW5r KSB7Cj4gKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJCWVudW0gaW50ZWxf ZW5naW5lX2lkIGlkOwo+ICAKPiAtCQlpZiAoY2UtPnN0YXRlKQo+IC0JCQlwZXJfZmlsZV9zdGF0 cygwLCBjZS0+c3RhdGUtPm9iaiwgZGF0YSk7Cj4gLQkJaWYgKGNlLT5yaW5nKQo+IC0JCQlwZXJf ZmlsZV9zdGF0cygwLCBjZS0+cmluZy0+dm1hLT5vYmosIGRhdGEpOwo+IC0JfQo+ICsJCWZvcl9l YWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOwo+ICAKPiAtCXJldHVybiAwOwo+ IC19Cj4gKwkJCWlmIChjZS0+c3RhdGUpCj4gKwkJCQlwZXJfZmlsZV9zdGF0cygwLCBjZS0+c3Rh dGUtPm9iaiwgJmtzdGF0cyk7Cj4gKwkJCWlmIChjZS0+cmluZykKPiArCQkJCXBlcl9maWxlX3N0 YXRzKDAsIGNlLT5yaW5nLT52bWEtPm9iaiwgJmtzdGF0cyk7Cj4gKwkJfQo+ICAKPiAtc3RhdGlj IHZvaWQgcHJpbnRfY29udGV4dF9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4gLQkJCQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKPiAtCXN0cnVjdCBmaWxlX3N0YXRzIHN0YXRzOwo+IC0J c3RydWN0IGRybV9maWxlICpmaWxlOwo+ICsJCWlmICghSVNfRVJSX09SX05VTEwoY3R4LT5maWxl X3ByaXYpKSB7Cj4gKwkJCXN0cnVjdCBmaWxlX3N0YXRzIHN0YXRzID0geyAudm0gPSAmY3R4LT5w cGd0dC0+dm0sIH07Cj4gKwkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZSA9IGN0eC0+ZmlsZV9wcml2 LT5maWxlOwo+ICsJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7Cj4gKwkJCWNoYXIgbmFtZVs4 MF07Cj4gIAo+IC0JbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKHN0YXRzKSk7Cj4gKwkJCXNwaW5f bG9jaygmZmlsZS0+dGFibGVfbG9jayk7Cj4gKwkJCWlkcl9mb3JfZWFjaCgmZmlsZS0+b2JqZWN0 X2lkciwgcGVyX2ZpbGVfc3RhdHMsICZzdGF0cyk7Cj4gKwkJCXNwaW5fdW5sb2NrKCZmaWxlLT50 YWJsZV9sb2NrKTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlp ZiAoZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0KQo+IC0JCXBlcl9maWxlX2N0eF9zdGF0cygwLCBk ZXZfcHJpdi0+a2VybmVsX2NvbnRleHQsICZzdGF0cyk7Cj4gKwkJCXJjdV9yZWFkX2xvY2soKTsK PiArCQkJdGFzayA9IHBpZF90YXNrKGN0eC0+cGlkID86IGZpbGUtPnBpZCwgUElEVFlQRV9QSUQp Owo+ICsJCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICIlcy8lZCIsCj4gKwkJCQkgdGFz ayA/IHRhc2stPmNvbW0gOiAiPHVua25vd24+IiwKPiArCQkJCSBjdHgtPnVzZXJfaGFuZGxlKTsK PiArCQkJcmN1X3JlYWRfdW5sb2NrKCk7CgpZb3UgcmVtb3ZlZCB0aGUgY29tbWVudCBidXQuLi4g dGhlIHBhdHRlcm4gdG8gcHJvdGVjdAp0YXNrLT5jb21tIGlzIHJhdGhlciB3ZWxsIGVzdGFibGlz aGVkIHNvIEkgZG9udCBtaW5kLgoKUmV2aWV3ZWQtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3Vv cHBhbGFAbGludXguaW50ZWwuY29tPgoKPiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpbGUs ICZkZXYtPmZpbGVsaXN0LCBsaGVhZCkgewo+IC0JCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZh dGUgKmZwcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4gLQkJaWRyX2Zvcl9lYWNoKCZmcHJpdi0+ Y29udGV4dF9pZHIsIHBlcl9maWxlX2N0eF9zdGF0cywgJnN0YXRzKTsKPiArCQkJcHJpbnRfZmls ZV9zdGF0cyhtLCBuYW1lLCBzdGF0cyk7Cj4gKwkJfQo+ICAJfQo+IC0JbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JcHJpbnRfZmlsZV9zdGF0cyhtLCAiW2tdY29udGV4 dHMiLCBzdGF0cyk7Cj4gKwlwcmludF9maWxlX3N0YXRzKG0sICJba11jb250ZXh0cyIsIGtzdGF0 cyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQo+IEBAIC00MjYsMTQgKzQzMCw5IEBAIHN0YXRpYyBpbnQg aTkxNV9nZW1fb2JqZWN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJ dTY0IHNpemUsIG1hcHBlZF9zaXplLCBwdXJnZWFibGVfc2l6ZSwgZHB5X3NpemUsIGh1Z2Vfc2l6 ZTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gIAl1bnNpZ25lZCBpbnQg cGFnZV9zaXplcyA9IDA7Cj4gLQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gIAljaGFyIGJ1Zls4 MF07Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+IC0KPiAg CXNlcV9wcmludGYobSwgIiV1IG9iamVjdHMsICVsbHUgYnl0ZXNcbiIsCj4gIAkJICAgZGV2X3By aXYtPm1tLm9iamVjdF9jb3VudCwKPiAgCQkgICBkZXZfcHJpdi0+bW0ub2JqZWN0X21lbW9yeSk7 Cj4gQEAgLTUxNCw0MyArNTEzLDE0IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2luZm8o c3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJCQkJCWJ1Ziwgc2l6ZW9mKGJ1Zikp KTsKPiAgCj4gIAlzZXFfcHV0YyhtLCAnXG4nKTsKPiAtCXByaW50X2JhdGNoX3Bvb2xfc3RhdHMo bSwgZGV2X3ByaXYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQo+ IC0JbXV0ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gLQlwcmludF9jb250ZXh0X3N0 YXRzKG0sIGRldl9wcml2KTsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShmaWxlLCAm ZGV2LT5maWxlbGlzdCwgbGhlYWQpIHsKPiAtCQlzdHJ1Y3QgZmlsZV9zdGF0cyBzdGF0czsKPiAt CQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJf cHJpdjsKPiAtCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0Owo+IC0JCXN0cnVjdCB0YXNr X3N0cnVjdCAqdGFzazsKPiAtCj4gLQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ ICAKPiAtCQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2Yoc3RhdHMpKTsKPiAtCQlzdGF0cy5maWxl X3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiAtCQlzcGluX2xvY2soJmZpbGUtPnRhYmxlX2xv Y2spOwo+IC0JCWlkcl9mb3JfZWFjaCgmZmlsZS0+b2JqZWN0X2lkciwgcGVyX2ZpbGVfc3RhdHMs ICZzdGF0cyk7Cj4gLQkJc3Bpbl91bmxvY2soJmZpbGUtPnRhYmxlX2xvY2spOwo+IC0JCS8qCj4g LQkJICogQWx0aG91Z2ggd2UgaGF2ZSBhIHZhbGlkIHJlZmVyZW5jZSBvbiBmaWxlLT5waWQsIHRo YXQgZG9lcwo+IC0JCSAqIG5vdCBndWFyYW50ZWUgdGhhdCB0aGUgdGFza19zdHJ1Y3Qgd2hvIGNh bGxlZCBnZXRfcGlkKCkgaXMKPiAtCQkgKiBzdGlsbCBhbGl2ZSAoZS5nLiBnZXRfcGlkKGN1cnJl bnQpID0+IGZvcmsoKSA9PiBleGl0KCkpLgo+IC0JCSAqIFRoZXJlZm9yZSwgd2UgbmVlZCB0byBw cm90ZWN0IHRoaXMgLT5jb21tIGFjY2VzcyB1c2luZyBSQ1UuCj4gLQkJICovCj4gLQkJcmVxdWVz dCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZmlsZV9wcml2LT5tbS5yZXF1ZXN0X2xpc3Qs Cj4gLQkJCQkJCSAgIHN0cnVjdCBpOTE1X3JlcXVlc3QsCj4gLQkJCQkJCSAgIGNsaWVudF9saW5r KTsKPiAtCQlyY3VfcmVhZF9sb2NrKCk7Cj4gLQkJdGFzayA9IHBpZF90YXNrKHJlcXVlc3QgJiYg cmVxdWVzdC0+Z2VtX2NvbnRleHQtPnBpZCA/Cj4gLQkJCQlyZXF1ZXN0LT5nZW1fY29udGV4dC0+ cGlkIDogZmlsZS0+cGlkLAo+IC0JCQkJUElEVFlQRV9QSUQpOwo+IC0JCXByaW50X2ZpbGVfc3Rh dHMobSwgdGFzayA/IHRhc2stPmNvbW0gOiAiPHVua25vd24+Iiwgc3RhdHMpOwo+IC0JCXJjdV9y ZWFkX3VubG9jaygpOwo+ICsJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0 cnVjdF9tdXRleCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gIAo+IC0JCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYt PmZpbGVsaXN0X211dGV4KTsKPiArCXByaW50X2JhdGNoX3Bvb2xfc3RhdHMobSwgZGV2X3ByaXYp Owo+ICsJcHJpbnRfY29udGV4dF9zdGF0cyhtLCBkZXZfcHJpdik7Cj4gKwltdXRleF91bmxvY2so JmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IC0tIAo+IDIuMjAu MQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK