From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2] drm/i915/execlists: Track begin/end of execlists submission sequences Date: Tue, 03 Apr 2018 14:17:57 +0300 Message-ID: <87po3g35ei.fsf@gaia.fi.intel.com> References: <20180329102631.11015-1-chris@chris-wilson.co.uk> <20180331130626.10712-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 D3D626E1AD for ; Tue, 3 Apr 2018 11:18:12 +0000 (UTC) In-Reply-To: <20180331130626.10712-1-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+IHdyaXRlczoKCj4gV2Ugd291 bGQgbGlrZSB0byBzdGFydCBkb2luZyBzb21lIGJvb2trZWVwaW5nIGF0IHRoZSBiZWdpbm5pbmcs IGJldHdlZW4KPiBjb250ZXh0cyBhbmQgYXQgdGhlIGVuZCBvZiBleGVjbGlzdHMgc3VibWlzc2lv bi4gV2UgYWxyZWFkeSBtYXJrIHRoZQo+IGJlZ2lubmluZyBhbmQgZW5kIHVzaW5nIEVYRUNMSVNU U19BQ1RJVkVfVVNFUiwgdG8gcHJvdmlkZSBhbiBpbmRpY2F0aW9uCj4gd2hlbiB0aGUgSFcgaXMg aWRsZS4gVGhpcyBnaXZlIHVzIGEgcGFpciBvZiBzZXF1ZW5jZSBwb2ludHMgd2UgY2FuIHRoZW4K PiBleHBhbmQgb24gZm9yIGZ1cnRoZXIgYm9va2tlZXBpbmcuCj4KPiB2MjogUmVmYWN0b3IgZ3Vj IHN1Ym1pc3Npb24gdG8gc2hhcmUgdGhlIHNhbWUgYmVnaW4vZW5kLgo+Cj4gU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1pa2EgS3Vv cHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBGcmFuY2lzY28gSmVy ZXogPGN1cnJvamVyZXpAcmlzZXVwLm5ldD4KPiBSZXZpZXdlZC1ieTogRnJhbmNpc2NvIEplcmV6 IDxjdXJyb2plcmV6QHJpc2V1cC5uZXQ+ICN2MQo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIHwgMTcgKysrKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgIHwgNTAgKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgICB8 IDE1ICsrKysrKysrLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDYzIGluc2VydGlvbnMoKyksIDE5IGRl bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lv bi5jCj4gaW5kZXggMjA3Y2RhMDYyNjI2Li43NDlmMjc5MTZhMDIgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtNzI4LDcgKzcyOCw3IEBA IHN0YXRpYyB2b2lkIGd1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgCWV4ZWNsaXN0cy0+Zmlyc3QgPSByYjsKPiAgCWlmIChzdWJtaXQpIHsKPiAgCQlwb3J0X2Fz c2lnbihwb3J0LCBsYXN0KTsKPiAtCQlleGVjbGlzdHNfc2V0X2FjdGl2ZShleGVjbGlzdHMsIEVY RUNMSVNUU19BQ1RJVkVfVVNFUik7Cj4gKwkJZXhlY2xpc3RzX3VzZXJfYmVnaW4oZXhlY2xpc3Rz LCBleGVjbGlzdHMtPnBvcnQpOwo+ICAJCWd1Y19zdWJtaXQoZW5naW5lKTsKPiAgCX0KPiAgCj4g QEAgLTc0OCwxNyArNzQ4LDIwIEBAIHN0YXRpYyB2b2lkIGd1Y19zdWJtaXNzaW9uX3Rhc2tsZXQo dW5zaWduZWQgbG9uZyBkYXRhKQo+ICAJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGVj bGlzdHMtPnBvcnQ7Cj4gIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAgCj4gLQlycSA9IHBv cnRfcmVxdWVzdCgmcG9ydFswXSk7Cj4gKwlycSA9IHBvcnRfcmVxdWVzdChwb3J0KTsKPiAgCXdo aWxlIChycSAmJiBpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkgewo+ICAJCXRyYWNlX2k5MTVf cmVxdWVzdF9vdXQocnEpOwo+ICAJCWk5MTVfcmVxdWVzdF9wdXQocnEpOwo+ICAKPiAtCQlleGVj bGlzdHNfcG9ydF9jb21wbGV0ZShleGVjbGlzdHMsIHBvcnQpOwo+IC0KPiAtCQlycSA9IHBvcnRf cmVxdWVzdCgmcG9ydFswXSk7Cj4gKwkJcG9ydCA9IGV4ZWNsaXN0c19wb3J0X2NvbXBsZXRlKGV4 ZWNsaXN0cywgcG9ydCk7Cj4gKwkJaWYgKHBvcnRfaXNzZXQocG9ydCkpIHsKPiArCQkJZXhlY2xp c3RzX3VzZXJfYmVnaW4oZXhlY2xpc3RzLCBwb3J0KTsKPiArCQkJcnEgPSBwb3J0X3JlcXVlc3Qo cG9ydCk7Cj4gKwkJfSBlbHNlIHsKPiArCQkJZXhlY2xpc3RzX3VzZXJfZW5kKGV4ZWNsaXN0cyk7 Cj4gKwkJCXJxID0gTlVMTDsKCkkgZGlkIHBvbmRlciBkb2luZyB0aGUgdXNlcl9iZWdpbi9lbmQg cGFpciBpbiBjb21wbGV0ZQpidXQgYmV0dGVyIG5vdCB0byBoaWRlIGl0IGluIHRoZXJlIGFzIHdl IG1pZ2h0IGVuZCB1cApkb2luZyBjb21wbGV0ZXMgd2l0aG91dCBub3RpZnlpbmcgdXNlcnMuCgpS ZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+ Cgo+ICsJCX0KPiAgCX0KPiAtCWlmICghcnEpCj4gLQkJZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZShl eGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7Cj4gIAo+ICAJaWYgKGV4ZWNsaXN0c19p c19hY3RpdmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpICYmCj4gIAkgICAg aW50ZWxfcmVhZF9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVfR0VNX0hXU19QUkVFTVBUX0lOREVY KSA9PQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggZjYwYjYxYmY4YjNiLi40ZDA4 ODc1NDIyYjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0zNzQsNiArMzc0 LDE5IEBAIGV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFuZ2Uoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsIHVuc2lnbmVkIGxvbmcgc3RhdHVzKQo+ICAJCQkJICAgc3RhdHVzLCBycSk7Cj4gIH0K PiAgCj4gK2lubGluZSB2b2lkCj4gK2V4ZWNsaXN0c191c2VyX2JlZ2luKHN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMsCj4gKwkJICAgICBjb25zdCBzdHJ1Y3QgZXhlY2xp c3RfcG9ydCAqcG9ydCkKPiArewo+ICsJZXhlY2xpc3RzX3NldF9hY3RpdmVfb25jZShleGVjbGlz dHMsIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7Cj4gK30KPiArCj4gK2lubGluZSB2b2lkCj4gK2V4 ZWNsaXN0c191c2VyX2VuZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3Rz KQo+ICt7Cj4gKwlleGVjbGlzdHNfY2xlYXJfYWN0aXZlKGV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FD VElWRV9VU0VSKTsKPiArfQo+ICsKPiAgc3RhdGljIGlubGluZSB2b2lkCj4gIGV4ZWNsaXN0c19j b250ZXh0X3NjaGVkdWxlX2luKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICB7Cj4gQEAgLTcx MSw3ICs3MjQsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gIAlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUt PmxvY2spOwo+ICAKPiAgCWlmIChzdWJtaXQpIHsKPiAtCQlleGVjbGlzdHNfc2V0X2FjdGl2ZShl eGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7Cj4gKwkJZXhlY2xpc3RzX3VzZXJfYmVn aW4oZXhlY2xpc3RzLCBleGVjbGlzdHMtPnBvcnQpOwo+ICAJCWV4ZWNsaXN0c19zdWJtaXRfcG9y dHMoZW5naW5lKTsKPiAgCX0KPiAgCj4gQEAgLTc0Miw3ICs3NTUsNyBAQCBleGVjbGlzdHNfY2Fu Y2VsX3BvcnRfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBl eGVjbGlzdHMpCj4gIAkJcG9ydCsrOwo+ICAJfQo+ICAKPiAtCWV4ZWNsaXN0c19jbGVhcl9hY3Rp dmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX1VTRVIpOwo+ICsJZXhlY2xpc3RzX3VzZXJf ZW5kKGV4ZWNsaXN0cyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGNsZWFyX2d0aWlyKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiBAQCAtODczLDcgKzg4Niw3IEBAIHN0YXRpYyB2 b2lkIGV4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQo+ICB7 Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29uc3QgZW5naW5lID0gKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKilkYXRhOwo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBj b25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Cj4gLQlzdHJ1Y3QgZXhlY2xpc3Rf cG9ydCAqIGNvbnN0IHBvcnQgPSBleGVjbGlzdHMtPnBvcnQ7Cj4gKwlzdHJ1Y3QgZXhlY2xpc3Rf cG9ydCAqcG9ydCA9IGV4ZWNsaXN0cy0+cG9ydDsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiAgCWJvb2wgZncgPSBmYWxzZTsKPiAgCj4gQEAg LTEwMTIsMTAgKzEwMjUsMjggQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pc3Npb25fdGFz a2xldCh1bnNpZ25lZCBsb25nIGRhdGEpCj4gIAo+ICAJCQlHRU1fQlVHX09OKGNvdW50ID09IDAp Owo+ICAJCQlpZiAoLS1jb3VudCA9PSAwKSB7Cj4gKwkJCQkvKgo+ICsJCQkJICogT24gdGhlIGZp bmFsIGV2ZW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlCj4gKwkJCQkgKiBzdWJtaXNzaW9uIG9mIHRo aXMgY29udGV4dCwgd2UgZXhwZWN0IGVpdGhlcgo+ICsJCQkJICogYW4gZWxlbWVudC1zd2l0Y2gg ZXZlbnQgb3IgYSBjb21wbGV0aW9uCj4gKwkJCQkgKiBldmVudCAoYW5kIG9uIGNvbXBsZXRpb24s IHRoZSBhY3RpdmUtaWRsZQo+ICsJCQkJICogbWFya2VyKS4gTm8gbW9yZSBwcmVlbXB0aW9ucywg bGl0ZS1yZXN0b3JlCj4gKwkJCQkgKiBvciBvdGhlcndpc2UuCj4gKwkJCQkgKi8KPiAgCQkJCUdF TV9CVUdfT04oc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCk7Cj4gIAkJCQlHRU1f QlVHX09OKHBvcnRfaXNzZXQoJnBvcnRbMV0pICYmCj4gIAkJCQkJICAgIShzdGF0dXMgJiBHRU44 X0NUWF9TVEFUVVNfRUxFTUVOVF9TV0lUQ0gpKTsKPiArCQkJCUdFTV9CVUdfT04oIXBvcnRfaXNz ZXQoJnBvcnRbMV0pICYmCj4gKwkJCQkJICAgIShzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQUNU SVZFX0lETEUpKTsKPiArCj4gKwkJCQkvKgo+ICsJCQkJICogV2UgcmVseSBvbiB0aGUgaGFyZHdh cmUgYmVpbmcgc3Ryb25nbHkKPiArCQkJCSAqIG9yZGVyZWQsIHRoYXQgdGhlIGJyZWFkY3J1bWIg d3JpdGUgaXMKPiArCQkJCSAqIGNvaGVyZW50ICh2aXNpYmxlIGZyb20gdGhlIENQVSkgYmVmb3Jl IHRoZQo+ICsJCQkJICogdXNlciBpbnRlcnJ1cHQgYW5kIENTQiBpcyBwcm9jZXNzZWQuCj4gKwkJ CQkgKi8KPiAgCQkJCUdFTV9CVUdfT04oIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKTsKPiAr Cj4gIAkJCQlleGVjbGlzdHNfY29udGV4dF9zY2hlZHVsZV9vdXQocnEpOwo+ICAJCQkJdHJhY2Vf aTkxNV9yZXF1ZXN0X291dChycSk7Cj4gIAkJCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKPiBAQCAt MTAyMywxNyArMTA1NCwxNCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWlzc2lvbl90YXNr bGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKPiAgCQkJCUdFTV9UUkFDRSgiJXMgY29tcGxldGVkIGN0 eD0lZFxuIiwKPiAgCQkJCQkgIGVuZ2luZS0+bmFtZSwgcG9ydC0+Y29udGV4dF9pZCk7Cj4gIAo+ IC0JCQkJZXhlY2xpc3RzX3BvcnRfY29tcGxldGUoZXhlY2xpc3RzLCBwb3J0KTsKPiArCQkJCXBv cnQgPSBleGVjbGlzdHNfcG9ydF9jb21wbGV0ZShleGVjbGlzdHMsIHBvcnQpOwo+ICsJCQkJaWYg KHBvcnRfaXNzZXQocG9ydCkpCj4gKwkJCQkJZXhlY2xpc3RzX3VzZXJfYmVnaW4oZXhlY2xpc3Rz LCBwb3J0KTsKPiArCQkJCWVsc2UKPiArCQkJCQlleGVjbGlzdHNfdXNlcl9lbmQoZXhlY2xpc3Rz KTsKPiAgCQkJfSBlbHNlIHsKPiAgCQkJCXBvcnRfc2V0KHBvcnQsIHBvcnRfcGFjayhycSwgY291 bnQpKTsKPiAgCQkJfQo+IC0KPiAtCQkJLyogQWZ0ZXIgdGhlIGZpbmFsIGVsZW1lbnQsIHRoZSBo dyBzaG91bGQgYmUgaWRsZSAqLwo+IC0JCQlHRU1fQlVHX09OKHBvcnRfY291bnQocG9ydCkgPT0g MCAmJgo+IC0JCQkJICAgIShzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUpKTsK PiAtCQkJaWYgKHBvcnRfY291bnQocG9ydCkgPT0gMCkKPiAtCQkJCWV4ZWNsaXN0c19jbGVhcl9h Y3RpdmUoZXhlY2xpc3RzLAo+IC0JCQkJCQkgICAgICAgRVhFQ0xJU1RTX0FDVElWRV9VU0VSKTsK PiAgCQl9Cj4gIAo+ICAJCWlmIChoZWFkICE9IGV4ZWNsaXN0cy0+Y3NiX2hlYWQpIHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggYTAyYzdiM2I5ZDU1Li40 MDQ2MWUyOWNkYWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o Cj4gQEAgLTYzOCw2ICs2MzgsMTMgQEAgZXhlY2xpc3RzX3NldF9hY3RpdmUoc3RydWN0IGludGVs X2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywKPiAgCV9fc2V0X2JpdChiaXQsICh1bnNpZ25l ZCBsb25nICopJmV4ZWNsaXN0cy0+YWN0aXZlKTsKPiAgfQo+ICAKPiArc3RhdGljIGlubGluZSBi b29sCj4gK2V4ZWNsaXN0c19zZXRfYWN0aXZlX29uY2Uoc3RydWN0IGludGVsX2VuZ2luZV9leGVj bGlzdHMgKmV4ZWNsaXN0cywKPiArCQkJICB1bnNpZ25lZCBpbnQgYml0KQo+ICt7Cj4gKwlyZXR1 cm4gIV9fdGVzdF9hbmRfc2V0X2JpdChiaXQsICh1bnNpZ25lZCBsb25nICopJmV4ZWNsaXN0cy0+ YWN0aXZlKTsKPiArfQo+ICsKPiAgc3RhdGljIGlubGluZSB2b2lkCj4gIGV4ZWNsaXN0c19jbGVh cl9hY3RpdmUoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywKPiAgCQkg ICAgICAgdW5zaWduZWQgaW50IGJpdCkKPiBAQCAtNjUyLDYgKzY1OSwxMCBAQCBleGVjbGlzdHNf aXNfYWN0aXZlKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMs Cj4gIAlyZXR1cm4gdGVzdF9iaXQoYml0LCAodW5zaWduZWQgbG9uZyAqKSZleGVjbGlzdHMtPmFj dGl2ZSk7Cj4gIH0KPiAgCj4gK3ZvaWQgZXhlY2xpc3RzX3VzZXJfYmVnaW4oc3RydWN0IGludGVs X2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywKPiArCQkJICBjb25zdCBzdHJ1Y3QgZXhlY2xp c3RfcG9ydCAqcG9ydCk7Cj4gK3ZvaWQgZXhlY2xpc3RzX3VzZXJfZW5kKHN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMpOwo+ICsKPiAgdm9pZAo+ICBleGVjbGlzdHNfY2Fu Y2VsX3BvcnRfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBl eGVjbGlzdHMpOwo+ICAKPiBAQCAtNjY0LDcgKzY3NSw3IEBAIGV4ZWNsaXN0c19udW1fcG9ydHMo Y29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMpCj4g IAlyZXR1cm4gZXhlY2xpc3RzLT5wb3J0X21hc2sgKyAxOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5s aW5lIHZvaWQKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqCj4gIGV4ZWNs aXN0c19wb3J0X2NvbXBsZXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3Qg ZXhlY2xpc3RzLAo+ICAJCQlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqIGNvbnN0IHBvcnQpCj4gIHsK PiBAQCAtNjc1LDYgKzY4Niw4IEBAIGV4ZWNsaXN0c19wb3J0X2NvbXBsZXRlKHN0cnVjdCBpbnRl bF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzLAo+ICAKPiAgCW1lbW1vdmUocG9y dCwgcG9ydCArIDEsIG0gKiBzaXplb2Yoc3RydWN0IGV4ZWNsaXN0X3BvcnQpKTsKPiAgCW1lbXNl dChwb3J0ICsgbSwgMCwgc2l6ZW9mKHN0cnVjdCBleGVjbGlzdF9wb3J0KSk7Cj4gKwo+ICsJcmV0 dXJuIHBvcnQ7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Cj4gLS0gCj4g Mi4xNi4zCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=