From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 4/4] drm/i915/icl: Interrupt handling Date: Thu, 01 Mar 2018 14:22:32 +0200 Message-ID: <87lgfcq92v.fsf@gaia.fi.intel.com> References: <20180220153755.13509-1-mika.kuoppala@linux.intel.com> <20180220153755.13509-4-mika.kuoppala@linux.intel.com> <1519766330.2537.12.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 8E53B6EC4D for ; Thu, 1 Mar 2018 12:27:02 +0000 (UTC) In-Reply-To: <1519766330.2537.12.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni , Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org UGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+IHdyaXRlczoKCj4gRW0gVGVy LCAyMDE4LTAyLTI3IMOgcyAxMTo1MSAtMDgwMCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyBlc2Ny ZXZldToKPj4gCj4+IE9uIDIwLzAyLzE4IDA3OjM3LCBNaWthIEt1b3BwYWxhIHdyb3RlOgo+PiA+ IHYyOiBSZWJhc2UuCj4+ID4gCj4+ID4gdjM6Cj4+ID4gICAgKiBSZW1vdmUgRFBGLCBpdCBoYXMg YmVlbiByZW1vdmVkIGZyb20gU0tMKy4KPj4gPiAgICAqIEZpeCAtaW50ZXJuYWwgcmViYXNlIHdy dC4gZXhlY2xpc3RzIGludGVycnVwdCBoYW5kbGluZy4KPj4gPiAKPj4gPiB2NDogUmViYXNlLgo+ PiA+IAo+PiA+IHY1Ogo+PiA+ICAgICogVXBkYXRlZCBmb3IgUE9SIGNoYW5nZXMuIChEYW5pZWxl IENlcmFvbG8gU3B1cmlvKQo+PiA+ICAgICogTWVyZ2VkIHdpdGggaXJxIGhhbmRsaW5nIGZpeGVz IGJ5IERhbmllbGUgQ2VyYW9sbyBTcHVyaW86Cj4+ID4gICAgICAgICogU2ltcGxpZnkgdGhlIGNv ZGUgYnkgdXNpbmcgZ2VuOF9jc19pcnFfaGFuZGxlci4KPj4gPiAgICAgICAgKiBGaXggaW50ZXJy dXB0IGhhbmRsaW5nIGZvciB0aGUgdXBzdHJlYW0ga2VybmVsLgo+PiA+IAo+PiA+IHY2Ogo+PiA+ ICAgICogUmVtb3ZlIGVhcmx5IGJyaW5ndXAgZGVidWcgbWVzc2FnZXMgKFR2cnRrbykKPj4gPiAg ICAqIEFkZCBOQiBhYm91dCBhcmJpdHJhcnkgc3BpbiB3YWl0IHRpbWVvdXQgKFR2cnRrbykKPj4g PiAKPj4gPiB2NyAoZnJvbSBQYXVsbyk6Cj4+ID4gICAgKiBEb24ndCB0cnkgdG8gd3JpdGUgUk8g Yml0cyB0byByZWdpc3RlcnMuCj4+ID4gICAgKiBEb24ndCBjaGVjayBmb3IgUENIIHR5cGVzIHRo YXQgZG9uJ3QgZXhpc3QuIFBDSCBpbnRlcnJ1cHRzIGFyZQo+PiA+IG5vdAo+PiA+ICAgICAgaGVy ZSB5ZXQuCj4+ID4gCj4+ID4gdjk6Cj4+ID4gICAgKiBzcXVhc2hlZCBpbiBzZWxlY3RvciBhbmQg c2hhcmVkIHJlZ2lzdGVyIGhhbmRsaW5nIChEYW5pZWxlKQo+PiA+ICAgICogc2tpcCB3cml0aW5n IG9mIGlycSBpZiBkYXRhIGlzIG5vdCB2YWxpZCAoRGFuaWVsZSkKPj4gPiAgICAqIHVzZSB0aW1l X2FmdGVyMzIgKENocmlzKQo+PiA+ICAgICogdXNlIEk5MTVfTUFYX1ZDUyBhbmQgSTkxNV9NQVhf VkVDUyAoRGFuaWVsZSkKPj4gPiAgICAqIHJlbW92ZSBmYWtlIHBtIGludGVycnVwdCBoYW5kbGlu ZyBmb3IgbGF0ZXIgcGF0Y2ggKE1pa2EpCj4+ID4gCj4+ID4gdjEwOgo+PiA+ICAgICogRGlyZWN0 IHByb2Nlc3Npbmcgb2YgYmFua3MuIGNsZWFyIGJhbmtzIGVhcmx5IChDaHJpcykKPj4gPiAgICAq IHJlbW92ZSBwb2xsIG9uIHZhbGlkIGJpdCwgb25seSBjbGVhciB2YWxpZCBiaXQgKE1pa2EpCj4+ ID4gICAgKiB1c2UgcmF3IGFjY2Vzc29ycywgYmV0dGVyIG5hbWluZyAoQ2hyaXMpCj4+ID4gCj4+ ID4gdjExOgo+PiA+ICAgICogYWRhcHQgdG8gcmF3X3JlZ19bcmVhZHx3cml0ZV0KPj4gPiAgICAq IGJyaW5nIGJhY2sgcG9sbGluZyB0aGUgdmFsaWQgYml0IChEYW5pZWxlKQo+PiA+IAo+PiA+IENj OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+PiA+IENjOiBEYW5p ZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+PiA+ IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4gPiBDYzogT3Nj YXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KPj4gPiBTaWduZWQtb2ZmLWJ5OiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+PiA+IFNpZ25lZC1vZmYtYnk6 IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPj4gPiBTaWduZWQtb2ZmLWJ5 OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuCj4+ ID4gY29tPgo+PiA+IFNpZ25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRl bC5jb20+Cj4+ID4gU2lnbmVkLW9mZi1ieTogUGF1bG8gWmFub25pIDxwYXVsby5yLnphbm9uaUBp bnRlbC5jb20+Cj4+ID4gU2lnbmVkLW9mZi1ieTogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFs YUBsaW51eC5pbnRlbC5jb20+Cj4+ID4gLS0tCj4+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jIHwgMjI5Cj4+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+PiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8ICAgNyArLQo+PiA+ ICAgMiBmaWxlcyBjaGFuZ2VkLCAyMzUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+PiA+ IAo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+ID4gaW5kZXggMTdkZTZjZWYyYTMw Li5hNzlmNDdhYzc0MmEgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYwo+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4gPiBA QCAtNDE1LDYgKzQxNSw5IEBAIHZvaWQgZ2VuNl9lbmFibGVfcnBzX2ludGVycnVwdHMoc3RydWN0 Cj4+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ID4gICAJaWYgKFJFQURfT05DRShy cHMtPmludGVycnVwdHNfZW5hYmxlZCkpCj4+ID4gICAJCXJldHVybjsKPj4gPiAgIAo+PiA+ICsJ aWYgKFdBUk5fT05fT05DRShJU19HRU4xMShkZXZfcHJpdikpKQo+PiA+ICsJCXJldHVybjsKPj4g PiArCj4+ID4gICAJc3Bpbl9sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPj4gPiAgIAlX QVJOX09OX09OQ0UocnBzLT5wbV9paXIpOwo+PiA+ICAgCVdBUk5fT05fT05DRShJOTE1X1JFQUQo Z2VuNl9wbV9paXIoZGV2X3ByaXYpKSAmIGRldl9wcml2LQo+PiA+ID5wbV9ycHNfZXZlbnRzKTsK Pj4gPiBAQCAtNDMxLDYgKzQzNCw5IEBAIHZvaWQgZ2VuNl9kaXNhYmxlX3Jwc19pbnRlcnJ1cHRz KHN0cnVjdAo+PiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiA+ICAgCWlmICghUkVB RF9PTkNFKHJwcy0+aW50ZXJydXB0c19lbmFibGVkKSkKPj4gPiAgIAkJcmV0dXJuOwo+PiA+ICAg Cj4+ID4gKwlpZiAoV0FSTl9PTl9PTkNFKElTX0dFTjExKGRldl9wcml2KSkpCj4+ID4gKwkJcmV0 dXJuOwo+PiA+ICsKPj4gPiAgIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+ PiA+ICAgCXJwcy0+aW50ZXJydXB0c19lbmFibGVkID0gZmFsc2U7Cj4+ID4gICAKPj4gPiBAQCAt Mjc1NSw2ICsyNzYxLDE1MCBAQCBzdGF0aWMgdm9pZCBfX2Zpbmlfd2VkZ2Uoc3RydWN0IHdlZGdl X21lCj4+ID4gKncpCj4+ID4gICAJICAgICAoVyktPmk5MTU7CQkJCQkJCj4+ID4gCVwKPj4gPiAg IAkgICAgIF9fZmluaV93ZWRnZSgoVykpKQo+PiA+ICAgCj4+ID4gK3N0YXRpYyBfX2Fsd2F5c19p bmxpbmUgdm9pZAo+PiA+ICtnZW4xMV9jc19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICogY29uc3QgZW5naW5lLCBjb25zdAo+PiA+IHUzMiBpaXIpCj4+ID4gK3sKPj4gPiArCWdl bjhfY3NfaXJxX2hhbmRsZXIoZW5naW5lLCBpaXIsIDApOwo+PiA+ICt9Cj4+ID4gKwo+PiA+ICtz dGF0aWMgdm9pZAo+PiA+ICtnZW4xMV9ndF9lbmdpbmVfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKiBjb25zdCBpOTE1LAo+PiA+ICsJCQkgICAgY29uc3QgdW5zaWduZWQgaW50 IGJhbmssCj4+ID4gKwkJCSAgICBjb25zdCB1bnNpZ25lZCBpbnQgZW5naW5lX24sCj4+ID4gKwkJ CSAgICBjb25zdCB1MTYgaWlyKQo+PiA+ICt7Cj4+ID4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICoqIGNvbnN0IGVuZ2luZSA9IGk5MTUtPmVuZ2luZTsKPj4gPiArCj4+ID4gKwlzd2l0Y2ggKGJh bmspIHsKPj4gPiArCWNhc2UgMDoKPj4gPiArCQlzd2l0Y2ggKGVuZ2luZV9uKSB7Cj4+ID4gKwo+ PiA+ICsJCWNhc2UgR0VOMTFfUkNTMDoKPj4gPiArCQkJcmV0dXJuIGdlbjExX2NzX2lycV9oYW5k bGVyKGVuZ2luZVtSQ1NdLAo+PiA+IGlpcik7Cj4+ID4gKwo+PiA+ICsJCWNhc2UgR0VOMTFfQkNT Ogo+PiA+ICsJCQlyZXR1cm4gZ2VuMTFfY3NfaXJxX2hhbmRsZXIoZW5naW5lW0JDU10sCj4+ID4g aWlyKTsKPj4gPiArCQl9Cj4+ID4gKwljYXNlIDE6Cj4+ID4gKwkJc3dpdGNoIChlbmdpbmVfbikg ewo+PiA+ICsKPj4gPiArCQljYXNlIEdFTjExX1ZDUygwKToKPj4gPiArCQkJcmV0dXJuCj4+ID4g Z2VuMTFfY3NfaXJxX2hhbmRsZXIoZW5naW5lW19WQ1MoMCldLCBpaXIpOwo+PiA+ICsJCWNhc2Ug R0VOMTFfVkNTKDEpOgo+PiA+ICsJCQlyZXR1cm4KPj4gPiBnZW4xMV9jc19pcnFfaGFuZGxlcihl bmdpbmVbX1ZDUygxKV0sIGlpcik7Cj4+ID4gKwkJY2FzZSBHRU4xMV9WQ1MoMik6Cj4+ID4gKwkJ CXJldHVybgo+PiA+IGdlbjExX2NzX2lycV9oYW5kbGVyKGVuZ2luZVtfVkNTKDIpXSwgaWlyKTsK Pj4gPiArCQljYXNlIEdFTjExX1ZDUygzKToKPj4gPiArCQkJcmV0dXJuCj4+ID4gZ2VuMTFfY3Nf aXJxX2hhbmRsZXIoZW5naW5lW19WQ1MoMyldLCBpaXIpOwo+PiA+ICsKPj4gPiArCQljYXNlIEdF TjExX1ZFQ1MoMCk6Cj4+ID4gKwkJCXJldHVybgo+PiA+IGdlbjExX2NzX2lycV9oYW5kbGVyKGVu Z2luZVtfVkVDUygwKV0sIGlpcik7Cj4+ID4gKwkJY2FzZSBHRU4xMV9WRUNTKDEpOgo+PiA+ICsJ CQlyZXR1cm4KPj4gPiBnZW4xMV9jc19pcnFfaGFuZGxlcihlbmdpbmVbX1ZFQ1MoMSldLCBpaXIp Owo+PiA+ICsJCX0KPj4gPiArCX0KPj4gPiArfQo+PiA+ICsKPj4gPiArc3RhdGljIHUzMgo+PiA+ ICtnZW4xMV9ndF9lbmdpbmVfaW50cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqIGNvbnN0IGk5 MTUsCj4+ID4gKwkJICAgICBjb25zdCB1bnNpZ25lZCBpbnQgYmFuaywgY29uc3QgdW5zaWduZWQg aW50Cj4+ID4gYml0KQo+PiA+ICt7Cj4+ID4gKwl2b2lkIF9faW9tZW0gKiBjb25zdCByZWdzID0g aTkxNS0+cmVnczsKPj4gPiArCXUzMiB0aW1lb3V0X3RzOwo+PiA+ICsJdTMyIGlkZW50Owo+PiA+ ICsKPj4gPiArCXJhd19yZWdfd3JpdGUocmVncywgR0VOMTFfSUlSX1JFR19TRUxFQ1RPUihiYW5r KSwKPj4gPiBCSVQoYml0KSk7Cj4+ID4gKwo+PiA+ICsJLyoKPj4gPiArCSAqIE5COiBTcGVjcyBk byBub3Qgc3BlY2lmeSBob3cgbG9uZyB0byBzcGluIHdhaXQsCj4+ID4gKwkgKiBzbyB3ZSBkbyB+ MTAwdXMgYXMgYW4gZWR1Y2F0ZWQgZ3Vlc3MuCj4+ID4gKwkgKi8KPj4gPiArCXRpbWVvdXRfdHMg PSAobG9jYWxfY2xvY2soKSA+PiAxMCkgKyAxMDA7Cj4+ID4gKwlkbyB7Cj4+ID4gKwkJaWRlbnQg PSByYXdfcmVnX3JlYWQocmVncywKPj4gPiBHRU4xMV9JTlRSX0lERU5USVRZX1JFRyhiYW5rKSk7 Cj4+ID4gKwl9IHdoaWxlICghKGlkZW50ICYgR0VOMTFfSU5UUl9EQVRBX1ZBTElEKSAmJgo+PiA+ ICsJCSAhdGltZV9hZnRlcjMyKGxvY2FsX2Nsb2NrKCkgPj4gMTAsIHRpbWVvdXRfdHMpKTsKPj4g PiArCj4+ID4gKwlpZiAodW5saWtlbHkoIShpZGVudCAmIEdFTjExX0lOVFJfREFUQV9WQUxJRCkp KSB7Cj4+ID4gKwkJRFJNX0VSUk9SKCJJTlRSX0lERU5USVRZX1JFRyV1OiV1IDB4JTA4eCBub3QK Pj4gPiB2YWxpZCFcbiIsCj4+ID4gKwkJCSAgYmFuaywgYml0LCBpZGVudCk7Cj4+ID4gKwkJcmV0 dXJuIDA7Cj4+ID4gKwl9Cj4+ID4gKwo+PiA+ICsJcmF3X3JlZ193cml0ZShyZWdzLCBHRU4xMV9J TlRSX0lERU5USVRZX1JFRyhiYW5rKSwKPj4gPiArCQkgICAgICBHRU4xMV9JTlRSX0RBVEFfVkFM SUQpOwo+PiA+ICsKPj4gPiArCXJldHVybiBpZGVudCAmIEdFTjExX0lOVFJfRU5HSU5FX01BU0s7 Cj4+ID4gK30KPj4gPiArCj4+ID4gK3N0YXRpYyB2b2lkCj4+ID4gK2dlbjExX2d0X2lycV9oYW5k bGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICogY29uc3QgaTkxNSwKPj4gPiArCQkgICAgIGNv bnN0IHUzMiBtYXN0ZXJfY3RsKQo+PiA+ICt7Cj4+ID4gKwl2b2lkIF9faW9tZW0gKiBjb25zdCBy ZWdzID0gaTkxNS0+cmVnczsKPj4gPiArCXVuc2lnbmVkIGludCBiYW5rOwo+PiA+ICsKPj4gPiAr CWZvciAoYmFuayA9IDA7IGJhbmsgPCAyOyBiYW5rKyspIHsKPj4gPiArCQl1bnNpZ25lZCBsb25n IGludHJfZHc7Cj4+ID4gKwkJdW5zaWduZWQgaW50IGJpdDsKPj4gPiArCj4+ID4gKwkJaWYgKCEo bWFzdGVyX2N0bCAmIEdFTjExX0dUX0RXX0lSUShiYW5rKSkpCj4+ID4gKwkJCWNvbnRpbnVlOwo+ PiA+ICsKPj4gPiArCQlpbnRyX2R3ID0gcmF3X3JlZ19yZWFkKHJlZ3MsCj4+ID4gR0VOMTFfR1Rf SU5UUl9EVyhiYW5rKSk7Cj4+ID4gKwo+PiA+ICsJCWlmICh1bmxpa2VseSghaW50cl9kdykpCj4+ ID4gKwkJCURSTV9FUlJPUigiR1RfSU5UUl9EVyV1IGJsYW5rIVxuIiwgYmFuayk7Cj4+IAo+PiBD b3VsZCBjb250aW51ZSBoZXJlLCBzaW5jZSB0aGUgb3RoZXIgb3BlcmF0aW9ucyBpbiB0aGUgbG9v cCB3b24ndCBiZSAKPj4gbWVhbmluZ2Z1bCBpZiBpbnRyX2R3PTAKPj4gCj4+ID4gKwo+PiA+ICsJ CWZvcl9lYWNoX3NldF9iaXQoYml0LCAmaW50cl9kdywgMzIpIHsKPj4gPiArCQkJY29uc3QgdTE2 IGlpciA9IGdlbjExX2d0X2VuZ2luZV9pbnRyKGk5MTUsCj4+ID4gYmFuaywgYml0KTsKPj4gPiAr Cj4+ID4gKwkJCWlmICh1bmxpa2VseSghaWlyKSkKPj4gPiArCQkJCWNvbnRpbnVlOwo+PiA+ICsK Pj4gPiArCQkJZ2VuMTFfZ3RfZW5naW5lX2lycV9oYW5kbGVyKGk5MTUsIGJhbmssCj4+ID4gYml0 LCBpaXIpOwo+PiA+ICsJCX0KPj4gPiArCj4+ID4gKwkJLyogQ2xlYXIgbXVzdCBiZSBhZnRlciBz aGFyZWQgaGFzIGJlZW4gc2VydmVkIGZvcgo+PiA+IGVuZ2luZSAqLwo+PiA+ICsJCXJhd19yZWdf d3JpdGUocmVncywgR0VOMTFfR1RfSU5UUl9EVyhiYW5rKSwKPj4gPiBpbnRyX2R3KTsKPj4gPiAr CX0KPj4gPiArfQo+PiA+ICsKPj4gPiArc3RhdGljIGlycXJldHVybl90IGdlbjExX2lycV9oYW5k bGVyKGludCBpcnEsIHZvaWQgKmFyZykKPj4gPiArewo+PiA+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKiBjb25zdCBpOTE1ID0gdG9faTkxNShhcmcpOwo+PiA+ICsJdm9pZCBfX2lvbWVtICog Y29uc3QgcmVncyA9IGk5MTUtPnJlZ3M7Cj4+ID4gKwl1MzIgbWFzdGVyX2N0bDsKPj4gPiArCj4+ ID4gKwlpZiAoIWludGVsX2lycXNfZW5hYmxlZChpOTE1KSkKPj4gPiArCQlyZXR1cm4gSVJRX05P TkU7Cj4+ID4gKwo+PiA+ICsJbWFzdGVyX2N0bCA9IHJhd19yZWdfcmVhZChyZWdzLCBHRU4xMV9H RlhfTVNUUl9JUlEpOwo+PiA+ICsJbWFzdGVyX2N0bCAmPSB+R0VOMTFfTUFTVEVSX0lSUTsKPj4g PiArCWlmICghbWFzdGVyX2N0bCkKPj4gPiArCQlyZXR1cm4gSVJRX05PTkU7Cj4+ID4gKwo+PiA+ ICsJLyogRGlzYWJsZSBpbnRlcnJ1cHRzLiAqLwo+PiA+ICsJcmF3X3JlZ193cml0ZShyZWdzLCBH RU4xMV9HRlhfTVNUUl9JUlEsIDApOwo+PiA+ICsKPj4gPiArCS8qIEZpbmQsIGNsZWFyLCB0aGVu IHByb2Nlc3MgZWFjaCBzb3VyY2Ugb2YgaW50ZXJydXB0LiAqLwo+PiA+ICsJZ2VuMTFfZ3RfaXJx X2hhbmRsZXIoaTkxNSwgbWFzdGVyX2N0bCk7Cj4+ID4gKwo+PiA+ICsJLyogSVJRcyBhcmUgc3lu Y2VkIGR1cmluZyBydW50aW1lX3N1c3BlbmQsIHdlIGRvbid0Cj4+ID4gcmVxdWlyZSBhIHdha2Vy ZWYgKi8KPj4gPiArCWlmIChtYXN0ZXJfY3RsICYgR0VOMTFfRElTUExBWV9JUlEpIHsKPj4gPiAr CQljb25zdCB1MzIgZGlzcF9jdGwgPSByYXdfcmVnX3JlYWQocmVncywKPj4gPiBHRU4xMV9ESVNQ TEFZX0lOVF9DVEwpOwo+PiA+ICsKPj4gPiArCQlkaXNhYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMo aTkxNSk7Cj4+ID4gKwkJZ2VuOF9kZV9pcnFfaGFuZGxlcihpOTE1LCBkaXNwX2N0bCk7Cj4+IAo+ PiBnZW44X2RlX2lycV9oYW5kbGVyIHJlZmVycyB0byB0aGUgcHJvdmlkZWQgdmFsdWUgYXMgIm1h c3Rlcl9jdGwiLiAKPj4gR0VOMTFfRElTUExBWV9JTlRfQ1RMIGhhcyB0aGUgc2FtZSBmb3JtYXQg YXMgR0VOOF9NQVNURVJfSVJRIGZvciB0aGUgCj4+IGRpc3BsYXktcmVsYXRlZCBiaXRzICgxNi0z MCkgc28gaXQgaXMgb2sgdG8gcHJvdmlkZSBkaXNwX2N0bCwgYnV0IHdlIAo+PiBjb3VsZCB1c2Ug YSBjb21tZW50IHRvIGV4cGxhaW4gdGhhdC4gQWxzbywgZ2VuOF9kZV9pcnFfaGFuZGxlciBsb2dz IAo+PiBlcnJvcnMgYmxhbWluZyB0aGUgbWFzdGVyIHdoZW4gdGhpbmdzIGdvIHdyb25nLCBzbyB3 ZSBjb3VsZCB1cGRhdGUKPj4gdGhhdCAKPj4gdG8gbWFrZSB0aGluZ3MgY2xlYXJlciwgYnV0IHRo YXQgY2FuIGNvbWUgYXMgYSBmb2xsb3cgdXAuCj4+IAo+PiBJJ3ZlIGNoZWNrZWQgdGhlIGJpdCBk ZWZpbml0aW9ucyBvZiB0aGUgcmVnaXN0ZXJzIHVzZWQgaW4gCj4+IGdlbjhfZGVfaXJxX2hhbmRs ZXIgYW5kIHNvbWUgb2YgdGhlIGJpdHMgaGF2ZSBtb3ZlZCwgYnV0IEFGQUlDUwo+PiBhbW9uZyAK Pj4gdGhlIG9uZXMgd2UgdXNlIHRoZSBvbmx5IG9uZSB0aGF0IGlzIGltcGFjdGVkIGlzIEdFTjhf REVfTUlTQ19HU0UsCj4+IHdoaWNoIAo+PiBpcyBub3cgZ29uZSAoYml0IGlzIG5vdyByZXNlcnZl ZCkuIFRoaXMgc2hvdWxkbid0IGltcGFjdCAKPj4gZ2VuOF9kZV9pcnFfaGFuZGxlciBiZWNhdXNl IHRoZSBpbnRlcnJ1cHQgc2hvdWxkbid0IHRyaWdnZXIgYXQgYWxsLAo+PiBidXQgCj4+IHdlIGNv dWxkIGF2b2lkIGVuYWJsaW5nIGl0IGZyb20gZ2VuOF9kZV9pcnFfcG9zdGluc3RhbGwuCj4KPiBX ZSBoYXZlIGEgcGF0Y2ggZm9yIHRoZSBHU0UgYml0LiBBbHNvLCBhIGZldyBvdGhlciBkaXNwbGF5 LXJlbGF0ZWQKPiBpbnRlcnJ1cHRzIGhhdmUgY2hhbmdlZCwgYW5kIHdlIGhhdmUgcGF0Y2hlcyBm b3IgdGhlbSB0b28uCj4KPiBBbGwgdGhlIGRpc3BsYXktcmVsYXRlZCBpbnRlcnJ1cHQgcGF0Y2hl cyBkZXBlbmQgb24gdGhpcyBwYXRjaCBoZXJlLCBJCj4gZGlkbid0IHNlbmQgdGhlbSB5ZXQgdG8g dGhlIGxpc3Qgc2luY2UgSSByZWFsaXplZCB0aGlzIHBhdGNoIGhlcmUgd291bGQKPiBzdGlsbCBn ZXQgYSBmZXcgbmV3IHZlcnNpb25zLCBnZW5lcmF0aW5nIG1vcmUgYW5kIGNvbmZsaWN0cyBvbiBl YWNoCj4gdmVyc2lvbi4KPgo+IE9uY2UgdGhpcyBvbmUgaXMgbWVyZ2VkIHdlIGNhbiBzZW5kIHRo ZSBkaXNwbGF5IGludGVycnVwdCBvbmVzLgo+CgpUaGlzIGlzIG5vdyBwdXNoZWQgd2l0aCB0aGUg c3VnZ2VzdGVkIGNoYW5nZXMgYnkgRGFuaWVsZS4KVGhhbmtzIGZvciByZXZpZXcuCi1NaWthCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=