From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [PATCH v2] drm/i915: Break modeset deadlocks on reset Date: Wed, 21 Jun 2017 17:06:36 +0100 Message-ID: <149806119690.15021.15818393091652934467@mail.alporthouse.com> References: <20170620161218.9015-1-chris@chris-wilson.co.uk> <20170621142413.29323-1-chris@chris-wilson.co.uk> <007b81f4-a2fa-a977-55b7-b2db9d3a0154@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1C4116E53C for ; Wed, 21 Jun 2017 16:06:44 +0000 (UTC) In-Reply-To: <007b81f4-a2fa-a977-55b7-b2db9d3a0154@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org UXVvdGluZyBNYWFydGVuIExhbmtob3JzdCAoMjAxNy0wNi0yMSAxNjo1NTowNikKPiBPcCAyMS0w Ni0xNyBvbSAxNjoyNCBzY2hyZWVmIENocmlzIFdpbHNvbjoKPiA+IFRyeWluZyB0byBkbyBhIG1v ZGVzZXQgZnJvbSB3aXRoaW4gYSByZXNldCBpcyBmcmF1Z2h0IHdpdGggZGFuZ2VyLiBXZQo+ID4g Y2FuIGZhbGwgaW50byBhIGN5Y2xpYyBkZWFkbG9jayB3aGVyZSB0aGUgbW9kZXNldCBpcyB3YWl0 aW5nIG9uIGEKPiA+IHByZXZpb3VzIG1vZGVzZXQgdGhhdCBpcyB3YWl0aW5nIG9uIGEgcmVxdWVz dCwgYW5kIHNpbmNlIHRoZSBHUFUgaHVuZwo+ID4gdGhhdCByZXF1ZXN0IGNvbXBsZXRpb24gaXMg d2FpdGluZyBvbiB0aGUgcmVzZXQuIEFzIG1vZGVzZXR0aW5nIGRvZXNuJ3QKPiA+IGFsbG93IGl0 cyBsb2NrcyB0byBiZSBicm9rZW4gYW5kIHJlc3RhcnRlZCwgb3IgZm9yIGl0cyAqb3duKiByZXNl dAo+ID4gbWVjaGFuaXNtIHRvIHRha2Ugb3ZlciB0aGUgZGlzcGxheSwgd2UgaGF2ZSB0byBkbyBz b21ldGhpbmcgdmVyeQo+ID4gZXZpbCBpbnN0ZWFkLiBJZiB3ZSBkZXRlY3QgdGhhdCB3ZSBhcmUg c3R1Y2sgd2FpdGluZyB0byBwcmVwYXJlIHRoZQo+ID4gZGlzcGxheSByZXNldCAoYnkgdXNpbmcg YSB2ZXJ5IHNpbXBsZSB0aW1lb3V0KSwgcmVzb3J0IHRvIGNhbmNlbGxpbmcgYWxsCj4gPiBpbi1m bGlnaHQgcmVxdWVzdHMgYW5kIHRocm93aW5nIHRoZSB1c2VyIGRhdGEgaW50byAvZGV2L251bGws IHdoaWNoIGlzCj4gPiBtYXJnaW5hbGx5IGJldHRlciB0aGFuIHRoZSBkcml2ZXIgbG9ja2luZyB1 cCBhbmQga2VlcGluZyB0aGF0IGRhdGEgdG8KPiA+IGl0c2VsZi4KPiA+Cj4gPiBUaGlzIGlzIG5v dCBhIGZpeDsgdGhpcyBpcyBqdXN0IGEgd29ya2Fyb3VuZCB0aGF0IHVuYnJlYWtzIG1hY2hpbmVz Cj4gPiB1bnRpbCB3ZSBjYW4gcmVzb2x2ZSB0aGUgZGVhZGxvY2sgaW4gYSB3YXkgdGhhdCBkb2Vz bid0IGxvc2UgZGF0YSEKPiA+Cj4gPiB2MjogTW92ZSB0aGUgcmV0aXJlbWVudCBmcm9tIHNldC13 ZWdkZWQgdG8gdGhlIGk5MTVfcmVzZXQoKSBlcnJvciBwYXRoLAo+ID4gYWZ0ZXIgd2hpY2ggd2Ug bm8gbG9uZ2VyIGFueSBkZWxheWVkIHdvcmtlciBjbGVhbnVwIGZvcgo+ID4gaTkxNV9oYW5kbGVf ZXJyb3IoKQo+ID4gdjM6IEMgYWJ1c2UgZm9yIHN5bnRhY3RpYyBzdWdhcgo+ID4KPiA+IFJlZmVy ZW5jZXM6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MDkz Cj4gPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KPiA+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50 ZWwuY29tPgo+ID4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+ ID4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gPiAtLS0K PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIHwgIDEgKwo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgfCAxOCArKysrLS0tLS0tLS0tLS0tLQo+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwg MTUgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiBpbmRleCBk MWFhMTBjOWNjNWQuLjFkZjk1N2I5ODZjNyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKPiA+IEBAIC0xOTE0LDYgKzE5MTQsNyBAQCB2b2lkIGk5MTVfcmVzZXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gIAo+ID4gIGVycm9yOgo+ID4gICAgICAgaTkxNV9n ZW1fc2V0X3dlZGdlZChkZXZfcHJpdik7Cj4gPiArICAgICBpOTE1X2dlbV9yZXRpcmVfcmVxdWVz dHMoZGV2X3ByaXYpOwo+ID4gICAgICAgZ290byBmaW5pc2g7Cj4gPiAgfQo+ID4gIAo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4gPiBpbmRleCBhZTNjZTEzMTRiZDEuLjM2ZDgzODY3Nzk4MiAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+IEBAIC0zMDYyLDcgKzMwNjIsOCBA QCBzdGF0aWMgdm9pZCBlbmdpbmVfc2V0X3dlZGdlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gPiAgICAgICAvKiBNYXJrIGFsbCBleGVjdXRpbmcgcmVxdWVzdHMgYXMgc2tpcHBl ZCAqLwo+ID4gICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ss IGZsYWdzKTsKPiA+ICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVuZ2luZS0+ dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKQo+ID4gLSAgICAgICAgICAgICBkbWFfZmVuY2Vfc2V0 X2Vycm9yKCZyZXF1ZXN0LT5mZW5jZSwgLUVJTyk7Cj4gPiArICAgICAgICAgICAgIGlmICghaTkx NV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgZG1hX2ZlbmNlX3NldF9lcnJvcigmcmVxdWVzdC0+ZmVuY2UsIC1FSU8pOwo+ID4gICAgICAg c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+ ID4gIAo+ID4gICAgICAgLyogTWFyayBhbGwgcGVuZGluZyByZXF1ZXN0cyBhcyBjb21wbGV0ZSBz byB0aGF0IGFueSBjb25jdXJyZW50Cj4gPiBAQCAtMzEwOCw2ICszMTA5LDcgQEAgc3RhdGljIGlu dCBfX2k5MTVfZ2VtX3NldF93ZWRnZWRfQktMKHZvaWQgKmRhdGEpCj4gPiAgICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gPiAgICAgICBlbnVtIGludGVsX2VuZ2luZV9pZCBp ZDsKPiA+ICAKPiA+ICsgICAgIHNldF9iaXQoSTkxNV9XRURHRUQsICZpOTE1LT5ncHVfZXJyb3Iu ZmxhZ3MpOwo+ID4gICAgICAgZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpCj4gPiAg ICAgICAgICAgICAgIGVuZ2luZV9zZXRfd2VkZ2VkKGVuZ2luZSk7Cj4gPiAgCj4gPiBAQCAtMzEx NiwyMCArMzExOCw3IEBAIHN0YXRpYyBpbnQgX19pOTE1X2dlbV9zZXRfd2VkZ2VkX0JLTCh2b2lk ICpkYXRhKQo+ID4gIAo+ID4gIHZvaWQgaTkxNV9nZW1fc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiAgewo+ID4gLSAgICAgbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ID4gLSAgICAgc2V0X2JpdChJOTE1X1dF REdFRCwgJmRldl9wcml2LT5ncHVfZXJyb3IuZmxhZ3MpOwo+ID4gLQo+ID4gLSAgICAgLyogUmV0 aXJlIGNvbXBsZXRlZCByZXF1ZXN0cyBmaXJzdCBzbyB0aGUgbGlzdCBvZiBpbmZsaWdodC9pbmNv bXBsZXRlCj4gPiAtICAgICAgKiByZXF1ZXN0cyBpcyBhY2N1cmF0ZSBhbmQgd2UgZG9uJ3QgdHJ5 IGFuZCBtYXJrIHN1Y2Nlc3NmdWwgcmVxdWVzdHMKPiA+IC0gICAgICAqIGFzIGluIGVycm9yIGR1 cmluZyBfX2k5MTVfZ2VtX3NldF93ZWRnZWRfQktMKCkuCj4gPiAtICAgICAgKi8KPiA+IC0gICAg IGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Cj4gPiAtCj4gPiAgICAgICBzdG9w X21hY2hpbmUoX19pOTE1X2dlbV9zZXRfd2VkZ2VkX0JLTCwgZGV2X3ByaXYsIE5VTEwpOwo+ID4g LQo+ID4gLSAgICAgaTkxNV9nZW1fY29udGV4dHNfbG9zdChkZXZfcHJpdik7Cj4gPiAtCj4gPiAt ICAgICBtb2RfZGVsYXllZF93b3JrKGRldl9wcml2LT53cSwgJmRldl9wcml2LT5ndC5pZGxlX3dv cmssIDApOwo+ID4gIH0KPiA+ICAKPiA+ICBib29sIGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiA+IEBAIC0zMTg0LDYgKzMxNzMsNyBAQCBib29s IGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiA+ ICAgICAgICAqIGNvbnRleHQgYW5kIGRvIG5vdCByZXF1aXJlIHN0b3BfbWFjaGluZSgpLgo+ID4g ICAgICAgICovCj4gPiAgICAgICBpbnRlbF9lbmdpbmVzX3Jlc2V0X2RlZmF1bHRfc3VibWlzc2lv bihpOTE1KTsKPiA+ICsgICAgIGk5MTVfZ2VtX2NvbnRleHRzX2xvc3QoaTkxNSk7Cj4gPiAgCj4g PiAgICAgICBzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsgLyogY29tcGxldGUgdGFrZW92ZXIgYmVm b3JlIGVuYWJsaW5nIGV4ZWNidWYgKi8KPiA+ICAgICAgIGNsZWFyX2JpdChJOTE1X1dFREdFRCwg Jmk5MTUtPmdwdV9lcnJvci5mbGFncyk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+IGlu ZGV4IGIxYzdkMWEwNDYxMi4uYzk0OGE1YmQwMzFjIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYwo+ID4gQEAgLTI1OTksNiArMjU5OSw0NiBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZ2Vu OF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4gPiAgICAgICByZXR1cm4gcmV0Owo+ ID4gIH0KPiA+ICAKPiA+ICtzdHJ1Y3Qgd2VkZ2VfbWUgewo+ID4gKyAgICAgc3RydWN0IGRlbGF5 ZWRfd29yayB3b3JrOwo+ID4gKyAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4g PiArICAgICBjb25zdCBjaGFyICpuYW1lOwo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIHZvaWQg d2VkZ2VfbWUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVj dCB3ZWRnZV9tZSAqdyA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKncpLCB3b3JrLndvcmsp Owo+ID4gKwo+ID4gKyAgICAgZGV2X2Vycih3LT5pOTE1LT5kcm0uZGV2LAo+ID4gKyAgICAgICAg ICAgICAiJXMgdGltZWQgb3V0LCBjYW5jZWxsaW5nIGFsbCBpbi1mbGlnaHQgcmVuZGVyaW5nLlxu IiwKPiA+ICsgICAgICAgICAgICAgdy0+bmFtZSk7Cj4gPiArICAgICBpOTE1X2dlbV9zZXRfd2Vk Z2VkKHctPmk5MTUpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBfX2luaXRfd2VkZ2Uo c3RydWN0IHdlZGdlX21lICp3LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0aW1l b3V0LAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQo+ID4gK3sK PiA+ICsgICAgIHctPmk5MTUgPSBpOTE1Owo+ID4gKyAgICAgdy0+bmFtZSA9IG5hbWU7Cj4gPiAr Cj4gPiArICAgICBJTklUX0RFTEFZRURfV09SS19PTlNUQUNLKCZ3LT53b3JrLCB3ZWRnZV9tZSk7 Cj4gPiArICAgICBzY2hlZHVsZV9kZWxheWVkX3dvcmsoJnctPndvcmssIHRpbWVvdXQpOwo+ID4g K30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBfX2Zpbmlfd2VkZ2Uoc3RydWN0IHdlZGdlX21lICp3 KQo+ID4gK3sKPiA+ICsgICAgIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmdy0+d29yayk7Cj4g PiArICAgICBkZXN0cm95X2RlbGF5ZWRfd29ya19vbl9zdGFjaygmdy0+d29yayk7Cj4gPiArICAg ICB3LT5pOTE1ID0gTlVMTDsKPiA+ICt9Cj4gPiArCj4gPiArI2RlZmluZSBpOTE1X3dlZGdlX29u X3RpbWVvdXQoVywgREVWLCBUSU1FT1VULCBNU0cpICAgICAgICAgICAgICAgICAgXAo+ID4gKyAg ICAgZm9yIChfX2luaXRfd2VkZ2UoKFcpLCAoREVWKSwgKFRJTUVPVVQpLCAoTVNHKSk7ICAgICAg ICAgICAgICAgIFwKPiA+ICsgICAgICAgICAgKFcpLT5pOTE1OyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiArICAgICAgICAgIF9fZmluaV93ZWRn ZSgoVykpKQo+ID4gKwo+ID4gIC8qKgo+ID4gICAqIGk5MTVfcmVzZXRfZGV2aWNlIC0gZG8gcHJv Y2VzcyBjb250ZXh0IGVycm9yIGhhbmRsaW5nIHdvcmsKPiA+ICAgKiBAZGV2X3ByaXY6IGk5MTUg ZGV2aWNlIHByaXZhdGUKPiA+IEBAIC0yNjEyLDEzICsyNjUyLDE2IEBAIHN0YXRpYyB2b2lkIGk5 MTVfcmVzZXRfZGV2aWNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ICAg ICAgIGNoYXIgKmVycm9yX2V2ZW50W10gPSB7IEk5MTVfRVJST1JfVUVWRU5UICI9MSIsIE5VTEwg fTsKPiA+ICAgICAgIGNoYXIgKnJlc2V0X2V2ZW50W10gPSB7IEk5MTVfUkVTRVRfVUVWRU5UICI9 MSIsIE5VTEwgfTsKPiA+ICAgICAgIGNoYXIgKnJlc2V0X2RvbmVfZXZlbnRbXSA9IHsgSTkxNV9F UlJPUl9VRVZFTlQgIj0wIiwgTlVMTCB9Owo+ID4gKyAgICAgc3RydWN0IHdlZGdlX21lIHc7Cj4g PiAgCj4gPiAgICAgICBrb2JqZWN0X3VldmVudF9lbnYoa29iaiwgS09CSl9DSEFOR0UsIGVycm9y X2V2ZW50KTsKPiA+ICAKPiA+ICAgICAgIERSTV9ERUJVR19EUklWRVIoInJlc2V0dGluZyBjaGlw XG4iKTsKPiA+ICAgICAgIGtvYmplY3RfdWV2ZW50X2Vudihrb2JqLCBLT0JKX0NIQU5HRSwgcmVz ZXRfZXZlbnQpOwo+ID4gIAo+ID4gLSAgICAgaW50ZWxfcHJlcGFyZV9yZXNldChkZXZfcHJpdik7 Cj4gPiArICAgICBpOTE1X3dlZGdlX29uX3RpbWVvdXQoJncsIGRldl9wcml2LCBIWiwgImludGVs X3ByZXBhcmVfcmVzZXQiKSB7Cj4gPiArICAgICAgICAgICAgIGludGVsX3ByZXBhcmVfcmVzZXQo ZGV2X3ByaXYpOwo+ID4gKyAgICAgfQo+IEkgdGhpbmsgdjIgd2FzIG1vcmUgY2xlYXIgaGVyZS4K PiAKPiBCdXQgaWYgdGhpcyBpcyBqdXN0IGZvciB0aGUgbW9kZXNldCBsb2Nrcywgd2h5IG5vdCBh ZGQgYSB0aW1lb3V0IHRvIGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24gb24gb2xkX29i aj8KClRoYXQgd2FpdCBwcmV2ZW50cyBmdXJ0aGVyIEdQVSBkZWF0aCBpbiBiYXRjaGVzIHRoYXQg bWF5IHN0aWxsIGJlCnBlbmRpbmcuIFRoZSBtZWNoYW5pc20gdGhhdCB3ZSBuZWVkIHRvIHVzZSBp cyB0aGUgcmVzZXQuIEhvd2V2ZXIsCnJlc2V0dGluZyB0aGUgR1BVIHdhbnRzIHRvIG1lZGRsZSB3 aXRoIG1vZGVzZXR0aW5nLCB5ZXQgb2ZmZXJzIG5vIHdheSB0bwpyZXNldCB0aGUgZGlzcGxheSBm cm9tIHdpdGhpbiByZXNldC4KCj4gVGhhdCB3b3VsZCBhbGxvdyB1cyB0byBlbmQgdGhlIGRlYWRs b2NrcyB3aXRob3V0IGhhdmluZyB0byBraWxsIG9mZiBhbGwgZmVuY2VzIGZpcnN0LgoKSW5zdGVh ZCB5b3Ugc2ltcGx5IGlnbm9yZSBmZW5jZXMuIEl0IGlzIG5vIG1vcmUgYSBmaXggdG8gdGhlIGRl YWRsb2NrCnRoYW4gY2FuY2VsbGluZyB0aGUgZmVuY2UuIFRoZSBpc3N1ZSBpcyBub3QgdGhlIHdh aXQgb24gdGhlIHJlbmRlcmluZy4KLUNocmlzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=