From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 08/25] drm/i915: Report the number of closed vma held by each context in debugfs Date: Mon, 26 Nov 2018 14:10:44 +0000 Message-ID: References: <20181102161232.17742-1-chris@chris-wilson.co.uk> <20181102161232.17742-8-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 mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id F10E089D9A for ; Mon, 26 Nov 2018 14:10:46 +0000 (UTC) In-Reply-To: <20181102161232.17742-8-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 Ck9uIDAyLzExLzIwMTggMTY6MTIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbmNsdWRlIHRoZSB0 b3RhbCBzaXplIG9mIGNsb3NlZCB2bWEgd2hlbiByZXBvcnRpbmcgdGhlIHBlcl9jdHhfc3RhdHMg b2YKPiBkZWJ1Z2ZzL2k5MTVfZ2VtX29iamVjdHMuCj4gCj4gV2hpbHN0IGFkanVzdGluZyB0aGUg Y29udGV4dCB0cmFja2luZywgbm90ZSB0aGF0IHdlIGNhbiBzaW1wbHkgdXNlIG91cgo+IGxpc3Qg b2YgY29udGV4dHMgaW4gaTkxNS0+Y29udGV4dHMgcmF0aGVyIHRoYW4gY2lyY3VtbG9jdXRlIHZp YQo+IGRldi0+ZmlsZWxpc3QgYW5kIHRoZSBwZXItZmlsZSBjb250ZXh0IGlkciwgd2l0aCB0aGUg cmVzdWx0IHRoYXQgd2UgY2FuCj4gc2hvdyBvYmplY3RzIGFsbG9jYXRlZCB0byBkaWZmZXJlbnQg dm0gKGkuZS4gY29udGV4dHMgd2l0aGluIGEgZmlsZSkuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyB8IDEyNCArKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0p CgpUaGlzIG9uZSBJIGRpc2xpa2UgaW4gYSB3YXkgdGhhdCB3aGVyZWFzIHRvZGF5IG9iamVjdHMg YXJlIGNvcnJlY3RseSAKcmVwb3J0ZWQgYXMgYmVsb25naW5nIHRvIHRoZSBkcm0gY2xpZW50IGRv bWFpbiwgd2l0aCB0aGlzIHBhdGNoIHRoZXkgCndpbGwgYXBwZWFyIHRvIGJlIHBlciBjb250ZXh0 LCB3aGljaCBpcyBib3RoIGNvbmNlcHR1YWxseSBpbmNvcnJlY3QgYW5kIAp0aGV5IGFsc28gZ2V0 IGFjY291bnRlZC9saXN0ZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIG91dHB1dC4KCkkgZG9uJ3Qg cmVtZW1iZXIgd2hhdCB5b3Ugc2FpZCBwcm9ibGVtIHdpdGggZGV2LT5maWxlbGlzdCwgb3IgdGhl IAphc3NvY2lhdGVkIG11dGV4IHdhcz8gSXMgaXQgc29tZXRoaW5nIHdlIGNvdWxkIHNvbHZlIGJ5 IG1vdmluZyB0aGUgZHJtIApjbGllbnQgdHJhY2tpbmcgdG8gaTkxNT8KClJlZ2FyZHMsCgpUdnJ0 a28KCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA1MGJmY2JiMzA4 NmEuLmUzMzQ4MzY4N2UxMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4g QEAgLTI5NywxMSArMjk3LDEyIEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fc3RvbGVuX2xpc3RfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gICB9Cj4gICAKPiAgIHN0cnVjdCBm aWxlX3N0YXRzIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdjsK PiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwo+ICAgCXVuc2lnbmVkIGxvbmcgY291 bnQ7Cj4gICAJdTY0IHRvdGFsLCB1bmJvdW5kOwo+ICAgCXU2NCBnbG9iYWwsIHNoYXJlZDsKPiAg IAl1NjQgYWN0aXZlLCBpbmFjdGl2ZTsKPiArCXU2NCBjbG9zZWQ7Cj4gICB9Owo+ICAgCj4gICBz dGF0aWMgaW50IHBlcl9maWxlX3N0YXRzKGludCBpZCwgdm9pZCAqcHRyLCB2b2lkICpkYXRhKQo+ IEBAIC0zMjYsOSArMzI3LDcgQEAgc3RhdGljIGludCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQsIHZv aWQgKnB0ciwgdm9pZCAqZGF0YSkKPiAgIAkJaWYgKGk5MTVfdm1hX2lzX2dndHQodm1hKSkgewo+ ICAgCQkJc3RhdHMtPmdsb2JhbCArPSB2bWEtPm5vZGUuc2l6ZTsKPiAgIAkJfSBlbHNlIHsKPiAt CQkJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gaTkxNV92bV90b19wcGd0dCh2bWEtPnZt KTsKPiAtCj4gLQkJCWlmIChwcGd0dC0+dm0uZmlsZSAhPSBzdGF0cy0+ZmlsZV9wcml2KQo+ICsJ CQlpZiAodm1hLT52bSAhPSBzdGF0cy0+dm0pCj4gICAJCQkJY29udGludWU7Cj4gICAJCX0KPiAg IAo+IEBAIC0zMzYsNiArMzM1LDkgQEAgc3RhdGljIGludCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQs IHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKPiAgIAkJCXN0YXRzLT5hY3RpdmUgKz0gdm1hLT5ub2Rl LnNpemU7Cj4gICAJCWVsc2UKPiAgIAkJCXN0YXRzLT5pbmFjdGl2ZSArPSB2bWEtPm5vZGUuc2l6 ZTsKPiArCj4gKwkJaWYgKGk5MTVfdm1hX2lzX2Nsb3NlZCh2bWEpKQo+ICsJCQlzdGF0cy0+Y2xv c2VkICs9IHZtYS0+bm9kZS5zaXplOwo+ICAgCX0KPiAgIAo+ICAgCXJldHVybiAwOwo+IEBAIC0z NDMsNyArMzQ1LDcgQEAgc3RhdGljIGludCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0 ciwgdm9pZCAqZGF0YSkKPiAgIAo+ICAgI2RlZmluZSBwcmludF9maWxlX3N0YXRzKG0sIG5hbWUs IHN0YXRzKSBkbyB7IFwKPiAgIAlpZiAoc3RhdHMuY291bnQpIFwKPiAtCQlzZXFfcHJpbnRmKG0s ICIlczogJWx1IG9iamVjdHMsICVsbHUgYnl0ZXMgKCVsbHUgYWN0aXZlLCAlbGx1IGluYWN0aXZl LCAlbGx1IGdsb2JhbCwgJWxsdSBzaGFyZWQsICVsbHUgdW5ib3VuZClcbiIsIFwKPiArCQlzZXFf cHJpbnRmKG0sICIlczogJWx1IG9iamVjdHMsICVsbHUgYnl0ZXMgKCVsbHUgYWN0aXZlLCAlbGx1 IGluYWN0aXZlLCAlbGx1IGdsb2JhbCwgJWxsdSBzaGFyZWQsICVsbHUgdW5ib3VuZCwgJWxsdSBj bG9zZWQpXG4iLCBcCj4gICAJCQkgICBuYW1lLCBcCj4gICAJCQkgICBzdGF0cy5jb3VudCwgXAo+ ICAgCQkJICAgc3RhdHMudG90YWwsIFwKPiBAQCAtMzUxLDIwICszNTMsMTkgQEAgc3RhdGljIGlu dCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKPiAgIAkJCSAg IHN0YXRzLmluYWN0aXZlLCBcCj4gICAJCQkgICBzdGF0cy5nbG9iYWwsIFwKPiAgIAkJCSAgIHN0 YXRzLnNoYXJlZCwgXAo+IC0JCQkgICBzdGF0cy51bmJvdW5kKTsgXAo+ICsJCQkgICBzdGF0cy51 bmJvdW5kLCBcCj4gKwkJCSAgIHN0YXRzLmNsb3NlZCk7IFwKPiAgIH0gd2hpbGUgKDApCj4gICAK PiAgIHN0YXRpYyB2b2lkIHByaW50X2JhdGNoX3Bvb2xfc3RhdHMoc3RydWN0IHNlcV9maWxlICpt LAo+ICAgCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAg IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+IC0Jc3RydWN0IGZpbGVfc3RhdHMg c3RhdHM7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJc3RydWN0IGZp bGVfc3RhdHMgc3RhdHMgPSB7fTsKPiAgIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAlp bnQgajsKPiAgIAo+IC0JbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKHN0YXRzKSk7Cj4gLQo+ICAg CWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewo+ICAgCQlmb3IgKGogPSAw OyBqIDwgQVJSQVlfU0laRShlbmdpbmUtPmJhdGNoX3Bvb2wuY2FjaGVfbGlzdCk7IGorKykgewo+ ICAgCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosCj4gQEAgLTM3Nyw0NCArMzc4LDQ3IEBAIHN0 YXRpYyB2b2lkIHByaW50X2JhdGNoX3Bvb2xfc3RhdHMoc3RydWN0IHNlcV9maWxlICptLAo+ICAg CXByaW50X2ZpbGVfc3RhdHMobSwgIltrXWJhdGNoIHBvb2wiLCBzdGF0cyk7Cj4gICB9Cj4gICAK PiAtc3RhdGljIGludCBwZXJfZmlsZV9jdHhfc3RhdHMoaW50IGlkeCwgdm9pZCAqcHRyLCB2b2lk ICpkYXRhKQo+ICtzdGF0aWMgdm9pZCBwcmludF9jb250ZXh0X3N0YXRzKHN0cnVjdCBzZXFfZmls ZSAqbSwKPiArCQkJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+IC0Jc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCA9IHB0cjsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiAtCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICsJc3RydWN0IGZpbGVf c3RhdHMga3N0YXRzID0ge307Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAg Cj4gLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBjdHgtPmk5MTUsIGlkKSB7Cj4gLQkJc3RydWN0 IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7Cj4gKwls aXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmk5MTUtPmNvbnRleHRzLmxpc3QsIGxpbmspIHsKPiAr CQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwkJZW51bSBpbnRlbF9lbmdpbmVf aWQgaWQ7Cj4gICAKPiAtCQlpZiAoY2UtPnN0YXRlKQo+IC0JCQlwZXJfZmlsZV9zdGF0cygwLCBj ZS0+c3RhdGUtPm9iaiwgZGF0YSk7Cj4gLQkJaWYgKGNlLT5yaW5nKQo+IC0JCQlwZXJfZmlsZV9z dGF0cygwLCBjZS0+cmluZy0+dm1hLT5vYmosIGRhdGEpOwo+IC0JfQo+ICsJCWZvcl9lYWNoX2Vu Z2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9 IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOwo+ICAgCj4gLQlyZXR1cm4gMDsKPiAtfQo+ ICsJCQlpZiAoY2UtPnN0YXRlKQo+ICsJCQkJcGVyX2ZpbGVfc3RhdHMoMCwgY2UtPnN0YXRlLT5v YmosICZrc3RhdHMpOwo+ICsJCQlpZiAoY2UtPnJpbmcpCj4gKwkJCQlwZXJfZmlsZV9zdGF0cygw LCBjZS0+cmluZy0+dm1hLT5vYmosICZrc3RhdHMpOwo+ICsJCX0KPiAgIAo+IC1zdGF0aWMgdm9p ZCBwcmludF9jb250ZXh0X3N0YXRzKHN0cnVjdCBzZXFfZmlsZSAqbSwKPiAtCQkJCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRl diA9ICZkZXZfcHJpdi0+ZHJtOwo+IC0Jc3RydWN0IGZpbGVfc3RhdHMgc3RhdHM7Cj4gLQlzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGU7Cj4gKwkJaWYgKCFJU19FUlJfT1JfTlVMTChjdHgtPmZpbGVfcHJp dikpIHsKPiArCQkJc3RydWN0IGZpbGVfc3RhdHMgc3RhdHMgPSB7IC52bSA9ICZjdHgtPnBwZ3R0 LT52bSwgfTsKPiArCQkJc3RydWN0IGRybV9maWxlICpmaWxlID0gY3R4LT5maWxlX3ByaXYtPmZp bGU7Cj4gKwkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKPiArCQkJY2hhciBuYW1lWzgwXTsK PiAgIAo+IC0JbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKHN0YXRzKSk7Cj4gKwkJCXNwaW5fbG9j aygmZmlsZS0+dGFibGVfbG9jayk7Cj4gKwkJCWlkcl9mb3JfZWFjaCgmZmlsZS0+b2JqZWN0X2lk ciwgcGVyX2ZpbGVfc3RhdHMsICZzdGF0cyk7Cj4gKwkJCXNwaW5fdW5sb2NrKCZmaWxlLT50YWJs ZV9sb2NrKTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYg KGRldl9wcml2LT5rZXJuZWxfY29udGV4dCkKPiAtCQlwZXJfZmlsZV9jdHhfc3RhdHMoMCwgZGV2 X3ByaXYtPmtlcm5lbF9jb250ZXh0LCAmc3RhdHMpOwo+ICsJCQlyY3VfcmVhZF9sb2NrKCk7Cj4g KwkJCXRhc2sgPSBwaWRfdGFzayhjdHgtPnBpZCA/OiBmaWxlLT5waWQsIFBJRFRZUEVfUElEKTsK PiArCQkJc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiJXMvJWQiLAo+ICsJCQkJIHRhc2sg PyB0YXNrLT5jb21tIDogIjx1bmtub3duPiIsCj4gKwkJCQkgY3R4LT51c2VyX2hhbmRsZSk7Cj4g KwkJCXJjdV9yZWFkX3VubG9jaygpOwo+ICAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGZpbGUs ICZkZXYtPmZpbGVsaXN0LCBsaGVhZCkgewo+IC0JCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZh dGUgKmZwcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Cj4gLQkJaWRyX2Zvcl9lYWNoKCZmcHJpdi0+ Y29udGV4dF9pZHIsIHBlcl9maWxlX2N0eF9zdGF0cywgJnN0YXRzKTsKPiArCQkJcHJpbnRfZmls ZV9zdGF0cyhtLCBuYW1lLCBzdGF0cyk7Cj4gKwkJfQo+ICAgCX0KPiAtCW11dGV4X3VubG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gLQlwcmludF9maWxlX3N0YXRzKG0sICJba11jb250 ZXh0cyIsIHN0YXRzKTsKPiArCXByaW50X2ZpbGVfc3RhdHMobSwgIltrXWNvbnRleHRzIiwga3N0 YXRzKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBpOTE1X2dlbV9vYmplY3RfaW5mbyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gQEAgLTQyNiwxNCArNDMwLDkgQEAgc3RhdGlj IGludCBpOTE1X2dlbV9vYmplY3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gICAJdTY0IHNpemUsIG1hcHBlZF9zaXplLCBwdXJnZWFibGVfc2l6ZSwgZHB5X3NpemUsIGh1 Z2Vfc2l6ZTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgCXVuc2ln bmVkIGludCBwYWdlX3NpemVzID0gMDsKPiAtCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKPiAgIAlj aGFyIGJ1Zls4MF07Cj4gICAJaW50IHJldDsKPiAgIAo+IC0JcmV0ID0gbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiBy ZXQ7Cj4gLQo+ICAgCXNlcV9wcmludGYobSwgIiV1IG9iamVjdHMsICVsbHUgYnl0ZXNcbiIsCj4g ICAJCSAgIGRldl9wcml2LT5tbS5vYmplY3RfY291bnQsCj4gICAJCSAgIGRldl9wcml2LT5tbS5v YmplY3RfbWVtb3J5KTsKPiBAQCAtNTE0LDQzICs1MTMsMTQgQEAgc3RhdGljIGludCBpOTE1X2dl bV9vYmplY3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gICAJCQkJCWJ1 Ziwgc2l6ZW9mKGJ1ZikpKTsKPiAgIAo+ICAgCXNlcV9wdXRjKG0sICdcbicpOwo+IC0JcHJpbnRf YmF0Y2hfcG9vbF9zdGF0cyhtLCBkZXZfcHJpdik7Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiAtCj4gLQltdXRleF9sb2NrKCZkZXYtPmZpbGVsaXN0X211dGV4KTsKPiAt CXByaW50X2NvbnRleHRfc3RhdHMobSwgZGV2X3ByaXYpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRy eV9yZXZlcnNlKGZpbGUsICZkZXYtPmZpbGVsaXN0LCBsaGVhZCkgewo+IC0JCXN0cnVjdCBmaWxl X3N0YXRzIHN0YXRzOwo+IC0JCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJp diA9IGZpbGUtPmRyaXZlcl9wcml2Owo+IC0JCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Q7 Cj4gLQkJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwo+IC0KPiAtCQltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Cj4gICAKPiAtCQltZW1zZXQoJnN0YXRzLCAwLCBzaXplb2Yoc3RhdHMp KTsKPiAtCQlzdGF0cy5maWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiAtCQlzcGluX2xv Y2soJmZpbGUtPnRhYmxlX2xvY2spOwo+IC0JCWlkcl9mb3JfZWFjaCgmZmlsZS0+b2JqZWN0X2lk ciwgcGVyX2ZpbGVfc3RhdHMsICZzdGF0cyk7Cj4gLQkJc3Bpbl91bmxvY2soJmZpbGUtPnRhYmxl X2xvY2spOwo+IC0JCS8qCj4gLQkJICogQWx0aG91Z2ggd2UgaGF2ZSBhIHZhbGlkIHJlZmVyZW5j ZSBvbiBmaWxlLT5waWQsIHRoYXQgZG9lcwo+IC0JCSAqIG5vdCBndWFyYW50ZWUgdGhhdCB0aGUg dGFza19zdHJ1Y3Qgd2hvIGNhbGxlZCBnZXRfcGlkKCkgaXMKPiAtCQkgKiBzdGlsbCBhbGl2ZSAo ZS5nLiBnZXRfcGlkKGN1cnJlbnQpID0+IGZvcmsoKSA9PiBleGl0KCkpLgo+IC0JCSAqIFRoZXJl Zm9yZSwgd2UgbmVlZCB0byBwcm90ZWN0IHRoaXMgLT5jb21tIGFjY2VzcyB1c2luZyBSQ1UuCj4g LQkJICovCj4gLQkJcmVxdWVzdCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZmlsZV9wcml2 LT5tbS5yZXF1ZXN0X2xpc3QsCj4gLQkJCQkJCSAgIHN0cnVjdCBpOTE1X3JlcXVlc3QsCj4gLQkJ CQkJCSAgIGNsaWVudF9saW5rKTsKPiAtCQlyY3VfcmVhZF9sb2NrKCk7Cj4gLQkJdGFzayA9IHBp ZF90YXNrKHJlcXVlc3QgJiYgcmVxdWVzdC0+Z2VtX2NvbnRleHQtPnBpZCA/Cj4gLQkJCQlyZXF1 ZXN0LT5nZW1fY29udGV4dC0+cGlkIDogZmlsZS0+cGlkLAo+IC0JCQkJUElEVFlQRV9QSUQpOwo+ IC0JCXByaW50X2ZpbGVfc3RhdHMobSwgdGFzayA/IHRhc2stPmNvbW0gOiAiPHVua25vd24+Iiwg c3RhdHMpOwo+IC0JCXJjdV9yZWFkX3VubG9jaygpOwo+ICsJcmV0ID0gbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBy ZXQ7Cj4gICAKPiAtCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCX0KPiAt CW11dGV4X3VubG9jaygmZGV2LT5maWxlbGlzdF9tdXRleCk7Cj4gKwlwcmludF9iYXRjaF9wb29s X3N0YXRzKG0sIGRldl9wcml2KTsKPiArCXByaW50X2NvbnRleHRfc3RhdHMobSwgZGV2X3ByaXYp Owo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAKPiAgIAlyZXR1cm4g MDsKPiAgIH0KPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==