From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 02/46] drm/i915: Report the number of closed vma held by each context in debugfs Date: Mon, 07 Jan 2019 14:35:48 +0200 Message-ID: <87va303asb.fsf@gaia.fi.intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 46C6B6E756 for ; Mon, 7 Jan 2019 12:37:27 +0000 (UTC) In-Reply-To: <20190107115509.12523-2-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 ZXJlbnQgdm0gKGkuZS4gY29udGV4dHMgd2l0aGluIGEgZmlsZSkuCj4KPiBXZSBjaGFuZ2UgdGhl IG91dHB1dCB0byBzaG93IGV2ZXJ5IGNvbnRleHQgb2YgZWFjaCBjbGllbnQsIHdpdGggaXRzIG93 bgo+IHVuaXF1ZSBzZXQgb2Ygb2JqZWN0cyAoZm9yIGZ1bGwtcHBndHQgbWFjaGluZXMsIGkuZS4g Z2VuNyssIGZvciBvbGRlcgo+IGhhcmR3YXJlIGFsbCBvYmplY3RzIGFyZSBpbiB0aGUgZ2xvYmFs IGd0dCBhbmQgc28gY2FuIG5vdCBiZSBhc3NvY2lhdGVkCj4gd2l0aCBhIHNpbmdsZSBjb250ZXh0 KS4gVGhhdCBzaG91bGQgcmVzdWx0IGluIG5vIGxvc3Mgb2YgaW5mb3JtYXRpb24sCj4gYW5kIGZv ciBnZW43Kywgbm8gZHVwbGljYXRpb24gb2YgYWN0aXZlIG9iamVjdHMuCj4KPiBTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCAxMjQgKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRp b25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDE5MzgyMzA0 OGY5Ni4uYzc3MzI2YTdkMDU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiBAQCAtMjk3LDExICsyOTcsMTIgQEAgc3RhdGljIGludCBpOTE1X2dlbV9zdG9sZW5fbGlzdF9p bmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgfQo+ICAKPiAgc3RydWN0IGZp bGVfc3RhdHMgewo+IC0Jc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2Owo+ ICsJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Cj4gIAl1bnNpZ25lZCBsb25nIGNvdW50 Owo+ICAJdTY0IHRvdGFsLCB1bmJvdW5kOwo+ICAJdTY0IGdsb2JhbCwgc2hhcmVkOwo+ICAJdTY0 IGFjdGl2ZSwgaW5hY3RpdmU7Cj4gKwl1NjQgY2xvc2VkOwo+ICB9Owo+ICAKPiAgc3RhdGljIGlu dCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKPiBAQCAtMzI2 LDkgKzMyNyw3IEBAIHN0YXRpYyBpbnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lkICpwdHIs IHZvaWQgKmRhdGEpCj4gIAkJaWYgKGk5MTVfdm1hX2lzX2dndHQodm1hKSkgewo+ICAJCQlzdGF0 cy0+Z2xvYmFsICs9IHZtYS0+bm9kZS5zaXplOwo+ICAJCX0gZWxzZSB7Cj4gLQkJCXN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCA9IGk5MTVfdm1fdG9fcHBndHQodm1hLT52bSk7Cj4gLQo+IC0J CQlpZiAocHBndHQtPnZtLmZpbGUgIT0gc3RhdHMtPmZpbGVfcHJpdikKPiArCQkJaWYgKHZtYS0+ dm0gIT0gc3RhdHMtPnZtKQo+ICAJCQkJY29udGludWU7Cj4gIAkJfQo+ICAKPiBAQCAtMzM2LDYg KzMzNSw5IEBAIHN0YXRpYyBpbnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lkICpwdHIsIHZv aWQgKmRhdGEpCj4gIAkJCXN0YXRzLT5hY3RpdmUgKz0gdm1hLT5ub2RlLnNpemU7Cj4gIAkJZWxz ZQo+ICAJCQlzdGF0cy0+aW5hY3RpdmUgKz0gdm1hLT5ub2RlLnNpemU7Cj4gKwo+ICsJCWlmIChp OTE1X3ZtYV9pc19jbG9zZWQodm1hKSkKPiArCQkJc3RhdHMtPmNsb3NlZCArPSB2bWEtPm5vZGUu c2l6ZTsKPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMzQzLDcgKzM0NSw3IEBAIHN0YXRp YyBpbnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpCj4gIAo+ ICAjZGVmaW5lIHByaW50X2ZpbGVfc3RhdHMobSwgbmFtZSwgc3RhdHMpIGRvIHsgXAo+ICAJaWYg KHN0YXRzLmNvdW50KSBcCj4gLQkJc2VxX3ByaW50ZihtLCAiJXM6ICVsdSBvYmplY3RzLCAlbGx1 IGJ5dGVzICglbGx1IGFjdGl2ZSwgJWxsdSBpbmFjdGl2ZSwgJWxsdSBnbG9iYWwsICVsbHUgc2hh cmVkLCAlbGx1IHVuYm91bmQpXG4iLCBcCj4gKwkJc2VxX3ByaW50ZihtLCAiJXM6ICVsdSBvYmpl Y3RzLCAlbGx1IGJ5dGVzICglbGx1IGFjdGl2ZSwgJWxsdSBpbmFjdGl2ZSwgJWxsdSBnbG9iYWws ICVsbHUgc2hhcmVkLCAlbGx1IHVuYm91bmQsICVsbHUgY2xvc2VkKVxuIiwgXAo+ICAJCQkgICBu YW1lLCBcCj4gIAkJCSAgIHN0YXRzLmNvdW50LCBcCj4gIAkJCSAgIHN0YXRzLnRvdGFsLCBcCj4g QEAgLTM1MSwyMCArMzUzLDE5IEBAIHN0YXRpYyBpbnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2 b2lkICpwdHIsIHZvaWQgKmRhdGEpCj4gIAkJCSAgIHN0YXRzLmluYWN0aXZlLCBcCj4gIAkJCSAg IHN0YXRzLmdsb2JhbCwgXAo+ICAJCQkgICBzdGF0cy5zaGFyZWQsIFwKPiAtCQkJICAgc3RhdHMu dW5ib3VuZCk7IFwKPiArCQkJICAgc3RhdHMudW5ib3VuZCwgXAo+ICsJCQkgICBzdGF0cy5jbG9z ZWQpOyBcCj4gIH0gd2hpbGUgKDApCj4gIAo+ICBzdGF0aWMgdm9pZCBwcmludF9iYXRjaF9wb29s X3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiAgCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsK PiAtCXN0cnVjdCBmaWxlX3N0YXRzIHN0YXRzOwo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOwo+ICsJc3RydWN0IGZpbGVfc3RhdHMgc3RhdHMgPSB7fTsKPiAgCWVudW0gaW50ZWxf ZW5naW5lX2lkIGlkOwo+ICAJaW50IGo7Cj4gIAo+IC0JbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9m KHN0YXRzKSk7Cj4gLQo+ICAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7 Cj4gIAkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoZW5naW5lLT5iYXRjaF9wb29sLmNhY2hl X2xpc3QpOyBqKyspIHsKPiAgCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosCj4gQEAgLTM3Nyw0 NCArMzc4LDQ3IEBAIHN0YXRpYyB2b2lkIHByaW50X2JhdGNoX3Bvb2xfc3RhdHMoc3RydWN0IHNl cV9maWxlICptLAo+ICAJcHJpbnRfZmlsZV9zdGF0cyhtLCAiW2tdYmF0Y2ggcG9vbCIsIHN0YXRz KTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBwZXJfZmlsZV9jdHhfc3RhdHMoaW50IGlkeCwgdm9p ZCAqcHRyLCB2b2lkICpkYXRhKQo+ICtzdGF0aWMgdm9pZCBwcmludF9jb250ZXh0X3N0YXRzKHN0 cnVjdCBzZXFfZmlsZSAqbSwKPiArCQkJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICB7Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0gcHRyOwo+IC0Jc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IC0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlz dHJ1Y3QgZmlsZV9zdGF0cyBrc3RhdHMgPSB7fTsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHg7Cj4gIAo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgY3R4LT5pOTE1LCBpZCkgewo+ IC0JCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdp bmUpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZpOTE1LT5jb250ZXh0cy5saXN0LCBs aW5rKSB7Cj4gKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJCWVudW0gaW50 ZWxfZW5naW5lX2lkIGlkOwo+ICAKPiAtCQlpZiAoY2UtPnN0YXRlKQo+IC0JCQlwZXJfZmlsZV9z dGF0cygwLCBjZS0+c3RhdGUtPm9iaiwgZGF0YSk7Cj4gLQkJaWYgKGNlLT5yaW5nKQo+IC0JCQlw ZXJfZmlsZV9zdGF0cygwLCBjZS0+cmluZy0+dm1hLT5vYmosIGRhdGEpOwo+IC0JfQo+ICsJCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOwo+ICAKPiAtCXJldHVybiAw Owo+IC19Cj4gKwkJCWlmIChjZS0+c3RhdGUpCj4gKwkJCQlwZXJfZmlsZV9zdGF0cygwLCBjZS0+ c3RhdGUtPm9iaiwgJmtzdGF0cyk7Cj4gKwkJCWlmIChjZS0+cmluZykKPiArCQkJCXBlcl9maWxl X3N0YXRzKDAsIGNlLT5yaW5nLT52bWEtPm9iaiwgJmtzdGF0cyk7Cj4gKwkJfQo+ICAKPiAtc3Rh dGljIHZvaWQgcHJpbnRfY29udGV4dF9zdGF0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4gLQkJCQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKPiAtCXN0cnVjdCBmaWxlX3N0YXRzIHN0YXRzOwo+ IC0Jc3RydWN0IGRybV9maWxlICpmaWxlOwo+ICsJCWlmICghSVNfRVJSX09SX05VTEwoY3R4LT5m aWxlX3ByaXYpKSB7Cj4gKwkJCXN0cnVjdCBmaWxlX3N0YXRzIHN0YXRzID0geyAudm0gPSAmY3R4 LT5wcGd0dC0+dm0sIH07Cj4gKwkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZSA9IGN0eC0+ZmlsZV9w cml2LT5maWxlOwo+ICsJCQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7Cj4gKwkJCWNoYXIgbmFt ZVs4MF07Cj4gIAo+IC0JbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKHN0YXRzKSk7Cj4gKwkJCXNw aW5fbG9jaygmZmlsZS0+dGFibGVfbG9jayk7Cj4gKwkJCWlkcl9mb3JfZWFjaCgmZmlsZS0+b2Jq ZWN0X2lkciwgcGVyX2ZpbGVfc3RhdHMsICZzdGF0cyk7Cj4gKwkJCXNwaW5fdW5sb2NrKCZmaWxl LT50YWJsZV9sb2NrKTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g LQlpZiAoZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0KQo+IC0JCXBlcl9maWxlX2N0eF9zdGF0cygw LCBkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQsICZzdGF0cyk7Cj4gKwkJCXJjdV9yZWFkX2xvY2so KTsKPiArCQkJdGFzayA9IHBpZF90YXNrKGN0eC0+cGlkID86IGZpbGUtPnBpZCwgUElEVFlQRV9Q SUQpOwo+ICsJCQlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICIlcy8lZCIsCj4gKwkJCQkg dGFzayA/IHRhc2stPmNvbW0gOiAiPHVua25vd24+IiwKPiArCQkJCSBjdHgtPnVzZXJfaGFuZGxl KTsKPiArCQkJcmN1X3JlYWRfdW5sb2NrKCk7CgpJIHN0YW1wZWQgdGhpcyBmcm9tIHRoZSBwcmV2 aW91cyBzdWJtaXNzaW9uLCBzbyBjdXRwYXN0aW5nIGhlcmU6CgpZb3UgcmVtb3ZlZCB0aGUgY29t bWVudCBidXQuLi4gdGhlIHBhdHRlcm4gdG8gcHJvdGVjdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAp0YXNrLT5jb21tIGlzIHJhdGhl ciB3ZWxsIGVzdGFibGlzaGVkIHNvIEkgZG9udCBtaW5kLgoKUmV2aWV3ZWQtYnk6IE1pa2EgS3Vv cHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgoKPiAgCj4gLQlsaXN0X2Zvcl9l YWNoX2VudHJ5KGZpbGUsICZkZXYtPmZpbGVsaXN0LCBsaGVhZCkgewo+IC0JCXN0cnVjdCBkcm1f aTkxNV9maWxlX3ByaXZhdGUgKmZwcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4gLQkJaWRyX2Zv cl9lYWNoKCZmcHJpdi0+Y29udGV4dF9pZHIsIHBlcl9maWxlX2N0eF9zdGF0cywgJnN0YXRzKTsK PiArCQkJcHJpbnRfZmlsZV9zdGF0cyhtLCBuYW1lLCBzdGF0cyk7Cj4gKwkJfQo+ICAJfQo+IC0J bXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JcHJpbnRfZmlsZV9zdGF0 cyhtLCAiW2tdY29udGV4dHMiLCBzdGF0cyk7Cj4gKwlwcmludF9maWxlX3N0YXRzKG0sICJba11j b250ZXh0cyIsIGtzdGF0cyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0 X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+IEBAIC00MjYsMTQgKzQzMCw5 IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fb2JqZWN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICpkYXRhKQo+ICAJdTY0IHNpemUsIG1hcHBlZF9zaXplLCBwdXJnZWFibGVfc2l6ZSwgZHB5 X3NpemUsIGh1Z2Vfc2l6ZTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4g IAl1bnNpZ25lZCBpbnQgcGFnZV9zaXplcyA9IDA7Cj4gLQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7 Cj4gIAljaGFyIGJ1Zls4MF07Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCXJldCA9IG11dGV4X2xvY2tf aW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1 cm4gcmV0Owo+IC0KPiAgCXNlcV9wcmludGYobSwgIiV1IG9iamVjdHMsICVsbHUgYnl0ZXNcbiIs Cj4gIAkJICAgZGV2X3ByaXYtPm1tLm9iamVjdF9jb3VudCwKPiAgCQkgICBkZXZfcHJpdi0+bW0u b2JqZWN0X21lbW9yeSk7Cj4gQEAgLTUxNCw0MyArNTEzLDE0IEBAIHN0YXRpYyBpbnQgaTkxNV9n ZW1fb2JqZWN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJCQkJCWJ1 Ziwgc2l6ZW9mKGJ1ZikpKTsKPiAgCj4gIAlzZXFfcHV0YyhtLCAnXG4nKTsKPiAtCXByaW50X2Jh dGNoX3Bvb2xfc3RhdHMobSwgZGV2X3ByaXYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gLQlw cmludF9jb250ZXh0X3N0YXRzKG0sIGRldl9wcml2KTsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlf cmV2ZXJzZShmaWxlLCAmZGV2LT5maWxlbGlzdCwgbGhlYWQpIHsKPiAtCQlzdHJ1Y3QgZmlsZV9z dGF0cyBzdGF0czsKPiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYg PSBmaWxlLT5kcml2ZXJfcHJpdjsKPiAtCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ IC0JCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKPiAtCj4gLQkJbXV0ZXhfbG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+ICAKPiAtCQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2Yoc3RhdHMpKTsK PiAtCQlzdGF0cy5maWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiAtCQlzcGluX2xvY2so JmZpbGUtPnRhYmxlX2xvY2spOwo+IC0JCWlkcl9mb3JfZWFjaCgmZmlsZS0+b2JqZWN0X2lkciwg cGVyX2ZpbGVfc3RhdHMsICZzdGF0cyk7Cj4gLQkJc3Bpbl91bmxvY2soJmZpbGUtPnRhYmxlX2xv Y2spOwo+IC0JCS8qCj4gLQkJICogQWx0aG91Z2ggd2UgaGF2ZSBhIHZhbGlkIHJlZmVyZW5jZSBv biBmaWxlLT5waWQsIHRoYXQgZG9lcwo+IC0JCSAqIG5vdCBndWFyYW50ZWUgdGhhdCB0aGUgdGFz a19zdHJ1Y3Qgd2hvIGNhbGxlZCBnZXRfcGlkKCkgaXMKPiAtCQkgKiBzdGlsbCBhbGl2ZSAoZS5n LiBnZXRfcGlkKGN1cnJlbnQpID0+IGZvcmsoKSA9PiBleGl0KCkpLgo+IC0JCSAqIFRoZXJlZm9y ZSwgd2UgbmVlZCB0byBwcm90ZWN0IHRoaXMgLT5jb21tIGFjY2VzcyB1c2luZyBSQ1UuCj4gLQkJ ICovCj4gLQkJcmVxdWVzdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZmlsZV9wcml2LT5t bS5yZXF1ZXN0X2xpc3QsCj4gLQkJCQkJCSAgIHN0cnVjdCBpOTE1X3JlcXVlc3QsCj4gLQkJCQkJ CSAgIGNsaWVudF9saW5rKTsKPiAtCQlyY3VfcmVhZF9sb2NrKCk7Cj4gLQkJdGFzayA9IHBpZF90 YXNrKHJlcXVlc3QgJiYgcmVxdWVzdC0+Z2VtX2NvbnRleHQtPnBpZCA/Cj4gLQkJCQlyZXF1ZXN0 LT5nZW1fY29udGV4dC0+cGlkIDogZmlsZS0+cGlkLAo+IC0JCQkJUElEVFlQRV9QSUQpOwo+IC0J CXByaW50X2ZpbGVfc3RhdHMobSwgdGFzayA/IHRhc2stPmNvbW0gOiAiPHVua25vd24+Iiwgc3Rh dHMpOwo+IC0JCXJjdV9yZWFkX3VubG9jaygpOwo+ICsJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1 cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7 Cj4gIAo+IC0JCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+IC0JbXV0 ZXhfdW5sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiArCXByaW50X2JhdGNoX3Bvb2xfc3Rh dHMobSwgZGV2X3ByaXYpOwo+ICsJcHJpbnRfY29udGV4dF9zdGF0cyhtLCBkZXZfcHJpdik7Cj4g KwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAg fQo+IC0tIAo+IDIuMjAuMQo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=