From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 01/32] drm/i915: Seal races between async GPU cancellation, retirement and signaling Date: Tue, 23 Apr 2019 13:59:47 +0100 Message-ID: <7c6ad611-8373-7ce8-cf3f-9a4ec2f4fffa@linux.intel.com> References: <20190417075657.19456-1-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0CC3E890F9 for ; Tue, 23 Apr 2019 12:59:50 +0000 (UTC) In-Reply-To: <20190417075657.19456-1-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 Ck9uIDE3LzA0LzIwMTkgMDg6NTYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBDdXJyZW50bHkgdGhl cmUgaXMgYW4gdW5kZXJseWluZyBhc3N1bXB0aW9uIHRoYXQgaTkxNV9yZXF1ZXN0X3Vuc3VibWl0 KCkKPiBpcyBzeW5jaHJvbm91cyB3cnQgdGhlIEdQVSAtLSB0aGF0IGlzIHRoZSByZXF1ZXN0IGlz IG5vIGxvbmdlciBpbiBmbGlnaHQKPiBhcyB3ZSByZW1vdmUgaXQuIEluIHRoZSBuZWFyIGZ1dHVy ZSB0aGF0IG1heSBjaGFuZ2UsIGFuZCB0aGlzIG1heSB1cHNldAo+IG91ciBzaWduYWxpbmcgYXMg d2UgY2FuIHByb2Nlc3MgYW4gaW50ZXJydXB0IGZvciB0aGF0IHJlcXVlc3Qgd2hpbGUgaXQKPiBp cyBubyBsb25nZXIgaW4gZmxpZ2h0Lgo+IAo+IENQVTAJCQkJCUNQVTEKPiBpbnRlbF9lbmdpbmVf YnJlYWRjcnVtYnNfaXJxCj4gKHF1ZXVlIHJlcXVlc3QgY29tcGxldGlvbikKPiAJCQkJCWk5MTVf cmVxdWVzdF9jYW5jZWxfc2lnbmFsaW5nCj4gLi4uCQkJCQkuLi4KPiAJCQkJCWk5MTVfcmVxdWVz dF9lbmFibGVfc2lnbmFsaW5nCj4gZG1hX2ZlbmNlX3NpZ25hbAo+IAo+IEhlbmNlIGluIHRoZSB0 aW1lIGl0IHRvb2sgdXMgdG8gZHJvcCB0aGUgbG9jayB0byBzaWduYWwgdGhlIHJlcXVlc3QsIGEK PiBwcmVlbXB0aW9uIGV2ZW50IG1heSBoYXZlIG9jY3VycmVkIGFuZCByZS1xdWV1ZWQgdGhlIHJl cXVlc3QuIEluIHRoZQo+IHByb2Nlc3MsIHRoYXQgcmVxdWVzdCB3b3VsZCBoYXZlIHNlZW4gSTkx NV9GRU5DRV9GTEFHX1NJR05BTCBjbGVhciBhbmQKPiBzbyByZXVzZWQgdGhlIHJxLT5zaWduYWxf bGluayB0aGF0IHdhcyBpbiB1c2Ugb24gQ1BVMCwgbGVhZGluZyB0byBiYWQKPiBwb2ludGVyIGNo YXNpbmcgaW4gaW50ZWxfZW5naW5lX2JyZWFkY3J1bWJzX2lycS4KPiAKPiBBIHJlbGF0ZWQgaXNz dWUgd2FzIHRoYXQgaWYgc29tZW9uZSBzdGFydGVkIGxpc3RlbmluZyBmb3IgYSBzaWduYWwgb24g YQo+IGNvbXBsZXRlZCBidXQgbm8gbG9uZ2VyIGluLWZsaWdodCByZXF1ZXN0LCB3ZSBtaXNzZWQg dGhlIG9wcG9ydHVuaXR5IHRvCj4gaW1tZWRpYXRlbHkgc2lnbmFsIHRoYXQgcmVxdWVzdC4KPiAK PiBGdXJ0aGVybW9yZSwgYXMgaW50ZWxfY29udGV4dHMgbWF5IGJlIGltbWVkaWF0ZWx5IHJlbGVh c2VkIGR1cmluZwo+IHJlcXVlc3QgcmV0aXJlbWVudCwgaW4gb3JkZXIgdG8gYmUgZW50aXJlbHkg c3VyZSB0aGF0Cj4gaW50ZWxfZW5naW5lX2JyZWFkY3J1bWJzX2lycSBtYXkgbm8gbG9uZ2VyIGRl cmVmZXJlbmNlIHRoZSBpbnRlbF9jb250ZXh0Cj4gKGNlLT5zaWduYWxzIGFuZCBjZS0+c2lnbmFs X2xpbmspLCB3ZSBtdXN0IHdhaXQgZm9yIGlycSBzcGlubG9jay4KPiAKPiBJbiBvcmRlciB0byBw cmV2ZW50IHRoZSByYWNlLCB3ZSB1c2UgYSBiaXQgaW4gdGhlIGZlbmNlLmZsYWdzIHRvIHNpZ25h bAo+IHRoZSB0cmFuc2ZlciBvbnRvIHRoZSBzaWduYWwgbGlzdCBpbnNpZGUgaW50ZWxfZW5naW5l X2JyZWFkY3J1bWJzX2lycS4KPiBGb3Igc2ltcGxpY2l0eSwgd2UgdXNlIHRoZSBETUFfRkVOQ0Vf RkxBR19TSUdOQUxFRF9CSVQgYXMgaXQgdGhlbgo+IHF1aWNrbHkgc2lnbmFscyB0byBhbnkgb3V0 c2lkZSBvYnNlcnZlciB0aGF0IHRoZSBmZW5jZSBpcyBpbmRlZWQgc2lnbmFsZWQuCj4gCj4gRml4 ZXM6IDUyYzBmZGIyNWM3YyAoImRybS9pOTE1OiBSZXBsYWNlIGdsb2JhbCBicmVhZGNydW1icyB3 aXRoIHBlci1jb250ZXh0IGludGVycnVwdCB0cmFja2luZyIpCj4gU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGlu IDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2RtYS1idWYvZG1h LWZlbmNlLmMgICAgICAgICAgICAgIHwgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMgICAgICB8ICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jy ZWFkY3J1bWJzLmMgfCA1MiArKysrKysrKysrKysrKy0tLS0tLS0tLS0KPiAgIDMgZmlsZXMgY2hh bmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2Uu Ywo+IGluZGV4IDNhYTg3MzNmODMyYS4uOWJmMDYwNDI2MTlhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYwo+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2Uu Ywo+IEBAIC0yOSw2ICsyOSw3IEBACj4gICAKPiAgIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChk bWFfZmVuY2VfZW1pdCk7Cj4gICBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woZG1hX2ZlbmNlX2Vu YWJsZV9zaWduYWwpOwo+ICtFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woZG1hX2ZlbmNlX3NpZ25h bGVkKTsKPiAgIAo+ICAgc3RhdGljIERFRklORV9TUElOTE9DSyhkbWFfZmVuY2Vfc3R1Yl9sb2Nr KTsKPiAgIHN0YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlIGRtYV9mZW5jZV9zdHViOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXggYjgzNjcyMWQzYjEzLi5lMGVmYzMzNDQ2M2Ig MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBAIC00MzIsNiArNDMyLDcg QEAgdm9pZCBfX2k5MTVfcmVxdWVzdF9zdWJtaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVz dCkKPiAgIAlzZXRfYml0KEk5MTVfRkVOQ0VfRkxBR19BQ1RJVkUsICZyZXF1ZXN0LT5mZW5jZS5m bGFncyk7Cj4gICAKPiAgIAlpZiAodGVzdF9iaXQoRE1BX0ZFTkNFX0ZMQUdfRU5BQkxFX1NJR05B TF9CSVQsICZyZXF1ZXN0LT5mZW5jZS5mbGFncykgJiYKPiArCSAgICAhdGVzdF9iaXQoRE1BX0ZF TkNFX0ZMQUdfU0lHTkFMRURfQklULCAmcmVxdWVzdC0+ZmVuY2UuZmxhZ3MpICYmCj4gICAJICAg ICFpOTE1X3JlcXVlc3RfZW5hYmxlX2JyZWFkY3J1bWIocmVxdWVzdCkpCj4gICAJCWludGVsX2Vu Z2luZV9xdWV1ZV9icmVhZGNydW1icyhlbmdpbmUpOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9icmVhZGNydW1icy5jCj4gaW5kZXggM2NiZmZkNDAwYjFiLi5lMTlmODRiMDA2Y2Mg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKPiBAQCAtMjMs NiArMjMsNyBAQAo+ICAgICovCj4gICAKPiAgICNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+Cj4g KyNpbmNsdWRlIDx0cmFjZS9ldmVudHMvZG1hX2ZlbmNlLmg+Cj4gICAjaW5jbHVkZSA8dWFwaS9s aW51eC9zY2hlZC90eXBlcy5oPgo+ICAgCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiBAQCAt ODMsNiArODQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgX19yZXF1ZXN0X2NvbXBsZXRlZChjb25z dCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHZvaWQgaW50ZWxfZW5naW5lX2JyZWFkY3J1 bWJzX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0 IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+YnJlYWRjcnVtYnM7Cj4gKwljb25zdCBr dGltZV90IHRpbWVzdGFtcCA9IGt0aW1lX2dldCgpOwo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSwgKmNuOwo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgKnBvcywgKm5leHQ7Cj4gICAJTElTVF9I RUFEKHNpZ25hbCk7Cj4gQEAgLTEwNCw2ICsxMDYsMTEgQEAgdm9pZCBpbnRlbF9lbmdpbmVfYnJl YWRjcnVtYnNfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAo+ICAgCQkJ R0VNX0JVR19PTighdGVzdF9iaXQoSTkxNV9GRU5DRV9GTEFHX1NJR05BTCwKPiAgIAkJCQkJICAg ICAmcnEtPmZlbmNlLmZsYWdzKSk7Cj4gKwkJCWNsZWFyX2JpdChJOTE1X0ZFTkNFX0ZMQUdfU0lH TkFMLCAmcnEtPmZlbmNlLmZsYWdzKTsKPiArCj4gKwkJCWlmICh0ZXN0X2FuZF9zZXRfYml0KERN QV9GRU5DRV9GTEFHX1NJR05BTEVEX0JJVCwKPiArCQkJCQkgICAgICZycS0+ZmVuY2UuZmxhZ3Mp KQo+ICsJCQkJY29udGludWU7CgogRnJvbSBoZXJlIHRvIGJlbG93IGlzIGludGltYXRlIGNvdXBs aW5nIHdpdGggdGhlIGRtYV9mZW5jZV9zaWduYWwgCmltcGxlbWVudGF0aW9uLCB2aWEgb3Blbi1j b2RpbmcgaXQgKHdpdGggc29tZSBvcHRpbWl6YXRpb25zIGFzIHdlbGwpLgoKSSBhbSB0aGlua2lu ZyBhYm91dCB0aGlzIHNvbHV0aW9uLi4gaGVyZSB3ZSBwdXQ6CgoJaWYgKCFfX2RtYV9mZW5jZV9t YXliZV9zaWduYWwoJnJxLT5mZW5jZSkpCgkJY29udGludWU7CgpBZGQgdGhlIGxvdy1sZXZlbCBo ZWxwZXIgdG8gZG1hLWZlbmNlLmMgYW5kIGV4cG9ydCBpdC4KCkFuZCBiZWxvdy4uCgo+ICAgCj4g ICAJCQkvKgo+ICAgCQkJICogUXVldWUgZm9yIGV4ZWN1dGlvbiBhZnRlciBkcm9wcGluZyB0aGUg c2lnbmFsaW5nCj4gQEAgLTExMSwxNCArMTE4LDYgQEAgdm9pZCBpbnRlbF9lbmdpbmVfYnJlYWRj cnVtYnNfaXJxKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCSAqIG1vcmUg c2lnbmFsZXJzIHRvIHRoZSBzYW1lIGNvbnRleHQgb3IgZW5naW5lLgo+ICAgCQkJICovCj4gICAJ CQlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKPiAtCj4gLQkJCS8qCj4gLQkJCSAqIFdlIG1heSByYWNl IHdpdGggZGlyZWN0IGludm9jYXRpb24gb2YKPiAtCQkJICogZG1hX2ZlbmNlX3NpZ25hbCgpLCBl LmcuIGk5MTVfcmVxdWVzdF9yZXRpcmUoKSwKPiAtCQkJICogc28gd2UgbmVlZCB0byBhY3F1aXJl IG91ciByZWZlcmVuY2UgdG8gdGhlIHJlcXVlc3QKPiAtCQkJICogYmVmb3JlIHdlIGNhbmNlbCB0 aGUgYnJlYWRjcnVtYi4KPiAtCQkJICovCj4gLQkJCWNsZWFyX2JpdChJOTE1X0ZFTkNFX0ZMQUdf U0lHTkFMLCAmcnEtPmZlbmNlLmZsYWdzKTsKPiAgIAkJCWxpc3RfYWRkX3RhaWwoJnJxLT5zaWdu YWxfbGluaywgJnNpZ25hbCk7Cj4gICAJCX0KPiAgIAo+IEBAIC0xNDAsOCArMTM5LDIxIEBAIHZv aWQgaW50ZWxfZW5naW5lX2JyZWFkY3J1bWJzX2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICAJbGlzdF9mb3JfZWFjaF9zYWZlKHBvcywgbmV4dCwgJnNpZ25hbCkgewo+ICAg CQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9Cj4gICAJCQlsaXN0X2VudHJ5KHBvcywgdHlwZW9m KCpycSksIHNpZ25hbF9saW5rKTsKPiArCQlzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpjdXIsICp0bXA7 Cj4gKwo+ICsJCXRyYWNlX2RtYV9mZW5jZV9zaWduYWxlZCgmcnEtPmZlbmNlKTsKPiArCj4gKwkJ cnEtPmZlbmNlLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKPiArCQlzZXRfYml0KERNQV9GRU5DRV9G TEFHX1RJTUVTVEFNUF9CSVQsICZycS0+ZmVuY2UuZmxhZ3MpOwo+ICsKPiArCQlzcGluX2xvY2so JnJxLT5sb2NrKTsKPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3VyLCB0bXAsICZycS0+ ZmVuY2UuY2JfbGlzdCwgbm9kZSkgewo+ICsJCQlJTklUX0xJU1RfSEVBRCgmY3VyLT5ub2RlKTsK PiArCQkJY3VyLT5mdW5jKCZycS0+ZmVuY2UsIGN1cik7Cj4gKwkJfQo+ICsJCUlOSVRfTElTVF9I RUFEKCZycS0+ZmVuY2UuY2JfbGlzdCk7Cj4gKwkJc3Bpbl91bmxvY2soJnJxLT5sb2NrKTsKCi4u d2UgZG86CgogICBfX2RtYV9mZW5jZV9jb21wbGV0ZS9mb3JjZS9maW5pc2hfc2lnbmFsKCZycS0+ ZmVuY2UsIHRpbWVzdGFtcCkpOwoKQWxzbyBleHBvcnQgZXRjLCBpbnN0ZWFkIG9mIHRoZSB3aG9s ZSBhYm92ZSBibG9jay4KClRoaXMgd2F5IGl0IGlzIGJvdGggc2VsZi1kb2N1bWVudGluZyBpbiBv dXIgY29kZSBhbmQgd2UgcmVtb3ZlIHRoZSAKaW50aW1hdGUgY291cGxpbmcgd2l0aCBkbWEtZmVu Y2UgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KCk5vIG5lZWQgdG8gZXhwb3J0IHRoZSB0cmFjZXBv aW50IHRoZW4gZWl0aGVyLgoKKFlvdSBjYW4gaGF2ZSBhIHByZXF1ZWwgcGF0Y2ggdG8gb3B0aW1p c2UgdGhlIGxpc3RfZGVsX2luaXQgaW4gCmRtYV9mZW5jZV9zaWduYWwuKQoKVGhvdWdodHM/CgpS ZWdhcmRzLAoKVHZydGtvCgo+ICAgCj4gLQkJZG1hX2ZlbmNlX3NpZ25hbCgmcnEtPmZlbmNlKTsK PiAgIAkJaTkxNV9yZXF1ZXN0X3B1dChycSk7Cj4gICAJfQo+ICAgfQo+IEBAIC0yNDMsMTkgKzI1 NSwxNyBAQCB2b2lkIGludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIAo+ICAgYm9vbCBpOTE1X3JlcXVlc3RfZW5hYmxlX2JyZWFk Y3J1bWIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfYnJl YWRjcnVtYnMgKmIgPSAmcnEtPmVuZ2luZS0+YnJlYWRjcnVtYnM7Cj4gLQo+IC0JR0VNX0JVR19P Tih0ZXN0X2JpdChJOTE1X0ZFTkNFX0ZMQUdfU0lHTkFMLCAmcnEtPmZlbmNlLmZsYWdzKSk7Cj4g LQo+IC0JaWYgKCF0ZXN0X2JpdChJOTE1X0ZFTkNFX0ZMQUdfQUNUSVZFLCAmcnEtPmZlbmNlLmZs YWdzKSkKPiAtCQlyZXR1cm4gdHJ1ZTsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJxLT5sb2Nr KTsKPiArCWxvY2tkZXBfYXNzZXJ0X2lycXNfZGlzYWJsZWQoKTsKPiAgIAo+IC0Jc3Bpbl9sb2Nr KCZiLT5pcnFfbG9jayk7Cj4gLQlpZiAodGVzdF9iaXQoSTkxNV9GRU5DRV9GTEFHX0FDVElWRSwg JnJxLT5mZW5jZS5mbGFncykgJiYKPiAtCSAgICAhX19yZXF1ZXN0X2NvbXBsZXRlZChycSkpIHsK PiArCWlmICh0ZXN0X2JpdChJOTE1X0ZFTkNFX0ZMQUdfQUNUSVZFLCAmcnEtPmZlbmNlLmZsYWdz KSkgewo+ICsJCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiA9ICZycS0+ZW5naW5lLT5icmVh ZGNydW1iczsKPiAgIAkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gcnEtPmh3X2NvbnRleHQ7 Cj4gICAJCXN0cnVjdCBsaXN0X2hlYWQgKnBvczsKPiAgIAo+ICsJCXNwaW5fbG9jaygmYi0+aXJx X2xvY2spOwo+ICsJCUdFTV9CVUdfT04odGVzdF9iaXQoSTkxNV9GRU5DRV9GTEFHX1NJR05BTCwg JnJxLT5mZW5jZS5mbGFncykpOwo+ICsKPiAgIAkJX19pbnRlbF9icmVhZGNydW1ic19hcm1faXJx KGIpOwo+ICAgCj4gICAJCS8qCj4gQEAgLTI4NCw4ICsyOTQsOCBAQCBib29sIGk5MTVfcmVxdWVz dF9lbmFibGVfYnJlYWRjcnVtYihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAkJCWxpc3Rf bW92ZV90YWlsKCZjZS0+c2lnbmFsX2xpbmssICZiLT5zaWduYWxlcnMpOwo+ICAgCj4gICAJCXNl dF9iaXQoSTkxNV9GRU5DRV9GTEFHX1NJR05BTCwgJnJxLT5mZW5jZS5mbGFncyk7Cj4gKwkJc3Bp bl91bmxvY2soJmItPmlycV9sb2NrKTsKPiAgIAl9Cj4gLQlzcGluX3VubG9jaygmYi0+aXJxX2xv Y2spOwo+ICAgCj4gICAJcmV0dXJuICFfX3JlcXVlc3RfY29tcGxldGVkKHJxKTsKPiAgIH0KPiBA QCAtMjk0LDggKzMwNCw4IEBAIHZvaWQgaTkxNV9yZXF1ZXN0X2NhbmNlbF9icmVhZGNydW1iKHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9icmVhZGNydW1i cyAqYiA9ICZycS0+ZW5naW5lLT5icmVhZGNydW1iczsKPiAgIAo+IC0JaWYgKCF0ZXN0X2JpdChJ OTE1X0ZFTkNFX0ZMQUdfU0lHTkFMLCAmcnEtPmZlbmNlLmZsYWdzKSkKPiAtCQlyZXR1cm47Cj4g Kwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZycS0+bG9jayk7Cj4gKwlsb2NrZGVwX2Fzc2VydF9pcnFz X2Rpc2FibGVkKCk7Cj4gICAKPiAgIAlzcGluX2xvY2soJmItPmlycV9sb2NrKTsKPiAgIAlpZiAo dGVzdF9iaXQoSTkxNV9GRU5DRV9GTEFHX1NJR05BTCwgJnJxLT5mZW5jZS5mbGFncykpIHsKPiAK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4