From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 05/19] drm/i915/icl: Interrupt handling Date: Thu, 15 Feb 2018 18:24:34 +0200 Message-ID: <87wozete4d.fsf@gaia.fi.intel.com> References: <20180213163738.9055-6-mika.kuoppala@linux.intel.com> <20180214141213.24140-1-mika.kuoppala@linux.intel.com> <151861835826.31524.8463924294963797062@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 104926E545 for ; Thu, 15 Feb 2018 16:27:03 +0000 (UTC) In-Reply-To: <151861835826.31524.8463924294963797062@mail.alporthouse.com> 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: Rodrigo Vivi , Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gUXVvdGlu ZyBNaWthIEt1b3BwYWxhICgyMDE4LTAyLTE0IDE0OjEyOjEzKQo+PiBGcm9tOiBUdnJ0a28gVXJz dWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+PiAKPj4gdjI6IFJlYmFzZS4KPj4gCj4+ IHYzOgo+PiAgICogUmVtb3ZlIERQRiwgaXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFNLTCsuCj4+ ICAgKiBGaXggLWludGVybmFsIHJlYmFzZSB3cnQuIGV4ZWNsaXN0cyBpbnRlcnJ1cHQgaGFuZGxp bmcuCj4+IAo+PiB2NDogUmViYXNlLgo+PiAKPj4gdjU6Cj4+ICAgKiBVcGRhdGVkIGZvciBQT1Ig Y2hhbmdlcy4gKERhbmllbGUgQ2VyYW9sbyBTcHVyaW8pCj4+ICAgKiBNZXJnZWQgd2l0aCBpcnEg aGFuZGxpbmcgZml4ZXMgYnkgRGFuaWVsZSBDZXJhb2xvIFNwdXJpbzoKPj4gICAgICAgKiBTaW1w bGlmeSB0aGUgY29kZSBieSB1c2luZyBnZW44X2NzX2lycV9oYW5kbGVyLgo+PiAgICAgICAqIEZp eCBpbnRlcnJ1cHQgaGFuZGxpbmcgZm9yIHRoZSB1cHN0cmVhbSBrZXJuZWwuCj4+IAo+PiB2NjoK Pj4gICAqIFJlbW92ZSBlYXJseSBicmluZ3VwIGRlYnVnIG1lc3NhZ2VzIChUdnJ0a28pCj4+ICAg KiBBZGQgTkIgYWJvdXQgYXJiaXRyYXJ5IHNwaW4gd2FpdCB0aW1lb3V0IChUdnJ0a28pCj4+IAo+ PiB2NyAoZnJvbSBQYXVsbyk6Cj4+ICAgKiBEb24ndCB0cnkgdG8gd3JpdGUgUk8gYml0cyB0byBy ZWdpc3RlcnMuCj4+ICAgKiBEb24ndCBjaGVjayBmb3IgUENIIHR5cGVzIHRoYXQgZG9uJ3QgZXhp c3QuIFBDSCBpbnRlcnJ1cHRzIGFyZSBub3QKPj4gICAgIGhlcmUgeWV0Lgo+PiAKPj4gdjk6Cj4+ ICAgKiBzcXVhc2hlZCBpbiBzZWxlY3RvciBhbmQgc2hhcmVkIHJlZ2lzdGVyIGhhbmRsaW5nIChE YW5pZWxlKQo+PiAgICogc2tpcCB3cml0aW5nIG9mIGlycSBpZiBkYXRhIGlzIG5vdCB2YWxpZCAo RGFuaWVsZSkKPj4gICAqIHVzZSB0aW1lX2FmdGVyMzIgKENocmlzKQo+PiAgICogdXNlIEk5MTVf TUFYX1ZDUyBhbmQgSTkxNV9NQVhfVkVDUyAoRGFuaWVsZSkKPj4gICAqIHJlbW92ZSBmYWtlIHBt IGludGVycnVwdCBoYW5kbGluZyBmb3IgbGF0ZXIgcGF0Y2ggKE1pa2EpCj4+IAo+PiBDYzogVHZy dGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4gQ2M6IERhbmllbGUgQ2Vy YW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4+IENjOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4gQ2M6IE9zY2FyIE1hdGVvIDxv c2Nhci5tYXRlb0BpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0 dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8 cm9kcmlnby52aXZpQGludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsZSBDZXJhb2xv IFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1i eTogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTog UGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6 IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+PiAtLS0KPj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgfCAyMTIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YyB8ICAgNyArLQo+PiAgMiBmaWxlcyBjaGFuZ2VkLCAyMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+IGluZGV4IGI4ODZiZDQ1OWFj Yy4uOWEyZDEyYzhjNDRjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4gQEAgLTQw OCw2ICs0MDgsMzcgQEAgdm9pZCBnZW42X3Jlc2V0X3Jwc19pbnRlcnJ1cHRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gICAgICAgICBzcGluX3VubG9ja19pcnEoJmRldl9w cml2LT5pcnFfbG9jayk7Cj4+ICB9Cj4+ICAKPj4gK3N0YXRpYyBpbnQgZ2VuMTFfc2VydmljZV9z aGFyZWRfaWlyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IGJhbmssCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBiaXQp Cj4+ICt7Cj4+ICsgICAgICAgdTY0IHdhaXRfZW5kOwo+PiArICAgICAgIHUzMiBpZGVudDsKPj4g KyAgICAgICBpbnQgaXJxOwo+PiArCj4+ICsgICAgICAgSTkxNV9XUklURV9GVyhHRU4xMV9JSVJf UkVHX1NFTEVDVE9SKGJhbmspLCBCSVQoYml0KSk7Cj4+ICsgICAgICAgLyoKPj4gKyAgICAgICAg KiBOQjogU3BlY3MgZG8gbm90IHNwZWNpZnkgaG93IGxvbmcgdG8gc3BpbiB3YWl0Lgo+PiArICAg ICAgICAqIFRha2luZyAxMDB1cyBhcyBhbiBlZHVjYXRlZCBndWVzcwo+PiArICAgICAgICAqLwo+ PiArICAgICAgIHdhaXRfZW5kID0gKGxvY2FsX2Nsb2NrKCkgPj4gMTApICsgMTAwOwo+PiArICAg ICAgIGRvIHsKPj4gKyAgICAgICAgICAgICAgIGlkZW50ID0gSTkxNV9SRUFEX0ZXKEdFTjExX0lO VFJfSURFTlRJVFlfUkVHKGJhbmspKTsKPj4gKyAgICAgICB9IHdoaWxlICghKGlkZW50ICYgR0VO MTFfSU5UUl9EQVRBX1ZBTElEKSAmJgo+PiArICAgICAgICAgICAgICAgICF0aW1lX2FmdGVyMzIo bG9jYWxfY2xvY2soKSA+PiAxMCwgd2FpdF9lbmQpKTsKPgo+IE5vdyB5b3UgYXJlIGp1c3QgbWl4 aW5nIHR5cGVzIHdpbGx5IG5pbGx5IDopCj4KPiBObyBuZWVkIGZvciB3YWl0X2VuZCB0byBiZSA2 NGIgd2hlbiB3ZSBhcmUgbG9va2luZyBhdCBhIDEwMCBpbnRlcnZhbC4KCkkgdGhyZXcgdGhlIHBv bGwgYXdheS4gV2UgY2FuIGFkZCBpdCBsYXRlciBpZiBzb21lb25lIG9iamVjdHMKYW5kL29yIGV2 aWRlbmNlIGluZGljYXRlcyB0aGF0IGl0IGlzIG5lZWRlZC4gQnV0IHBvbGxpbmcgZm9yIDEwMHVz IGp1c3QKaW4gY2FzZSBpbiBpcnEgaGFuZGxlciBzaG91bGQgbm90IGJlIHRoZSBmaXJzdCBzdGVw LgoKPgo+PiArCj4+ICsgICAgICAgaWYgKCEoaWRlbnQgJiBHRU4xMV9JTlRSX0RBVEFfVkFMSUQp KSB7Cj4+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoIklOVFJfSURFTlRJVFlfUkVHJXU6JXUg dGltZWQgb3V0IVxuIiwgYmFuaywgYml0KTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRVRJ TUVET1VUOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIGlycSA9IGlkZW50ICYgR0VOMTFf SU5UUl9FTkdJTkVfTUFTSzsKPj4gKwo+PiArIEk5MTVfV1JJVEVfRlcoR0VOMTFfSU5UUl9JREVO VElUWV9SRUcoYmFuayksIGlkZW50KTsKCkJzcGVjIHRlbGxzIHRoYXQgdmFsaWQgYml0IHdyaXRl IHNob3VsZCBiZSBlbm91Z2ggaGVyZS4KCj4+ICsKPj4gKyAgICAgICByZXR1cm4gaXJxOwo+Cj4g cmV0dXJuIGlkZW50ICYgR0VOMTFfSU5UUl9FTkdJTkVfTUFTSzsKPgo+IG5vIG5lZWQgZm9yIGly cSwgYW5kIHdoeSBpbnQgcmV0dXJuIHR5cGU/CgpJIG1hZGUgaXQgcmV0dXJuIHplcm8gb24gdW52 YWxpZC4KCj4KPiBXaHkgaXMgdGhpcyBnZW4xMSBzcGVjaWZpYyBoZWxwZXIgc28gZmFyIGF3YXkg ZnJvbSB0aGUgaXJxX2hhbmRsZXI/CgpEdWUgdG8gbGF0ZXIgcGF0Y2ggaW4gdGhpcyBzZXJpZXMg bmVlZGluZyBpdCwgcmM2IGVuYWJsaW5nCmR1ZSB0byBycHMgcmVzZXQuCgpJIG1vdmVkIHRob3Nl IGNsb3NlciBpbiBib3RoIHBhdGNoZXMuCgo+Cj4+ICtzdGF0aWMgX19hbHdheXNfaW5saW5lIHZv aWQKPj4gK2dlbjExX2NzX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwgdTMyIGlpcikKPj4gK3sKPj4gKyAgICAgICBnZW44X2NzX2lycV9oYW5kbGVyKGVuZ2luZSwg aWlyLCAwKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQKPj4gK2dlbjExX2d0X2lycV9oYW5k bGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgY29uc3QgdTMyIG1hc3Rlcl9j dGwpCj4+ICt7Cj4+ICsgICAgICAgdTE2IGlycVsyXVszMl07Cj4+ICsgICAgICAgdW5zaWduZWQg aW50IGJhbmssIGVuZ2luZTsKPj4gKwo+PiArICAgICAgIG1lbXNldChpcnEsIDAsIHNpemVvZihp cnEpKTsKPj4gKwo+PiArICAgICAgIGZvciAoYmFuayA9IDA7IGJhbmsgPCAyOyBiYW5rKyspIHsK Pj4gKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdG1wOwo+PiArICAgICAgICAgICAgICAg dW5zaWduZWQgaW50IGJpdDsKPj4gKyAgICAgICAgICAgICAgIHUzMiBkdzsKPj4gKyAgICAgICAg ICAgICAgIGludCByZXQ7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGlmICghKG1hc3Rlcl9jdGwg JiBHRU4xMV9HVF9EV19JUlEoYmFuaykpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICBjb250 aW51ZTsKPj4gKwo+PiArICAgICAgICAgICAgICAgZHcgPSBJOTE1X1JFQURfRlcoR0VOMTFfR1Rf SU5UUl9EVyhiYW5rKSk7Cj4+ICsgICAgICAgICAgICAgICBpZiAoIWR3KQo+PiArICAgICAgICAg ICAgICAgICAgICAgICBEUk1fRVJST1IoIkdUX0lOVFJfRFcldSBibGFuayFcbiIsIGJhbmspOwo+ PiArCj4+ICsgICAgICAgICAgICAgICB0bXAgPSBkdzsKPj4gKyAgICAgICAgICAgICAgIGZvcl9l YWNoX3NldF9iaXQoYml0LCAmdG1wLCAzMikgewo+Cj4gdG1wIGlzIG5vdCByZXF1aXJlZCBoZXJl LgoKcmVhZGluZyBkaXJlY3RseSBub3cgdG8gdW5zaWduZWQgbG9uZyBkd19pbnRyLgoKPgo+PiAr ICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBnZW4xMV9zZXJ2aWNlX3NoYXJlZF9paXIoZGV2 X3ByaXYsIGJhbmssIGJpdCk7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICh1bmxpa2Vs eShyZXQgPCAwKSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK Pj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgICBpcnFbYmFua11bYml0XSA9IHJldDsKPj4g KyAgICAgICAgICAgICAgIH0KPj4gKwo+PiArICAgICAgICAgICAgICAgSTkxNV9XUklURV9GVyhH RU4xMV9HVF9JTlRSX0RXKGJhbmspLCBkdyk7Cj4KPiBJZiB3ZSBwcm9jZXNzIHRoZSBiYW5rcyBo ZXJlLCB3ZSB3b24ndCBuZWVkIHRvIG1lbXNldCAxMjggYnl0ZXMgYW5kIHNjYW4KPiB1bnRvdWNo ZWQgY2FjaGVsaW5lcyEKCk1hZGUgaXQgc28uIEJzcGVjIHNheXMgdGhhdCB3ZSBuZWVkIHRvIHNl cnZlIHRoZSBlbmdpbmUgc2hhcmVkIGlycQpiZWZvcmUgY2xlYXJpbmcgdGhlIGNvcnJlc3BvbmRp bmcgYmFuayBiaXQuIEkgYXZvaWRlZCB0cmlja2VyeQphbmQga2VwdCBpdCBzbyB0aGF0IHdlIG1p bmltaXplIHdyaXRlcyBieSBjbGVhcmluZyB0aGVtIGFsbC4KCj4KPj4gKyAgICAgICB9Cj4+ICsK Pj4gKyAgICAgICBpZiAoaXJxWzBdW0dFTjExX1JDUzBdKQo+PiArICAgICAgICAgICAgICAgZ2Vu MTFfY3NfaXJxX2hhbmRsZXIoZGV2X3ByaXYtPmVuZ2luZVtSQ1NdLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaXJxWzBdW0dFTjExX1JDUzBdKTsKPj4gKwo+PiArICAg ICAgIGlmIChpcnFbMF1bR0VOMTFfQkNTXSkKPj4gKyAgICAgICAgICAgICAgIGdlbjExX2NzX2ly cV9oYW5kbGVyKGRldl9wcml2LT5lbmdpbmVbQkNTXSwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlycVswXVtHRU4xMV9CQ1NdKTsKPj4gKwo+PiArICAgICAgIGZvciAo ZW5naW5lID0gMDsgZW5naW5lIDwgSTkxNV9NQVhfVkNTOyBlbmdpbmUrKykKPj4gKyAgICAgICAg ICAgICAgIGlmIChpcnFbMV1bR0VOMTFfVkNTKGVuZ2luZSldKQo+PiArICAgICAgICAgICAgICAg ICAgICAgICBnZW4xMV9jc19pcnFfaGFuZGxlcihkZXZfcHJpdi0+ZW5naW5lW19WQ1MoZW5naW5l KV0sCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlycVsx XVtHRU4xMV9WQ1MoZW5naW5lKV0pOwo+PiArCj4+ICsgICAgICAgZm9yIChlbmdpbmUgPSAwOyBl bmdpbmUgPCBJOTE1X01BWF9WRUNTOyBlbmdpbmUrKykKPj4gKyAgICAgICAgICAgICAgIGlmIChp cnFbMV1bR0VOMTFfVkVDUyhlbmdpbmUpXSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ2Vu MTFfY3NfaXJxX2hhbmRsZXIoZGV2X3ByaXYtPmVuZ2luZVtfVkVDUyhlbmdpbmUpXSwKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXJxWzFdW0dFTjExX1ZF Q1MoZW5naW5lKV0pOwo+Cj4gS2VlcCByZW1pbmRpbmcgeW91cnNlbGYgdGhhdCB0aGlzIGlzIHRo ZSBob3R0ZXN0IGZ1bmN0aW9uIGluIHRoZSBlbnRpcmUKPiBpOTE1LmtvLgoKVGhlIHNlcnZpbmcg b2YgZW5naW5lIHNwZWNpZmljIGlycSBpcyBub3cgZG9uZSB1c2luZyBvdXRlcgphbmQgaW5uZXIg c3dpdGNoZXMuIEF0bGVhc3QgaXQgbG9va3MgbGVhbmVyIDpPCgo+Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBpcnFyZXR1cm5fdCBnZW4xMV9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4+ ICt7Cj4+ICsgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGFyZzsKPj4gKyAgICAgICBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Cj4g V2hhdD8KCglzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqIGNvbnN0IGRldl9wcml2ID0KCQl0b19p OTE1KChzdHJ1Y3QgZHJtX2RldmljZSAqKWFyZyk7Cj4KPj4gKyAgICAgICB1MzIgbWFzdGVyX2N0 bDsKPj4gKyAgICAgICB1MzIgZGlzcF9jdGw7Cj4KPiBXaHkgaXMgdGhpcyBhdCB0b3AgbGV2ZWwg c2NvcGU/CgpJdCBpcyBubyBtb3JlIGF0IGFsbC4KCj4KPj4gKyAgICAgICBpZiAoIWludGVsX2ly cXNfZW5hYmxlZChkZXZfcHJpdikpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gSVJRX05PTkU7 Cj4+ICsKPj4gKyAgICAgICBtYXN0ZXJfY3RsID0gSTkxNV9SRUFEX0ZXKEdFTjExX0dGWF9NU1RS X0lSUSk7Cj4+ICsgICAgICAgbWFzdGVyX2N0bCAmPSB+R0VOMTFfTUFTVEVSX0lSUTsKPj4gKyAg ICAgICBpZiAoIW1hc3Rlcl9jdGwpCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gSVJRX05PTkU7 Cj4+ICsKPj4gKyAgICAgICAvKiBEaXNhYmxlIGludGVycnVwdHMuICovCj4+ICsgICAgICAgSTkx NV9XUklURV9GVyhHRU4xMV9HRlhfTVNUUl9JUlEsIDApOwo+PiArCj4+ICsgICAgICAgLyogSVJR cyBhcmUgc3luY2VkIGR1cmluZyBydW50aW1lX3N1c3BlbmQsIHdlIGRvbid0IHJlcXVpcmUgYSB3 YWtlcmVmICovCj4+ICsgICAgICAgZGlzYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKGRldl9wcml2 KTsKPj4gKwo+PiArICAgICAgIC8qIEZpbmQsIGNsZWFyLCB0aGVuIHByb2Nlc3MgZWFjaCBzb3Vy Y2Ugb2YgaW50ZXJydXB0LiAqLwo+PiArICAgICAgIGdlbjExX2d0X2lycV9oYW5kbGVyKGRldl9w cml2LCBtYXN0ZXJfY3RsKTsKPj4gKwo+PiArICAgICAgIGlmIChtYXN0ZXJfY3RsICYgR0VOMTFf RElTUExBWV9JUlEpIHsKPj4gKyAgICAgICAgICAgICAgIGRpc3BfY3RsID0gSTkxNV9SRUFEX0ZX KEdFTjExX0RJU1BMQVlfSU5UX0NUTCk7Cj4+ICsgICAgICAgICAgICAgICBnZW44X2RlX2lycV9o YW5kbGVyKGRldl9wcml2LCBkaXNwX2N0bCk7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAg LyogQWNrbm93bGVkZ2UgYW5kIGVuYWJsZSBpbnRlcnJ1cHRzLiAqLwo+PiArICAgICAgIEk5MTVf V1JJVEVfRlcoR0VOMTFfR0ZYX01TVFJfSVJRLCBHRU4xMV9NQVNURVJfSVJRIHwgbWFzdGVyX2N0 bCk7Cj4+ICsgICAgICAgUE9TVElOR19SRUFEX0ZXKEdFTjExX0dGWF9NU1RSX0lSUSk7Cj4+ICsK Pj4gKyAgICAgICBlbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4KPiBXaGF0 IGhhcHBlbmVkIHRvIHRoZSBvbmlvbj8gZ2VuOCBpcyBicm9rZW4gYXMgd2VsbCwgc3VyZSBJIHNl bnQgcGF0Y2hlcwo+IHRvIGZpeCB0aGF0LiBUaGUgcG9zdGluZyByZWFkIGlzIG90dCwgYW5kIHlv dSBkb24ndCBuZWVkIHRvIGRpc2FibGUgdGhlCj4gYXNzZXJ0cyBhcm91bmQgdGhlIEdUIGlycSBo YW5kbGVyLgoKSSBtb3ZlZCB0aGUgYXNzZXJ0cyBpbnNpZGUgZGlzcGxheSBzY29wZSwgbGlrZSBp biBnZW44IHZlcnNpb24uCgpUaGFua3MgZm9yIGNvbW1lbnRzLAotTWlrYQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==