From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: Break modeset deadlocks on reset Date: Wed, 21 Jun 2017 14:37:33 +0100 Message-ID: References: <20170620161218.9015-1-chris@chris-wilson.co.uk> <20170620195552.19584-1-chris@chris-wilson.co.uk> <149804561157.15021.16207511831696299140@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 383996E525 for ; Wed, 21 Jun 2017 13:37:36 +0000 (UTC) In-Reply-To: <149804561157.15021.16207511831696299140@mail.alporthouse.com> Content-Language: en-GB 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 Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIxLzA2LzIwMTcgMTI6NDYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE3LTA2LTIxIDEyOjMwOjE1KQo+Pgo+PiBPbiAyMC8wNi8yMDE3IDIwOjU1 LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBUcnlpbmcgdG8gZG8gYSBtb2Rlc2V0IGZyb20gd2l0 aGluIGEgcmVzZXQgaXMgZnJhdWdodCB3aXRoIGRhbmdlci4gV2UKPj4+IGNhbiBmYWxsIGludG8g YSBjeWNsaWMgZGVhZGxvY2sgd2hlcmUgdGhlIG1vZGVzZXQgaXMgd2FpdGluZyBvbiBhCj4+PiBw cmV2aW91cyBtb2Rlc2V0IHRoYXQgaXMgd2FpdGluZyBvbiBhIHJlcXVlc3QsIGFuZCBzaW5jZSB0 aGUgR1BVIGh1bmcKPj4+IHRoYXQgcmVxdWVzdCBjb21wbGV0aW9uIGlzIHdhaXRpbmcgb24gdGhl IHJlc2V0LiBBcyBtb2Rlc2V0dGluZyBkb2Vzbid0Cj4+PiBhbGxvdyBpdHMgbG9ja3MgdG8gYmUg YnJva2VuIGFuZCByZXN0YXJ0ZWQsIG9yIGZvciBpdHMgKm93biogcmVzZXQKPj4+IG1lY2hhbmlz bSB0byB0YWtlIG92ZXIgdGhlIGRpc3BsYXksIHdlIGhhdmUgdG8gZG8gc29tZXRoaW5nIHZlcnkK Pj4+IGV2aWwgaW5zdGVhZC4gSWYgd2UgZGV0ZWN0IHRoYXQgd2UgYXJlIHN0dWNrIHdhaXRpbmcg dG8gcHJlcGFyZSB0aGUKPj4+IGRpc3BsYXkgcmVzZXQgKGJ5IHVzaW5nIGEgdmVyeSBzaW1wbGUg dGltZW91dCksIHJlc29ydCB0byBjYW5jZWxsaW5nIGFsbAo+Pj4gaW4tZmxpZ2h0IHJlcXVlc3Rz IGFuZCB0aHJvd2luZyB0aGUgdXNlciBkYXRhIGludG8gL2Rldi9udWxsLCB3aGljaCBpcwo+Pj4g bWFyZ2luYWxseSBiZXR0ZXIgdGhhbiB0aGUgZHJpdmVyIGxvY2tpbmcgdXAgYW5kIGtlZXBpbmcg dGhhdCBkYXRhIHRvCj4+PiBpdHNlbGYuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+PiBDYzogTWFhcnRlbiBMYW5raG9yc3Qg PG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4+IENjOiBNaWthIEt1b3BwYWxh IDxtaWthLmt1b3BwYWxhQGludGVsLmNvbT4KPj4+IC0tLQo+Pj4gICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyB8IDE4ICsrKystLS0tLS0tLS0tLS0tLQo+Pj4gICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCj4+PiAgICAyIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDE1 IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+Pj4gaW5kZXggYzIy MTMwMTZmZDg2Li45NzNmNGY5ZTZiODQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4+PiBAQCAtMzA0MCw3ICszMDQwLDggQEAgc3RhdGljIHZvaWQgZW5naW5lX3NldF93ZWRnZWQo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Pj4gICAgICAgIC8qIE1hcmsgYWxsIGV4 ZWN1dGluZyByZXF1ZXN0cyBhcyBza2lwcGVkICovCj4+PiAgICAgICAgc3Bpbl9sb2NrX2lycXNh dmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKPj4+ICAgICAgICBsaXN0X2Zvcl9l YWNoX2VudHJ5KHJlcXVlc3QsICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywgbGluaykKPj4+ IC0gICAgICAgICAgICAgZG1hX2ZlbmNlX3NldF9lcnJvcigmcmVxdWVzdC0+ZmVuY2UsIC1FSU8p Owo+Pj4gKyAgICAgICAgICAgICBpZiAoIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVl c3QpKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRtYV9mZW5jZV9zZXRfZXJyb3IoJnJlcXVl c3QtPmZlbmNlLCAtRUlPKTsKPj4+ICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZlbmdp bmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4+PiAgICAKPj4+ICAgICAgICAvKiBNYXJrIGFs bCBwZW5kaW5nIHJlcXVlc3RzIGFzIGNvbXBsZXRlIHNvIHRoYXQgYW55IGNvbmN1cnJlbnQKPj4+ IEBAIC0zMDc5LDYgKzMwODAsNyBAQCBzdGF0aWMgaW50IF9faTkxNV9nZW1fc2V0X3dlZGdlZF9C S0wodm9pZCAqZGF0YSkKPj4+ICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 Cj4+PiAgICAgICAgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4+PiAgICAKPj4+ICsgICAgIHNl dF9iaXQoSTkxNV9XRURHRUQsICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3MpOwo+Pj4gICAgICAgIGZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQo+Pj4gICAgICAgICAgICAgICAgZW5naW5l X3NldF93ZWRnZWQoZW5naW5lKTsKPj4+ICAgIAo+Pj4gQEAgLTMwODcsMjAgKzMwODksNyBAQCBz dGF0aWMgaW50IF9faTkxNV9nZW1fc2V0X3dlZGdlZF9CS0wodm9pZCAqZGF0YSkKPj4+ICAgIAo+ Pj4gICAgdm9pZCBpOTE1X2dlbV9zZXRfd2VkZ2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPj4+ICAgIHsKPj4+IC0gICAgIGxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2 LT5kcm0uc3RydWN0X211dGV4KTsKPj4+IC0gICAgIHNldF9iaXQoSTkxNV9XRURHRUQsICZkZXZf cHJpdi0+Z3B1X2Vycm9yLmZsYWdzKTsKPj4+IC0KPj4+IC0gICAgIC8qIFJldGlyZSBjb21wbGV0 ZWQgcmVxdWVzdHMgZmlyc3Qgc28gdGhlIGxpc3Qgb2YgaW5mbGlnaHQvaW5jb21wbGV0ZQo+Pj4g LSAgICAgICogcmVxdWVzdHMgaXMgYWNjdXJhdGUgYW5kIHdlIGRvbid0IHRyeSBhbmQgbWFyayBz dWNjZXNzZnVsIHJlcXVlc3RzCj4+PiAtICAgICAgKiBhcyBpbiBlcnJvciBkdXJpbmcgX19pOTE1 X2dlbV9zZXRfd2VkZ2VkX0JLTCgpLgo+Pj4gLSAgICAgICovCj4+PiAtICAgICBpOTE1X2dlbV9y ZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOwo+Pj4gLQo+Pj4gICAgICAgIHN0b3BfbWFjaGluZShf X2k5MTVfZ2VtX3NldF93ZWRnZWRfQktMLCBkZXZfcHJpdiwgTlVMTCk7Cj4+PiAtCj4+PiAtICAg ICBpOTE1X2dlbV9jb250ZXh0c19sb3N0KGRldl9wcml2KTsKPj4+IC0KPj4+IC0gICAgIG1vZF9k ZWxheWVkX3dvcmsoZGV2X3ByaXYtPndxLCAmZGV2X3ByaXYtPmd0LmlkbGVfd29yaywgMCk7Cj4+ Cj4+IFdoYXQgd2FzIHRoZSBwdXJwb3NlIG9mIHRoaXMsIHNpbmNlIGl0IGlzIG5vdyBnb25lPwo+ IAo+IEl0IHdhcyB0byBjbGVhbiB1cCB0aGUgZGV2aWNlIGFmdGVyIGV4cGxpY2l0bHkgY2FuY2Vs bGluZyBldmVyeXRoaW5nLiBJbgo+IHRoZSBwcmUtcmVzZXQgcGF0aCwgSSBmZWx0IGl0IHdhcyBv dmVya2lsbCBhbmQgcmVwbGFjZWQgd2l0aCB0aGUgcmV0aXJlX3dvcmsKPiAod2hpY2ggd2lsbCB0 aGVuIGNhbGwgaWRsZV93b3JrIGFzIHJlcXVpcmVkKS4KPiAKPiBIbW0sIHRoaW5raW5nIGFib3V0 IHRoZSByZXNldCBjeWNsZSwgdGhlIHJldGlyZW1lbnQgaXMgZm9yY2VkIGFueXdheS4gTXkKPiBt YWluIGNvbmNlcm4gaXMgdGhhdCB3ZSBsb3NlIHRoZSBjbGVhbmxpbmVzcyBvZiBhICJub3JtYWwi IHdlZGdpbmcuCj4gCj4+PiAgICBib29sIGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKPj4+IEBAIC0zMTU1LDYgKzMxNDQsNyBAQCBib29sIGk5MTVf Z2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPj4+ICAgICAg ICAgKiBjb250ZXh0IGFuZCBkbyBub3QgcmVxdWlyZSBzdG9wX21hY2hpbmUoKS4KPj4+ICAgICAg ICAgKi8KPj4+ICAgICAgICBpbnRlbF9lbmdpbmVzX3Jlc2V0X2RlZmF1bHRfc3VibWlzc2lvbihp OTE1KTsKPj4+ICsgICAgIGk5MTVfZ2VtX2NvbnRleHRzX2xvc3QoaTkxNSk7Cj4+PiAgICAKPj4+ ICAgICAgICBzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsgLyogY29tcGxldGUgdGFrZW92ZXIgYmVm b3JlIGVuYWJsaW5nIGV4ZWNidWYgKi8KPj4+ICAgICAgICBjbGVhcl9iaXQoSTkxNV9XRURHRUQs ICZpOTE1LT5ncHVfZXJyb3IuZmxhZ3MpOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+PiBp bmRleCBiY2UyZDFmZWNlYjEuLjY1ODViY2RmNjFhNiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKPj4+IEBAIC0yNTk5LDYgKzI1OTksNDAgQEAgc3RhdGljIGlycXJldHVybl90IGdl bjhfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+Pj4gICAgICAgIHJldHVybiByZXQ7 Cj4+PiAgICB9Cj4+PiAgICAKPj4+ICtzdHJ1Y3Qgd2VkZ2VfbWUgewo+Pj4gKyAgICAgc3RydWN0 IGRlbGF5ZWRfd29yayB3b3JrOwo+Pj4gKyAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTU7Cj4+PiArICAgICBjb25zdCBjaGFyICpuYW1lOwo+Pj4gK307Cj4+PiArCj4+PiArc3RhdGlj IHZvaWQgd2VkZ2VfbWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+Pj4gK3sKPj4+ICsgICAg IHN0cnVjdCB3ZWRnZV9tZSAqdyA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKncpLCB3b3Jr LndvcmspOwo+Pj4gKwo+Pj4gKyAgICAgRFJNX0VSUk9SKCIlcyB0aW1lZCBvdXQsIGNhbmNlbGxp bmcgYWxsIGluLWZsaWdodCByZW5kZXJpbmcuXG4iLAo+Pj4gKyAgICAgICAgICAgICAgIHctPm5h bWUpOwo+Pgo+PiBEbyB5b3UgcGxhbiB0byBjYWxsIHRoaXMgZnJvbSBvdGhlciBwbGFjZXMgdG8g bmVlZCB0aGUgbmFtZSBzdHJpbmc/Cj4gCj4gSSB3YXMga2VlcGluZyB0aGF0IG9wdGlvbiBvcGVu LiA+Cj4+Cj4+PiArICAgICBpOTE1X2dlbV9zZXRfd2VkZ2VkKHctPmk5MTUpOwo+Pgo+PiBJcyBp dCBzYWZlIHRvIGRvIHRoZSBleGVjbGlzdF9wb3J0IG1hbmlwdWxhdGlvbiBhdCB0aGlzIHBvaW50 PyBDb3VsZG4ndAo+PiB3ZSByZWNlaXZlIGFuIGludGVycnVwdCBmb3Igb25lIHJlcXVlc3QgY29t cGxldGluZyBhZnRlciB3ZSBoYXZlIGNsZWFyZWQKPj4gaXQgZnJvbSBwb3J0cyBidXQgYmVmb3Jl IHRoZSBhY3R1YWwgcmVzZXQ/Cj4gCj4gV2UgZG8gdGhlIHBvcnQgbWFuaXB1bGF0aW9uIGFuZCBx dWV1ZSBjYW5jZWxsYXRpb24gaW5zaWRlIHN0b3BfbWFjaGluZSwKPiBpLmUuIGluIGNvbXBsZXRl IGlzb2xhdGlvbi4gVGhhdCBlbnN1cmVzIHdlIHdvbid0IHN1Y2N1bWIgdG8gYSByYWNlCj4gdGhl cmUsIHdlIGp1c3QgaGF2ZSB0byBiZSBjYXJlZnVsIHRoYXQgdGhlIGV4ZWNsaXN0cyBjYW5jZWxs YXRpb24gd29ya3MKPiBvbmNlIHRoZSBtYWNoaW5lIHByb2Nlc3MgdGhlIGludGVycnVwdHMgYWZ0 ZXJ3YXJkcy4gVGhhdCBJJ20gbm90IHN1cmUKPiBhYm91dC4uLgo+IAo+Pj4gK3N0YXRpYyBib29s IGluaXRfd2VkZ2Vfb25fdGltZW91dChzdHJ1Y3Qgd2VkZ2VfbWUgKncsCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHRpbWVvdXQsCj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCj4+PiArewo+Pj4gKyAg ICAgdy0+aTkxNSA9IGk5MTU7Cj4+PiArICAgICB3LT5uYW1lID0gbmFtZTsKPj4+ICsgICAgIElO SVRfREVMQVlFRF9XT1JLX09OU1RBQ0soJnctPndvcmssIHdlZGdlX21lKTsKPj4+ICsKPj4+ICsg ICAgIHNjaGVkdWxlX2RlbGF5ZWRfd29yaygmdy0+d29yaywgSFopOwo+Pgo+PiBPbmUgc2Vjb25k IGlzIHBlc3NpbWlzdGljIGVub3VnaCBldGM/Cj4gCj4gSXQncyBhIGhhcmQgY2FsbC4gSWYgd2Ug bWFrZSBpdCB0b28gbG9uZywgdGhlbiB0aGUgbW9kZXNldHRpbmcgdGltZXMgb3V0Cj4gd2l0aCBl dmVuIHdvcnNlIHJlc3VsdHMuIFRvbyBzaG9ydCBhbmQgd2UgbWF5IHRpbWVvdXQgaW4gdGhlIG1p ZGRsZSBvZiBhCj4gc2xvdyBlRFAgY3ljbGUuCj4gCj4+Cj4+PiArICAgICByZXR1cm4gdHJ1ZTsK Pj4KPj4gSXMgdGhlIHJldHVybiB2YWx1ZSBuZWVkZWQ/Cj4gCj4gVGhhdCdzIGp1c3QgZm9yIHN5 bnRhdGljIHN1Z2FyLiBXaGF0IEkgd2FudGVkIHdhcyBzb21ldGhpbmcgbGlrZQo+IAo+IAlpOTE1 X3RyeV9vcl93ZWRnZShwYXJhbXMpIHsKPiAJCWRhbmdlcm91c19mdW5jKCkuCj4gCX0KPiAKPiBp ZiAoaW5pdF93ZWRnZSgpKSB7IH0gd2FzIGVhc3kgd2l0aCBubyBtYWNybyBhYnVzZS4KPiAKPiBU aGUgYmVzdCBtYWNybyBhYnVzZSBJIGNhbiB0aGluayBvZiBpcyBmb3IoaW5pdF93ZWRnZSh3LCBw YXJhbXMpOyB0cnlfd2VkZ2Uodyk7ICkKPiAKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQg ZGVzdHJveV93ZWRnZV9vbl90aW1lb3V0KHN0cnVjdCB3ZWRnZV9tZSAqdykKPj4+ICt7Cj4+PiAr ICAgICBjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnctPndvcmspOwo+Pj4gKyAgICAgZGVzdHJv eV9kZWxheWVkX3dvcmtfb25fc3RhY2soJnctPndvcmspOwo+Pj4gK30KPj4+ICsKPj4KPj4gU2xp Z2h0IG9iamVjdGlvbiB0byB0aGUgIm9uIHN0YWNrIiBBUEkgc2luY2UgaXQgaXMgZGlzY29ubmVj dGVkIGZyb20gdGhlCj4+IGFsbG9jYXRpb24gc28gZG9lcyBub3QgZGlyZWN0bHkgc2VlIHdoZXRo ZXIgaXQgaXMgcmVhbGx5IG9uIHN0YWNrLiBCdXQKPj4gaXQgaXMgY2xvc2UgZW5vdWdoIHRvIGl0 IGFuZCB3aXRoIGp1c3Qgb25lIHVzZXIgc28gY291bGQgYmUgcGFzc2FibGUuCj4gCj4gSSBoZWFy IHlvdSwgYnV0IHRoZSBzdGFjayBwcm9wZXJ0aWVzIGFuZCBlbnN1cmluZyBhIHN0cmljdGx5IGNv bnRyb2xsZWQKPiBjcml0aWNhbCBzZWN0aW9uIHdlcmUgdG9vIG5pY2UuCj4gCj4+PiAgICAvKioK Pj4+ICAgICAqIGk5MTVfcmVzZXRfYW5kX3dha2V1cCAtIGRvIHByb2Nlc3MgY29udGV4dCBlcnJv ciBoYW5kbGluZyB3b3JrCj4+PiAgICAgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIHByaXZhdGUK Pj4+IEBAIC0yNjEyLDEzICsyNjQ2LDE3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVzZXRfYW5kX3dh a2V1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+Cj4+IFdpbGwgbmVlZCBy ZWJhc2UuCj4gCj4gZ2l0IGlzIG1hZ2ljLgo+IAo+Pj4gICAgICAgIGNoYXIgKmVycm9yX2V2ZW50 W10gPSB7IEk5MTVfRVJST1JfVUVWRU5UICI9MSIsIE5VTEwgfTsKPj4+ICAgICAgICBjaGFyICpy ZXNldF9ldmVudFtdID0geyBJOTE1X1JFU0VUX1VFVkVOVCAiPTEiLCBOVUxMIH07Cj4+PiAgICAg ICAgY2hhciAqcmVzZXRfZG9uZV9ldmVudFtdID0geyBJOTE1X0VSUk9SX1VFVkVOVCAiPTAiLCBO VUxMIH07Cj4+PiArICAgICBzdHJ1Y3Qgd2VkZ2VfbWUgdzsKPj4+ICAgIAo+Pj4gICAgICAgIGtv YmplY3RfdWV2ZW50X2Vudihrb2JqLCBLT0JKX0NIQU5HRSwgZXJyb3JfZXZlbnQpOwo+Pj4gICAg Cj4+PiAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigicmVzZXR0aW5nIGNoaXBcbiIpOwo+Pj4gICAg ICAgIGtvYmplY3RfdWV2ZW50X2Vudihrb2JqLCBLT0JKX0NIQU5HRSwgcmVzZXRfZXZlbnQpOwo+ Pj4gICAgCj4+PiAtICAgICBpbnRlbF9wcmVwYXJlX3Jlc2V0KGRldl9wcml2KTsKPj4+ICsgICAg IGlmIChpbml0X3dlZGdlX29uX3RpbWVvdXQoJncsIGRldl9wcml2LCBIWiwgImludGVsX3ByZXBh cmVfcmVzZXQiKSkgewo+Pj4gKyAgICAgICAgICAgICBpbnRlbF9wcmVwYXJlX3Jlc2V0KGRldl9w cml2KTsKPj4+ICsgICAgICAgICAgICAgZGVzdHJveV93ZWRnZV9vbl90aW1lb3V0KCZ3KTsKPj4+ ICsgICAgIH0KPj4+ICAgIAo+Pj4gICAgICAgIHNldF9iaXQoSTkxNV9SRVNFVF9IQU5ET0ZGLCAm ZGV2X3ByaXYtPmdwdV9lcnJvci5mbGFncyk7Cj4+PiAgICAgICAgd2FrZV91cF9hbGwoJmRldl9w cml2LT5ncHVfZXJyb3Iud2FpdF9xdWV1ZSk7Cj4+PiBAQCAtMjY0Miw2ICsyNjgwLDcgQEAgc3Rh dGljIHZvaWQgaTkxNV9yZXNldF9hbmRfd2FrZXVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhaKSk7Cj4+ PiAgICAKPj4+ICAgICAgICBpbnRlbF9maW5pc2hfcmVzZXQoZGV2X3ByaXYpOwo+Pj4gKyAgICAg bW9kX2RlbGF5ZWRfd29yayhkZXZfcHJpdi0+d3EsICZkZXZfcHJpdi0+Z3QucmV0aXJlX3dvcmss IDApOwo+Pgo+PiBBIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgdGhpcz8KPiAKPiBJdCdzIHRoZSBy ZXBsYWNlbWVudCBmb3IgdGhlIHJlbW92ZWQgaWRsZV93b3JrLCBidXQgbm93IEkgcmVhbGlzZSB0 aGF0IHdlCj4gYXJlIGd1YXJhbnRlZWQgYSBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoKSBhcyBw YXJ0IG9mIHRoZSByZXNldCBwcm9jZWR1cmUuCgpTbyB3aWxsIGJlIHJlc3Bpbm5pbmcgd2l0aCB0 aGlzIHJlbW92ZWQ/CgpSZWdhcmRzLAoKVHZydGtvCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==