From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 41/46] drm/i915: Introduce concept of per-timeline (context) HWSP Date: Mon, 14 Jan 2019 16:55:39 -0800 Message-ID: <65dd415a-cfdb-0ede-117b-dfdc86b365ed@Intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-41-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 mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id C3C746E4BE for ; Tue, 15 Jan 2019 00:55:40 +0000 (UTC) In-Reply-To: <20190107115509.12523-41-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 T24gMS83LzIwMTkgMDM6NTUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBTdXBwbGVtZW50IHRoZSBw ZXItZW5naW5lIEhXU1Agd2l0aCBhIHBlci10aW1lbGluZSBIV1NQLiBUaGF0IGlzIGEKPiBwZXIt cmVxdWVzdCBwb2ludGVyIHRocm91Z2ggd2hpY2ggd2UgY2FuIGNoZWNrIGEgbG9jYWwgc2Vxbm8s Cj4gYWJzdHJhY3RpbmcgYXdheSB0aGUgcHJlc3VtcHRpb24gb2YgYSBnbG9iYWwgc2Vxbm8uIElu IHRoaXMgZmlyc3Qgc3RlcCwKPiB3ZSBwb2ludCBlYWNoIHJlcXVlc3QgYmFjayBpbnRvIHRoZSBl bmdpbmUncyBIV1NQIHNvIGV2ZXJ5dGhpbmcKPiBjb250aW51ZXMgdG8gd29yayB3aXRoIHRoZSBn bG9iYWwgdGltZWxpbmUuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5jIHwgMTYgKysrKysrKysrKystLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmggfCAxNiArKysrKysrKystLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyAgICB8ICA5ICsrKysrKy0tLQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAyNiBp bnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5jCj4gaW5kZXggYzQ2NzM5MmY2MmQ3Li4zYjY5YzYyZDA0MGYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBAIC0xODIsMTAgKzE4MiwxMSBAQCBzdGF0aWMgdm9p ZCBmcmVlX2NhcHR1cmVfbGlzdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgc3Rh dGljIHZvaWQgX19yZXRpcmVfZW5naW5lX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAo+ICAgCQkJCSAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAtCUdF TV9UUkFDRSgiJXMoJXMpIGZlbmNlICVsbHg6JWxsZCwgZ2xvYmFsPSVkLCBjdXJyZW50ICVkXG4i LAo+ICsJR0VNX1RSQUNFKCIlcyglcykgZmVuY2UgJWxseDolbGxkLCBnbG9iYWw9JWQsIGN1cnJl bnQgJWQ6JWRcbiIsCj4gICAJCSAgX19mdW5jX18sIGVuZ2luZS0+bmFtZSwKPiAgIAkJICBycS0+ ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNlLnNlcW5vLAo+ICAgCQkgIHJxLT5nbG9iYWxfc2Vxbm8s Cj4gKwkJICBpOTE1X3JlcXVlc3RfaHdzcChycSksCj4gICAJCSAgaW50ZWxfZW5naW5lX2dldF9z ZXFubyhlbmdpbmUpKTsKPiAgIAo+ICAgCUdFTV9CVUdfT04oIWk5MTVfcmVxdWVzdF9jb21wbGV0 ZWQocnEpKTsKPiBAQCAtMjQ0LDEwICsyNDUsMTEgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXF1ZXN0 X3JldGlyZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgewo+ICAgCXN0cnVjdCBp OTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwgKm5leHQ7Cj4gICAKPiAtCUdFTV9UUkFDRSgiJXMgZmVu Y2UgJWxseDolbGxkLCBnbG9iYWw9JWQsIGN1cnJlbnQgJWRcbiIsCj4gKwlHRU1fVFJBQ0UoIiVz IGZlbmNlICVsbHg6JWxsZCwgZ2xvYmFsPSVkLCBjdXJyZW50ICVkOiVkXG4iLAo+ICAgCQkgIHJl cXVlc3QtPmVuZ2luZS0+bmFtZSwKPiAgIAkJICByZXF1ZXN0LT5mZW5jZS5jb250ZXh0LCByZXF1 ZXN0LT5mZW5jZS5zZXFubywKPiAgIAkJICByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8sCj4gKwkJICBp OTE1X3JlcXVlc3RfaHdzcChyZXF1ZXN0KSwKPiAgIAkJICBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5v KHJlcXVlc3QtPmVuZ2luZSkpOwo+ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmcmVxdWVz dC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gQEAgLTMwNywxMCArMzA5LDExIEBAIHZvaWQg aTkxNV9yZXF1ZXN0X3JldGlyZV91cHRvKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCXN0 cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcnEtPnJpbmc7Cj4gICAJc3RydWN0IGk5MTVfcmVxdWVz dCAqdG1wOwo+ICAgCj4gLQlHRU1fVFJBQ0UoIiVzIGZlbmNlICVsbHg6JWxsZCwgZ2xvYmFsPSVk LCBjdXJyZW50ICVkXG4iLAo+ICsJR0VNX1RSQUNFKCIlcyBmZW5jZSAlbGx4OiVsbGQsIGdsb2Jh bD0lZCwgY3VycmVudCAlZDolZFxuIiwKPiAgIAkJICBycS0+ZW5naW5lLT5uYW1lLAo+ICAgCQkg IHJxLT5mZW5jZS5jb250ZXh0LCBycS0+ZmVuY2Uuc2Vxbm8sCj4gICAJCSAgcnEtPmdsb2JhbF9z ZXFubywKPiArCQkgIGk5MTVfcmVxdWVzdF9od3NwKHJxKSwKPiAgIAkJICBpbnRlbF9lbmdpbmVf Z2V0X3NlcW5vKHJxLT5lbmdpbmUpKTsKPiAgIAo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJx LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiBAQCAtMzQ4LDEwICszNTEsMTEgQEAgdm9pZCBf X2k5MTVfcmVxdWVzdF9zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7Cj4gICAJdTMy IHNlcW5vOwo+ICAgCj4gLQlHRU1fVFJBQ0UoIiVzIGZlbmNlICVsbHg6JWxsZCAtPiBnbG9iYWw9 JWQsIGN1cnJlbnQgJWRcbiIsCj4gKwlHRU1fVFJBQ0UoIiVzIGZlbmNlICVsbHg6JWxsZCAtPiBn bG9iYWw9JWQsIGN1cnJlbnQgJWQ6JWRcbiIsCj4gICAJCSAgZW5naW5lLT5uYW1lLAo+ICAgCQkg IHJlcXVlc3QtPmZlbmNlLmNvbnRleHQsIHJlcXVlc3QtPmZlbmNlLnNlcW5vLAo+ICAgCQkgIGVu Z2luZS0+dGltZWxpbmUuc2Vxbm8gKyAxLAo+ICsJCSAgaTkxNV9yZXF1ZXN0X2h3c3AocmVxdWVz dCksCj4gICAJCSAgaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpKTsKPiAgIAo+ICAgCUdF TV9CVUdfT04oIWlycXNfZGlzYWJsZWQoKSk7Cj4gQEAgLTM5OCwxMCArNDAyLDExIEBAIHZvaWQg X19pOTE1X3JlcXVlc3RfdW5zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAg IHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7 Cj4gICAKPiAtCUdFTV9UUkFDRSgiJXMgZmVuY2UgJWxseDolbGxkIDwtIGdsb2JhbD0lZCwgY3Vy cmVudCAlZFxuIiwKPiArCUdFTV9UUkFDRSgiJXMgZmVuY2UgJWxseDolbGxkIDwtIGdsb2JhbD0l ZCwgY3VycmVudCAlZDolZFxuIiwKPiAgIAkJICBlbmdpbmUtPm5hbWUsCj4gICAJCSAgcmVxdWVz dC0+ZmVuY2UuY29udGV4dCwgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8sCj4gICAJCSAgcmVxdWVzdC0+ Z2xvYmFsX3NlcW5vLAo+ICsJCSAgaTkxNV9yZXF1ZXN0X2h3c3AocmVxdWVzdCksCj4gICAJCSAg aW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpKTsKPiAgIAo+ICAgCUdFTV9CVUdfT04oIWly cXNfZGlzYWJsZWQoKSk7Cj4gQEAgLTU4NSw2ICs1OTAsNyBAQCBpOTE1X3JlcXVlc3RfYWxsb2Mo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4KQo+ICAgCXJxLT5yaW5nID0gY2UtPnJpbmc7Cj4gICAJcnEtPnRpbWVsaW5lID0gY2UtPnJp bmctPnRpbWVsaW5lOwo+ICAgCUdFTV9CVUdfT04ocnEtPnRpbWVsaW5lID09ICZlbmdpbmUtPnRp bWVsaW5lKTsKPiArCXJxLT5od3NwX3NlcW5vID0gJmVuZ2luZS0+c3RhdHVzX3BhZ2UuYWRkcltJ OTE1X0dFTV9IV1NfSU5ERVhdOwo+ICAgCj4gICAJc3Bpbl9sb2NrX2luaXQoJnJxLT5sb2NrKTsK PiAgIAlkbWFfZmVuY2VfaW5pdCgmcnEtPmZlbmNlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5oCj4gaW5kZXggZDAxNGIwNjA1NDQ1Li5lMmIyMDlhMjZhOGUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IEBAIC0xMzAsNiArMTMwLDggQEAgc3RydWN0IGk5MTVf cmVxdWVzdCB7Cj4gICAJc3RydWN0IGk5MTVfc2NoZWRfbm9kZSBzY2hlZDsKPiAgIAlzdHJ1Y3Qg aTkxNV9kZXBlbmRlbmN5IGRlcDsKPiAgIAo+ICsJY29uc3QgdTMyICpod3NwX3NlcW5vOwo+ICsK PiAgIAkvKioKPiAgIAkgKiBHRU0gc2VxdWVuY2UgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlz IHJlcXVlc3Qgb24gdGhlCj4gICAJICogZ2xvYmFsIGV4ZWN1dGlvbiB0aW1lbGluZS4gSXQgaXMg emVybyB3aGVuIHRoZSByZXF1ZXN0IGlzIG5vdAo+IEBAIC0yODAsMTEgKzI4Miw2IEBAIGxvbmcg aTkxNV9yZXF1ZXN0X3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gICAjZGVmaW5lIEk5 MTVfV0FJVF9BTEwJCUJJVCgzKSAvKiB1c2VkIGJ5IGk5MTVfZ2VtX29iamVjdF93YWl0KCkgKi8K PiAgICNkZWZpbmUgSTkxNV9XQUlUX0ZPUl9JRExFX0JPT1NUIEJJVCg0KQo+ICAgCj4gLXN0YXRp YyBpbmxpbmUgYm9vbCBpbnRlbF9lbmdpbmVfaGFzX3N0YXJ0ZWQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAo+IC0JCQkJCSAgICB1MzIgc2Vxbm8pOwo+IC1zdGF0aWMgaW5saW5lIGJv b2wgaW50ZWxfZW5naW5lX2hhc19jb21wbGV0ZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLAo+IC0JCQkJCSAgICAgIHUzMiBzZXFubyk7Cj4gLQo+ICAgLyoqCj4gICAgKiBSZXR1cm5z IHRydWUgaWYgc2VxMSBpcyBsYXRlciB0aGFuIHNlcTIuCj4gICAgKi8KPiBAQCAtMjkzLDYgKzI5 MCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9zZXFub19wYXNzZWQodTMyIHNlcTEsIHUz MiBzZXEyKQo+ICAgCXJldHVybiAoczMyKShzZXExIC0gc2VxMikgPj0gMDsKPiAgIH0KPiAgIAo+ ICtzdGF0aWMgaW5saW5lIHUzMiBpOTE1X3JlcXVlc3RfaHdzcChjb25zdCBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSkKPiArewo+ICsJcmV0dXJuIFJFQURfT05DRSgqcnEtPmh3c3Bfc2Vxbm8pOwo+ ICt9Cj4gKwpTaG91bGRuJ3QgdGhlIGZ1bmN0aW9uIG5hbWUgaGF2ZSBhbiBfc2Vxbm8gYXMgd2Vs bD8gSnVzdCAKJ2k5MTVfcmVxdWVzdF9od3NwKCknIGlzIGZhaXJseSBhbWJpZ3VvdXMsIHRoZXJl IGNvdWxkIGJlIG1hbnkgZGlmZmVyZW50IAp0aGluZ3Mgc3RvcmVkIGluIHRoZSBIV1NQLgoKPiAg IC8qKgo+ICAgICogaTkxNV9yZXF1ZXN0X3N0YXJ0ZWQgLSBjaGVjayBpZiB0aGUgcmVxdWVzdCBo YXMgYmVndW4gYmVpbmcgZXhlY3V0ZWQKPiAgICAqIEBycTogdGhlIHJlcXVlc3QKPiBAQCAtMzEw LDE0ICszMTIsMTQgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfcmVxdWVzdF9zdGFydGVkKGNv bnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCWlmICghc2Vxbm8pIC8qIG5vdCB5ZXQg c3VibWl0dGVkIHRvIEhXICovCj4gICAJCXJldHVybiBmYWxzZTsKPiAgIAo+IC0JcmV0dXJuIGlu dGVsX2VuZ2luZV9oYXNfc3RhcnRlZChycS0+ZW5naW5lLCBzZXFubyk7Cj4gKwlyZXR1cm4gaTkx NV9zZXFub19wYXNzZWQoaTkxNV9yZXF1ZXN0X2h3c3AocnEpLCBzZXFubyAtIDEpOwo+ICAgfQo+ ICAgCj4gICBzdGF0aWMgaW5saW5lIGJvb2wKPiAgIF9faTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChj b25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyIHNlcW5vKQo+ICAgewo+ICAgCUdFTV9C VUdfT04oIXNlcW5vKTsKPiAtCXJldHVybiBpbnRlbF9lbmdpbmVfaGFzX2NvbXBsZXRlZChycS0+ ZW5naW5lLCBzZXFubykgJiYKPiArCXJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChpOTE1X3JlcXVl c3RfaHdzcChycSksIHNlcW5vKSAmJgo+ICAgCQlzZXFubyA9PSBpOTE1X3JlcXVlc3RfZ2xvYmFs X3NlcW5vKHJxKTsKPiAgIH0KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXgg M2I1MTJhNTRhYWNiLi4xZGYyYTE4Njg2MjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+IEBAIC00NDUsMTEgKzQ0NSwxMiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X3Bv cnRzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCWRlc2MgPSBleGVjbGlz dHNfdXBkYXRlX2NvbnRleHQocnEpOwo+ICAgCQkJR0VNX0RFQlVHX0VYRUMocG9ydFtuXS5jb250 ZXh0X2lkID0gdXBwZXJfMzJfYml0cyhkZXNjKSk7Cj4gICAKPiAtCQkJR0VNX1RSQUNFKCIlcyBp blslZF06ICBjdHg9JWQuJWQsIGdsb2JhbD0lZCAoZmVuY2UgJWxseDolbGxkKSAoY3VycmVudCAl ZCksIHByaW89JWRcbiIsCj4gKwkJCUdFTV9UUkFDRSgiJXMgaW5bJWRdOiAgY3R4PSVkLiVkLCBn bG9iYWw9JWQgKGZlbmNlICVsbHg6JWxsZCkgKGN1cnJlbnQgJWQ6JWQpLCBwcmlvPSVkXG4iLAo+ ICAgCQkJCSAgZW5naW5lLT5uYW1lLCBuLAo+ICAgCQkJCSAgcG9ydFtuXS5jb250ZXh0X2lkLCBj b3VudCwKPiAgIAkJCQkgIHJxLT5nbG9iYWxfc2Vxbm8sCj4gICAJCQkJICBycS0+ZmVuY2UuY29u dGV4dCwgcnEtPmZlbmNlLnNlcW5vLAo+ICsJCQkJICBpOTE1X3JlcXVlc3RfaHdzcChycSksCj4g ICAJCQkJICBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSksCj4gICAJCQkJICBycV9wcmlv KHJxKSk7Cj4gICAJCX0gZWxzZSB7Cj4gQEAgLTczOCwxMSArNzM5LDEyIEBAIGV4ZWNsaXN0c19j YW5jZWxfcG9ydF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0 IGV4ZWNsaXN0cykKPiAgIAl3aGlsZSAobnVtX3BvcnRzLS0gJiYgcG9ydF9pc3NldChwb3J0KSkg ewo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9IHBvcnRfcmVxdWVzdChwb3J0KTsKPiAg IAo+IC0JCUdFTV9UUkFDRSgiJXM6cG9ydCV1IGdsb2JhbD0lZCAoZmVuY2UgJWxseDolbGxkKSwg KGN1cnJlbnQgJWQpXG4iLAo+ICsJCUdFTV9UUkFDRSgiJXM6cG9ydCV1IGdsb2JhbD0lZCAoZmVu Y2UgJWxseDolbGxkKSwgKGN1cnJlbnQgJWQ6JWQpXG4iLAo+ICAgCQkJICBycS0+ZW5naW5lLT5u YW1lLAo+ICAgCQkJICAodW5zaWduZWQgaW50KShwb3J0IC0gZXhlY2xpc3RzLT5wb3J0KSwKPiAg IAkJCSAgcnEtPmdsb2JhbF9zZXFubywKPiAgIAkJCSAgcnEtPmZlbmNlLmNvbnRleHQsIHJxLT5m ZW5jZS5zZXFubywKPiArCQkJICBpOTE1X3JlcXVlc3RfaHdzcChycSksCj4gICAJCQkgIGludGVs X2VuZ2luZV9nZXRfc2Vxbm8ocnEtPmVuZ2luZSkpOwo+ICAgCj4gICAJCUdFTV9CVUdfT04oIWV4 ZWNsaXN0cy0+YWN0aXZlKTsKPiBAQCAtOTY2LDEyICs5NjgsMTMgQEAgc3RhdGljIHZvaWQgcHJv Y2Vzc19jc2Ioc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQkJCQkJRVhFQ0xJ U1RTX0FDVElWRV9VU0VSKSk7Cj4gICAKPiAgIAkJcnEgPSBwb3J0X3VucGFjayhwb3J0LCAmY291 bnQpOwo+IC0JCUdFTV9UUkFDRSgiJXMgb3V0WzBdOiBjdHg9JWQuJWQsIGdsb2JhbD0lZCAoZmVu Y2UgJWxseDolbGxkKSAoY3VycmVudCAlZCksIHByaW89JWRcbiIsCj4gKwkJR0VNX1RSQUNFKCIl cyBvdXRbMF06IGN0eD0lZC4lZCwgZ2xvYmFsPSVkIChmZW5jZSAlbGx4OiVsbGQpIChjdXJyZW50 ICVkOiVkKSwgcHJpbz0lZFxuIiwKPiAgIAkJCSAgZW5naW5lLT5uYW1lLAo+ICAgCQkJICBwb3J0 LT5jb250ZXh0X2lkLCBjb3VudCwKPiAgIAkJCSAgcnEgPyBycS0+Z2xvYmFsX3NlcW5vIDogMCwK PiAgIAkJCSAgcnEgPyBycS0+ZmVuY2UuY29udGV4dCA6IDAsCj4gICAJCQkgIHJxID8gcnEtPmZl bmNlLnNlcW5vIDogMCwKPiArCQkJICBycSA/IGk5MTVfcmVxdWVzdF9od3NwKHJxKSA6IDAsCj4g ICAJCQkgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwKPiAgIAkJCSAgcnEgPyBycV9w cmlvKHJxKSA6IDApOwo+ICAgCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK