From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 1/3] drm/i915/execlists: Switch to using STOP_RING instead of a semaphore Date: Tue, 25 Jun 2019 13:25:21 +0300 Message-ID: <87blym55da.fsf@gaia.fi.intel.com> References: <20190624130707.13292-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 154326E0C9 for ; Tue, 25 Jun 2019 10:25:36 +0000 (UTC) In-Reply-To: <20190624130707.13292-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+IHdyaXRlczoKCj4gTm90IGFs bCBtZWRpYXRlZCBlbnZpcm9ubWVudHMgeWV0IHN1cHBvcnQgSFcgc2VtYXBob3Jlcywgc28gd2Ug c2hvdWxkCj4gYXZvaWQgdXNpbmcgb25lIGZvciBvdXIgcHJlZW1wdC10by1idXN5IGJhcnJpZXIg YW5kIGluc3RlYWQgcmVxdWVzdCB0aGF0Cj4gdGhlIENTIGJlIHBhdXNlZCBhbmQgbm90IGFkdmFu Y2Ugb24gdG8gdGhlIG5leHQgZXhlY2xpc3QuCj4KPiBUaGVyZSdzIGEgbmF0dXJhbCBhZHZhbnRh Z2Ugd2l0aCB0aGUgcmVnaXN0ZXIgd3JpdGVzIGJlaW5nIHNlcmlhbGlzZWQKPiB3aXRoIHRoZSB3 cml0ZXMgdG8gdGhlIEVMU1AgcmVnaXN0ZXIgdGhhdCBzaG91bGQgYWxsb3cgdGhlIGJhcnJpZXIg dG8gYmUKPiBtdWNoIG1vcmUgY29uc3RyYWluZWQuIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjYW4g bm8gbG9uZ2VyIHRyYWNrIHRoZQo+IGV4dGVudHMgb2YgdGhlIGJhcnJpZXIgYW5kIHNvIG11c3Qg YmUgYSBsb3QgbW9yZSBsZW5pZW50IGluIGFjY2VwdGluZwo+IGVhcmx5IENTIGV2ZW50cy4KPgo+ IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+ IENjOiBaaGVueXUgV2FuZyA8emhlbnl1d0BsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIHwgIDggKysrCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jICAgICAgICAgIHwgNjkgKysrKysrKystLS0t LS0tLS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdp bmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5o Cj4gaW5kZXggN2UwNTYxMTQzNDRlLi4xMzUzZGYyNjQyMzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAo+IEBAIC0xNjYsNiArMTY2LDggQEAg c3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgewo+ICAJICovCj4gIAlib29sIG5vX3ByaW9s aXN0Owo+ICAKPiArCXUxNiByaW5nX21vZGU7Cj4gKwo+ICAJLyoqCj4gIAkgKiBAc3VibWl0X3Jl ZzogZ2VuLXNwZWNpZmljIGV4ZWNsaXN0IHN1Ym1pc3Npb24gcmVnaXN0ZXIKPiAgCSAqIHNldCB0 byB0aGUgRXhlY0xpc3QgU3VibWlzc2lvbiBQb3J0IChlbHNwKSByZWdpc3RlciBwcmUtR2VuMTEg YW5kIHRvCj4gQEAgLTE3OSw2ICsxODEsMTIgQEAgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlz dHMgewo+ICAJICovCj4gIAl1MzIgX19pb21lbSAqY3RybF9yZWc7Cj4gIAo+ICsJLyoqCj4gKwkg KiBAcmluZ19tb2RlOiB0aGUgZW5naW5lIGNvbnRyb2wgcmVnaXN0ZXIsIHVzZWQgdG8gZnJlZXpl IHRoZSBjb21tYW5kCj4gKwkgKiBzdHJlYW1lciBhcm91bmQgcHJlZW1wdC10by1idXN5Cj4gKwkg Ki8KPiArCXUzMiBfX2lvbWVtICpyaW5nX3JlZzsKPiArCj4gICNkZWZpbmUgRVhFQ0xJU1RfTUFY X1BPUlRTIDIKPiAgCS8qKgo+ICAJICogQGFjdGl2ZTogdGhlIGN1cnJlbnRseSBrbm93biBjb250 ZXh0IGV4ZWN1dGluZyBvbiBIVwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4gaW5k ZXggMjg2ODViYTkxYTJjLi5jMmFhYWI0Yjc0M2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9scmMuYwo+IEBAIC0yMjQsMjQgKzIyNCwxOCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNf aW5pdF9yZWdfc3RhdGUodTMyICpyZWdfc3RhdGUsCj4gIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKPiAgCQkJCSAgICAgc3RydWN0IGludGVsX3JpbmcgKnJpbmcpOwo+ ICAKPiAtc3RhdGljIGlubGluZSB1MzIgaW50ZWxfaHdzX3ByZWVtcHRfYWRkcmVzcyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCByaW5nX3NldF9w YXVzZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc3RhdGUpCj4gIHsKPiAt CXJldHVybiAoaTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnN0YXR1c19wYWdlLnZtYSkgKwo+IC0J CUk5MTVfR0VNX0hXU19QUkVFTVBUX0FERFIpOwo+IC19Cj4gKwl1MTYgeDsKPiAgCj4gLXN0YXRp YyBpbmxpbmUgdm9pZAo+IC1yaW5nX3NldF9wYXVzZWQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCBpbnQgc3RhdGUpCj4gLXsKPiAtCS8qCj4gLQkgKiBXZSBpbnNwZWN0IEhX U19QUkVFTVBUIHdpdGggYSBzZW1hcGhvcmUgaW5zaWRlCj4gLQkgKiBlbmdpbmUtPmVtaXRfZmlu aV9icmVhZGNydW1iLiBJZiB0aGUgZHdvcmQgaXMgdHJ1ZSwKPiAtCSAqIHRoZSByaW5nIGlzIHBh dXNlZCBhcyB0aGUgc2VtYXBob3JlIHdpbGwgYnVzeXdhaXQKPiAtCSAqIHVudGlsIHRoZSBkd29y ZCBpcyBmYWxzZS4KPiAtCSAqLwo+IC0JZW5naW5lLT5zdGF0dXNfcGFnZS5hZGRyW0k5MTVfR0VN X0hXU19QUkVFTVBUXSA9IHN0YXRlOwo+IC0JaWYgKHN0YXRlKQo+IC0JCXdtYigpOwo+ICsJeCA9 IGVuZ2luZS0+ZXhlY2xpc3RzLnJpbmdfbW9kZTsKPiArCXggJj0gfihzdGF0ZSA+PiAxNik7Cj4g Kwl4IHw9IHN0YXRlOwo+ICsJaWYgKHggPT0gZW5naW5lLT5leGVjbGlzdHMucmluZ19tb2RlKQo+ ICsJCXJldHVybjsKCllvdSB3YW50IHRvIGtlZXAgdGhlIHN0YXRlIHRvIHJlZHVjZSBub25lZmZl Y3RpdmUgd3JpdGVzPwoKSSB3b3VsZCBsaWtlIHJpbmdfZnJlZXplKCkgYW5kIHJpbmdfdGhhdygp IGFuZAp0aGUgc3RhdGUgcGFyYW1ldGVyIHJlbW92ZWQsIGFzIEkgZG9uJ3Qgc2VlIHRoZQp2YWx1 ZSBpbiBjYWxsc2l0ZXMgdG8gbWFjcm8gdGhlIG1hc2tlZCBiaXRzLgoKPiArCj4gKwllbmdpbmUt PmV4ZWNsaXN0cy5yaW5nX21vZGUgPSB4Owo+ICsJd3JpdGVsKHN0YXRlLCBlbmdpbmUtPmV4ZWNs aXN0cy5yaW5nX3JlZyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcHJp b2xpc3QgKnRvX3ByaW9saXN0KHN0cnVjdCByYl9ub2RlICpyYikKPiBAQCAtOTgxLDcgKzk3NSw3 IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgCQkJICogYXMgd2UgdW53aW5kIChhbmQgdW50aWwgd2UgcmVzdWJtaXQpIHNv IHRoYXQgd2UgZG8KPiAgCQkJICogbm90IGFjY2lkZW50YWxseSB0ZWxsIGl0IHRvIGdvIGJhY2t3 YXJkcy4KPiAgCQkJICovCj4gLQkJCXJpbmdfc2V0X3BhdXNlZChlbmdpbmUsIDEpOwo+ICsJCQly aW5nX3NldF9wYXVzZWQoZW5naW5lLCBfTUFTS0VEX0JJVF9FTkFCTEUoU1RPUF9SSU5HKSk7Cj4g IAo+ICAJCQkvKgo+ICAJCQkgKiBOb3RlIHRoYXQgd2UgaGF2ZSBub3Qgc3RvcHBlZCB0aGUgR1BV IGF0IHRoaXMgcG9pbnQsCj4gQEAgLTEwMTAsNyArMTAwNCw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNs aXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCQkJCSAgbGFz dC0+c2NoZWQuYXR0ci5wcmlvcml0eSwKPiAgCQkJCSAgZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0 eV9oaW50KTsKPiAgCj4gLQkJCXJpbmdfc2V0X3BhdXNlZChlbmdpbmUsIDEpOwo+ICsJCQlyaW5n X3NldF9wYXVzZWQoZW5naW5lLCBfTUFTS0VEX0JJVF9FTkFCTEUoU1RPUF9SSU5HKSk7Cj4gIAkJ CWRlZmVyX2FjdGl2ZShlbmdpbmUpOwo+ICAKPiAgCQkJLyoKPiBAQCAtMTI0NCw5ICsxMjM4LDEw IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiAgCQkqcG9ydCA9IGV4ZWNsaXN0c19zY2hlZHVsZV9pbihsYXN0LCBwb3J0IC0g ZXhlY2xpc3RzLT5wZW5kaW5nKTsKPiAgCQltZW1zZXQocG9ydCArIDEsIDAsIChsYXN0X3BvcnQg LSBwb3J0KSAqIHNpemVvZigqcG9ydCkpOwo+ICAJCWV4ZWNsaXN0c19zdWJtaXRfcG9ydHMoZW5n aW5lKTsKPiAtCX0gZWxzZSB7Cj4gLQkJcmluZ19zZXRfcGF1c2VkKGVuZ2luZSwgMCk7Cj4gIAl9 Cj4gKwo+ICsJaWYgKCFpbmplY3RfcHJlZW1wdF9oYW5nKGV4ZWNsaXN0cykpCj4gKwkJcmluZ19z ZXRfcGF1c2VkKGVuZ2luZSwgX01BU0tFRF9CSVRfRElTQUJMRShTVE9QX1JJTkcpKTsKClRoaXMg aXMganVzdCBhIHN1cGVyc2V0IG9mIHRoZSBwcmV2aW91cyB1bnBhdXNpbmcgbm93PwoKPiAgfQo+ ICAKPiAgdm9pZAo+IEBAIC0xMzU1LDkgKzEzNTAsNiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2Nz YihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAo+ICAJCQlpZiAoZW5hYmxlX3Rp bWVzbGljZShlbmdpbmUpKQo+ICAJCQkJbW9kX3RpbWVyKCZleGVjbGlzdHMtPnRpbWVyLCBqaWZm aWVzICsgMSk7Cj4gLQo+IC0JCQlpZiAoIWluamVjdF9wcmVlbXB0X2hhbmcoZXhlY2xpc3RzKSkK PiAtCQkJCXJpbmdfc2V0X3BhdXNlZChlbmdpbmUsIDApOwo+ICAJCX0gZWxzZSBpZiAoc3RhdHVz ICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCkgewo+ICAJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICogY29uc3QgKnBvcnQgPSBleGVjbGlzdHMtPmFjdGl2ZTsKPiAgCj4gQEAgLTEzNzgsOCArMTM3 MCwxNSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2NzYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gIAkJCSAqIG9yZGVyZWQsIHRoYXQgdGhlIGJyZWFkY3J1bWIgd3JpdGUgaXMKPiAg CQkJICogY29oZXJlbnQgKHZpc2libGUgZnJvbSB0aGUgQ1BVKSBiZWZvcmUgdGhlCj4gIAkJCSAq IHVzZXIgaW50ZXJydXB0IGFuZCBDU0IgaXMgcHJvY2Vzc2VkLgo+ICsJCQkgKgo+ICsJCQkgKiBU aGUgY2F2ZWF0IGhlcmUgYXBwbGllcyB3aGVuIHdlIGFyZSBpbmplY3RpbmcKPiArCQkJICogYSBj b21wbGV0aW9uIGV2ZW50IHZpYSBtYW5pcHVsYXRpb24gb2YgdGhlCj4gKwkJCSAqIFJJTkdfTUlf TU9ERTsgdGhpcyBtYXkgb2NjdXIgYmVmb3JlIHRoZQo+ICsJCQkgKiByZXF1ZXN0IGlzIGNvbXBs ZXRlZCBhbmQgYXBwZWFycyBhcyBhCj4gKwkJCSAqIG5vcm1hbCBjb250ZXh0LXN3aXRjaCAoMHgx NCkuCgpBcyBpbiB3ZSB1bnBhdXNlIGFuZCBnZXQgYSBjb21wbGV0aW9uIGV2ZW50PwoKLU1pa2EK Cgo+ICAJCQkgKi8KPiAtCQkJR0VNX0JVR19PTighaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkp Owo+ICsJCQlHRU1fQlVHX09OKCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSAmJgo+ICsJCQkJ ICAgIWV4ZWNsaXN0cy0+cGVuZGluZ1swXSk7Cj4gIAkJCWV4ZWNsaXN0c19zY2hlZHVsZV9vdXQo cnEpOwo+ICAKPiAgCQkJR0VNX0JVR19PTihleGVjbGlzdHMtPmFjdGl2ZSAtIGV4ZWNsaXN0cy0+ aW5mbGlnaHQgPgo+IEBAIC0yMTMzLDcgKzIxMzIsNyBAQCBzdGF0aWMgdm9pZCByZXNldF9jc2Jf cG9pbnRlcnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJc3RydWN0IGludGVs X2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7 Cj4gIAljb25zdCB1bnNpZ25lZCBpbnQgcmVzZXRfdmFsdWUgPSBleGVjbGlzdHMtPmNzYl9zaXpl IC0gMTsKPiAgCj4gLQlyaW5nX3NldF9wYXVzZWQoZW5naW5lLCAwKTsKPiArCXJpbmdfc2V0X3Bh dXNlZChlbmdpbmUsIF9NQVNLRURfQklUX0RJU0FCTEUoU1RPUF9SSU5HKSk7Cj4gIAo+ICAJLyoK PiAgCSAqIEFmdGVyIGEgcmVzZXQsIHRoZSBIVyBzdGFydHMgd3JpdGluZyBpbnRvIENTQiBlbnRy eSBbMF0uIFdlCj4gQEAgLTI1ODEsMTkgKzI1ODAsNiBAQCBzdGF0aWMgdTMyICpnZW44X2VtaXRf d2FfdGFpbChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIgKmNzKQo+ICAJcmV0dXJu IGNzOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdTMyICplbWl0X3ByZWVtcHRfYnVzeXdhaXQoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwgdTMyICpjcykKPiAtewo+IC0JKmNzKysgPSBNSV9TRU1B UEhPUkVfV0FJVCB8Cj4gLQkJTUlfU0VNQVBIT1JFX0dMT0JBTF9HVFQgfAo+IC0JCU1JX1NFTUFQ SE9SRV9QT0xMIHwKPiAtCQlNSV9TRU1BUEhPUkVfU0FEX0VRX1NERDsKPiAtCSpjcysrID0gMDsK PiAtCSpjcysrID0gaW50ZWxfaHdzX3ByZWVtcHRfYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUpOwo+ IC0JKmNzKysgPSAwOwo+IC0KPiAtCXJldHVybiBjczsKPiAtfQo+IC0KPiAgc3RhdGljIHUzMiAq Z2VuOF9lbWl0X2ZpbmlfYnJlYWRjcnVtYihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCB1 MzIgKmNzKQo+ICB7Cj4gIAljcyA9IGdlbjhfZW1pdF9nZ3R0X3dyaXRlKGNzLAo+IEBAIC0yNjAx LDkgKzI1ODcsNyBAQCBzdGF0aWMgdTMyICpnZW44X2VtaXRfZmluaV9icmVhZGNydW1iKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsIHUzMiAqY3MpCj4gIAkJCQkgIHJlcXVlc3QtPnRpbWVs aW5lLT5od3NwX29mZnNldCwKPiAgCQkJCSAgMCk7Cj4gIAkqY3MrKyA9IE1JX1VTRVJfSU5URVJS VVBUOwo+IC0KPiAgCSpjcysrID0gTUlfQVJCX09OX09GRiB8IE1JX0FSQl9FTkFCTEU7Cj4gLQlj cyA9IGVtaXRfcHJlZW1wdF9idXN5d2FpdChyZXF1ZXN0LCBjcyk7Cj4gIAo+ICAJcmVxdWVzdC0+ dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QsIGNzKTsKPiAgCWFzc2VydF9yaW5nX3Rh aWxfdmFsaWQocmVxdWVzdC0+cmluZywgcmVxdWVzdC0+dGFpbCk7Cj4gQEAgLTI2MjUsOSArMjYw OSw3IEBAIHN0YXRpYyB1MzIgKmdlbjhfZW1pdF9maW5pX2JyZWFkY3J1bWJfcmNzKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJlcXVlc3QsIHUzMiAqY3MpCj4gIAkJCQkgICAgUElQRV9DT05UUk9MX0NT X1NUQUxMLAo+ICAJCQkJICAgIDApOwo+ICAJKmNzKysgPSBNSV9VU0VSX0lOVEVSUlVQVDsKPiAt Cj4gIAkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFOwo+IC0JY3MgPSBlbWl0 X3ByZWVtcHRfYnVzeXdhaXQocmVxdWVzdCwgY3MpOwo+ICAKPiAgCXJlcXVlc3QtPnRhaWwgPSBp bnRlbF9yaW5nX29mZnNldChyZXF1ZXN0LCBjcyk7Cj4gIAlhc3NlcnRfcmluZ190YWlsX3ZhbGlk KHJlcXVlc3QtPnJpbmcsIHJlcXVlc3QtPnRhaWwpOwo+IEBAIC0yODA3LDYgKzI3ODksOSBAQCBp bnQgaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4gIAlleGVjbGlzdHMtPmNzYl93cml0ZSA9Cj4gIAkJJmVuZ2luZS0+c3RhdHVz X3BhZ2UuYWRkcltpbnRlbF9od3NfY3NiX3dyaXRlX2luZGV4KGk5MTUpXTsKPiAgCj4gKwlleGVj bGlzdHMtPnJpbmdfcmVnID0KPiArCQl1bmNvcmUtPnJlZ3MgKyBpOTE1X21taW9fcmVnX29mZnNl dChSSU5HX01JX01PREUoYmFzZSkpOwo+ICsKPiAgCWlmIChJTlRFTF9HRU4oaTkxNSkgPCAxMSkK PiAgCQlleGVjbGlzdHMtPmNzYl9zaXplID0gR0VOOF9DU0JfRU5UUklFUzsKPiAgCWVsc2UKPiAt LSAKPiAyLjIwLjEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4