From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 07/27] drm/i915/icl: Interrupt handling Date: Fri, 19 Jan 2018 16:10:51 -0200 Message-ID: <1516385451.2673.49.camel@intel.com> References: <20180109232336.11029-1-paulo.r.zanoni@intel.com> <20180109232336.11029-8-paulo.r.zanoni@intel.com> <1515579388.4144.21.camel@linux.intel.com> <33fdabce-cf2e-7501-f930-931d232e1bcf@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9B7E66E917 for ; Fri, 19 Jan 2018 18:11:11 +0000 (UTC) In-Reply-To: <33fdabce-cf2e-7501-f930-931d232e1bcf@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: Tvrtko Ursulin , Joonas Lahtinen , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RW0gU2V4LCAyMDE4LTAxLTE5IMOgcyAxNzozMCArMDAwMCwgVHZydGtvIFVyc3VsaW4gZXNjcmV2 ZXU6Cj4gT24gMTAvMDEvMjAxOCAxMDoxNiwgSm9vbmFzIExhaHRpbmVuIHdyb3RlOgo+ID4gT24g VHVlLCAyMDE4LTAxLTA5IGF0IDIxOjIzIC0wMjAwLCBQYXVsbyBaYW5vbmkgd3JvdGU6Cj4gPiA+ IEZyb206IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gPiA+IAo+ ID4gPiB2MjogUmViYXNlLgo+ID4gPiAKPiA+ID4gdjM6Cj4gPiA+ICAgICogUmVtb3ZlIERQRiwg aXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFNLTCsuCj4gPiA+ICAgICogRml4IC1pbnRlcm5hbCBy ZWJhc2Ugd3J0LiBleGVjbGlzdHMgaW50ZXJydXB0IGhhbmRsaW5nLgo+ID4gPiAKPiA+ID4gdjQ6 IFJlYmFzZS4KPiA+ID4gCj4gPiA+IHY1Ogo+ID4gPiAgICAqIFVwZGF0ZWQgZm9yIFBPUiBjaGFu Z2VzLiAoRGFuaWVsZSBDZXJhb2xvIFNwdXJpbykKPiA+ID4gICAgKiBNZXJnZWQgd2l0aCBpcnEg aGFuZGxpbmcgZml4ZXMgYnkgRGFuaWVsZSBDZXJhb2xvIFNwdXJpbzoKPiA+ID4gICAgICAgICog U2ltcGxpZnkgdGhlIGNvZGUgYnkgdXNpbmcgZ2VuOF9jc19pcnFfaGFuZGxlci4KPiA+ID4gICAg ICAgICogRml4IGludGVycnVwdCBoYW5kbGluZyBmb3IgdGhlIHVwc3RyZWFtIGtlcm5lbC4KPiA+ ID4gCj4gPiA+IHY2Ogo+ID4gPiAgICAqIFJlbW92ZSBlYXJseSBicmluZ3VwIGRlYnVnIG1lc3Nh Z2VzIChUdnJ0a28pCj4gPiA+ICAgICogQWRkIE5CIGFib3V0IGFyYml0cmFyeSBzcGluIHdhaXQg dGltZW91dCAoVHZydGtvKQo+ID4gPiAKPiA+ID4gdjcgKGZyb20gUGF1bG8pOgo+ID4gPiAgICAq IERvbid0IHRyeSB0byB3cml0ZSBSTyBiaXRzIHRvIHJlZ2lzdGVycy4KPiA+ID4gICAgKiBEb24n dCBjaGVjayBmb3IgUENIIHR5cGVzIHRoYXQgZG9uJ3QgZXhpc3QuIFBDSCBpbnRlcnJ1cHRzCj4g PiA+IGFyZSBub3QKPiA+ID4gICAgICBoZXJlIHlldC4KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYt Ynk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gPiA+IFNpZ25l ZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiA+ID4gU2ln bmVkLW9mZi1ieTogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlv QGludGUKPiA+ID4gbC5jb20+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IE9zY2FyIE1hdGVvIDxvc2Nh ci5tYXRlb0BpbnRlbC5jb20+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1 bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gCj4gPiA8U05JUD4KPiA+IAo+ID4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gPiA+IEBAIC00MTUsNiArNDE1LDkgQEAg dm9pZCBnZW42X2VuYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICAgCWlmIChSRUFEX09OQ0UocnBzLT5pbnRlcnJ1cHRzX2Vu YWJsZWQpKQo+ID4gPiAgIAkJcmV0dXJuOwo+ID4gPiAgIAo+ID4gPiArCWlmIChXQVJOX09OX09O Q0UoSVNfR0VOMTEoZGV2X3ByaXYpKSkKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICAg CXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5pcnFfbG9jayk7Cj4gPiA+ICAgCVdBUk5fT05fT05D RShycHMtPnBtX2lpcik7Cj4gPiA+ICAgCVdBUk5fT05fT05DRShJOTE1X1JFQUQoZ2VuNl9wbV9p aXIoZGV2X3ByaXYpKSAmCj4gPiA+IGRldl9wcml2LT5wbV9ycHNfZXZlbnRzKTsKPiA+ID4gQEAg LTQzMSw2ICs0MzQsOSBAQCB2b2lkIGdlbjZfZGlzYWJsZV9ycHNfaW50ZXJydXB0cyhzdHJ1Y3QK PiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICAgCWlmICghUkVBRF9PTkNF KHJwcy0+aW50ZXJydXB0c19lbmFibGVkKSkKPiA+ID4gICAJCXJldHVybjsKPiA+ID4gICAKPiA+ ID4gKwlpZiAoV0FSTl9PTl9PTkNFKElTX0dFTjExKGRldl9wcml2KSkpCj4gPiA+ICsJCXJldHVy bjsKPiA+ID4gKwo+ID4gCj4gPiBUaGVzZSBzaG91bGQgYmUgR0VNX0JVR19PTiBhdCBtb3N0IGFu ZCBzaG91bGQgYmUgdGhlIGZpcnN0IHRoaW5nIGluCj4gPiBmdW5jdGlvbi4KPiAKPiBUaGF0IHdv dWxkIGJlIGEgYml0IHVuZnJpZW5kbHkgd2hlbiB5b3UgYXJlIGJyaW5naW5nIHVwIHRoZSBjb2Rl YmFzZQo+IGFuZCAKPiBub3QgYWxsIHBpY2VzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCB5ZXQuIEl0 IGdldHMgcmVtb3ZlZCBsYXRlciBpbgo+IHRoZSAKPiBzZXJpZXMsIG9yIGluIGEgZm9sbG93aW5n IHNlcmllcywgd2hhdGV2ZXIuCj4gCj4gPiA+ICAgCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT5p cnFfbG9jayk7Cj4gPiA+ICAgCXJwcy0+aW50ZXJydXB0c19lbmFibGVkID0gZmFsc2U7Cj4gPiA+ ICAgCj4gPiA+IEBAIC0yNzUxLDYgKzI3NTcsMTMxIEBAIHN0YXRpYyB2b2lkIF9fZmluaV93ZWRn ZShzdHJ1Y3Qgd2VkZ2VfbWUKPiA+ID4gKncpCj4gPiA+ICAgCSAgICAgKFcpLT5pOTE1OwkJCQkJ CQo+ID4gPiAJXAo+ID4gPiAgIAkgICAgIF9fZmluaV93ZWRnZSgoVykpKQo+ID4gPiAgIAo+ID4g PiArc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkCj4gPiA+ICtnZW4xMV9jc19pcnFfaGFuZGxl cihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBpaXIpCj4gPiA+ICt7Cj4gPiA+ ICsJZ2VuOF9jc19pcnFfaGFuZGxlcihlbmdpbmUsIGlpciwgMCk7Cj4gPiA+ICt9Cj4gPiA+ICsK PiA+ID4gK3N0YXRpYyBpcnFyZXR1cm5fdAo+ID4gPiArZ2VuMTFfZ3RfaXJxX2hhbmRsZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIKPiA+ID4gbWFzdGVyX2N0bCkKPiA+ IAo+ID4gVGhpcyBmdW5jdGlvbiBjb3VsZCB1c2Ugc29tZSByZWFkYWJpbGl0eSA6KQo+IAo+IE5h bWUgb3IgYm9keT8KPiAKPiA+ID4gK3sKPiA+ID4gKwlpcnFyZXR1cm5fdCByZXQgPSBJUlFfTk9O RTsKPiA+ID4gKwl1MTYgaXJxWzJdWzMyXTsKPiA+ID4gKwl1MzIgZHcsIGlkZW50Owo+ID4gPiAr CXVuc2lnbmVkIGxvbmcgdG1wOwo+ID4gPiArCXVuc2lnbmVkIGludCBiYW5rLCBiaXQsIGVuZ2lu ZTsKPiA+ID4gKwl1bnNpZ25lZCBsb25nIHdhaXRfc3RhcnQsIHdhaXRfZW5kOwo+ID4gPiArCj4g PiA+ICsJbWVtc2V0KGlycSwgMCwgc2l6ZW9mKGlycSkpOwo+ID4gPiArCj4gPiA+ICsJZm9yIChi YW5rID0gMDsgYmFuayA8IDI7IGJhbmsrKykgewo+ID4gPiArCQlpZiAobWFzdGVyX2N0bCAmIEdF TjExX0dUX0RXX0lSUShiYW5rKSkgewo+ID4gCj4gPiBJbnZlcnQgY29uZGl0aW9uIGFuZCB1c2Ug Y29udGludWU7Cj4gPiAKPiA+ID4gKwkJCWR3ID0KPiA+ID4gSTkxNV9SRUFEX0ZXKEdFTjExX0dU X0lOVFJfRFcoYmFuaykpOwo+ID4gPiArCQkJaWYgKCFkdykKPiA+ID4gKwkJCQlEUk1fRVJST1Io IkdUX0lOVFJfRFcldQo+ID4gPiBibGFuayFcbiIsIGJhbmspOwo+ID4gCj4gPiBQcm9iYWJseSBu ZWVkcyBhIG1vcmUgYXBwcm9wcmlhdGUgYWN0aW9uLCBHRU1fQlVHX09OIGlmIHdlJ3ZlIG5ldmVy Cj4gPiBzZWVuIHRoaXMgb24gSFcuCj4gCj4gVG8gZWFybHkgdG8ga25vdy4gVEJELgo+IAo+ID4g PiArCQkJdG1wID0gZHc7Cj4gPiA+ICsJCQlmb3JfZWFjaF9zZXRfYml0KGJpdCwgJnRtcCwgMzIp IHsKPiA+ID4gKwkJCQlJOTE1X1dSSVRFX0ZXKEdFTjExX0lJUl9SRUdfU0VMRQo+ID4gPiBDVE9S KGJhbmspLCAxIDw8IGJpdCk7Cj4gPiAKPiA+IEJJVChiaXQpCj4gPiAKPiA+ICsgbmV3bGluZSBo ZXJlCj4gCj4gWWVzIHNpciEKPiAKPiA+IAo+ID4gPiArCQkJCXdhaXRfc3RhcnQgPSBsb2NhbF9j bG9jaygpID4+Cj4gPiA+IDEwOwo+ID4gPiArCQkJCS8qIE5COiBTcGVjcyBkbyBub3Qgc3BlY2lm eSBob3cKPiA+ID4gbG9uZyB0byBzcGluIHdhaXQuCj4gPiA+ICsJCQkJICogVGFraW5nIDEwMHVz IGFzIGFuIGVkdWNhdGVkCj4gPiA+IGd1ZXNzICovCj4gPiA+ICsJCQkJd2FpdF9lbmQgPSB3YWl0 X3N0YXJ0ICsgMTAwOwo+ID4gPiArCQkJCWRvIHsKPiA+ID4gKwkJCQkJaWRlbnQgPQo+ID4gPiBJ OTE1X1JFQURfRlcoR0VOMTFfSU5UUl9JREVOVElUWV9SRUcoYmFuaykpOwo+ID4gPiArCQkJCX0g d2hpbGUgKCEoaWRlbnQgJgo+ID4gPiBHRU4xMV9JTlRSX0RBVEFfVkFMSUQpICYmCj4gPiA+ICsJ CQkJCSAhdGltZV9hZnRlcigodW5zaWduZWQKPiA+ID4gbG9uZylsb2NhbF9jbG9jaygpID4+IDEw LCB3YWl0X2VuZCkpOwo+ID4gCj4gPiBVaCBvaCwgbm90IGEgcmVhbGx5IG5pY2UgdGhpbmcgdG8g ZG8gaW4gSVJRIGhhbmRsZXIgOiggV2Ugc2hvdWxkCj4gPiBwcm9iYWJseSBsb29rIGF0IHNvbWUg YWN0dWFsIGRlbGF5IG51bWJlcnMgYW5kIG5vdCBkbyB0aGlzLgo+IAo+IFRvbyBlYXJseSB0byBr bm93LiBUQkQuIFNwZWMgd2FudHMgdXMgdG8gYnVzeSBwb2xsIGFuZCBkb2Vzbid0Cj4gc3BlY2lm eSAKPiB0aGUgdGltZW91dC4gQ2hyaXMgYWxzbyBjb21wbGFpbmVkIGFuZCB3ZSBjaGF0dGVkIGFi b3V0IHRoaXMgb24gSVJDLCAKPiBndWVzcyB5b3UgbWlzc2VkIHRoaXMgcGFydGljdWxhciBzdHJl YW0gb2YgY29udmVyc2F0aW9uLgoKCkFuZCBzbyBkaWQgSS4gV2hhdCB3YXMgdGhlIHN1bW1hcnkg b2YgdGhlIGNvbnZlcnNhdGlvbj8gV2hhdCBkaWQgeW91CnR3byBjb25jbHVkZSBzaG91bGQgYmUg ZG9uZSBpbiB0aGlzIGNhc2U/IElzIHRoZSBjdXJyZW50IGNvZGUKYWNjZXB0YWJsZT8KCgo+IAo+ ID4gPiArCj4gPiA+ICsJCQkJaWYgKCEoaWRlbnQgJgo+ID4gPiBHRU4xMV9JTlRSX0RBVEFfVkFM SUQpKQo+ID4gPiArCQkJCQlEUk1fRVJST1IoIklOVFJfSURFTlRJVFkKPiA+ID4gX1JFRyV1OiV1 IHRpbWVkIG91dCFcbiIsCj4gPiA+ICsJCQkJCQkgIGJhbmssIGJpdCk7Cj4gPiA+ICsKPiA+ID4g KwkJCQlpcnFbYmFua11bYml0XSA9IGlkZW50ICYKPiA+ID4gR0VOMTFfSU5UUl9FTkdJTkVfTUFT SzsKPiA+ID4gKwkJCQlpZiAoIWlycVtiYW5rXVtiaXRdKQo+ID4gPiArCQkJCQlEUk1fRVJST1Io IklOVFJfSURFTlRJVFkKPiA+ID4gX1JFRyV1OiV1IGJsYW5rIVxuIiwKPiA+ID4gKwkJCQkJCSAg YmFuaywgYml0KTsKPiA+IAo+ID4gRFJNX0VSUk9SIGFnYWluIHNlZW1zIGxpa2UgYml0IG9mIGFu IHVuZGVyc3RhdGVtZW50IGZvciBpbnRlcnJ1cHQuCj4gCj4gUHJlY2VkZW50IGluICJtYXN0ZXIg Y29udHJvbCBpbnRlcnJ1cHQgbGllZCIgbWVzc2FnZXMuIENhbiBiZQo+IHJldmlzaXRlZCAKPiB3 aGVuIGl0IGlzIGtub3duIGhvdyB0aGUgcmVhbCBzaWxpY29uIGJlaGF2ZXMuCj4gCj4gPiAKPiA+ ICsgbmV3bGluZSBoZXJlCj4gPiAKPiA+ID4gKwkJCQlJOTE1X1dSSVRFX0ZXKEdFTjExX0lOVFJf SURFTlRJVAo+ID4gPiBZX1JFRyhiYW5rKSwgaWRlbnQpOwo+ID4gPiArCQkJfQo+ID4gCj4gPiAr IG5ld2xpbmUgaGVyZQo+ID4gCj4gPiA+ICsJCQlJOTE1X1dSSVRFX0ZXKEdFTjExX0dUX0lOVFJf RFcoYmFuayksCj4gPiA+IGR3KTsKPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiAr CWlmIChpcnFbMF1bR0VOMTFfUkNTMF0pIHsKPiA+ID4gKwkJZ2VuMTFfY3NfaXJxX2hhbmRsZXIo ZGV2X3ByaXYtPmVuZ2luZVtSQ1NdLAo+ID4gPiArCQkJCSAgICAgaXJxWzBdW0dFTjExX1JDUzBd KTsKPiA+ID4gKwkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJ aWYgKGlycVswXVtHRU4xMV9CQ1NdKSB7Cj4gPiA+ICsJCWdlbjExX2NzX2lycV9oYW5kbGVyKGRl dl9wcml2LT5lbmdpbmVbQkNTXSwKPiA+ID4gKwkJCQkgICAgIGlycVswXVtHRU4xMV9CQ1NdKTsK PiA+ID4gKwkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZm9y IChlbmdpbmUgPSAwOyBlbmdpbmUgPCA0OyBlbmdpbmUrKykgewo+ID4gPiArCQlpZiAoaXJxWzFd W0dFTjExX1ZDUyhlbmdpbmUpXSkgewo+ID4gPiArCQkJZ2VuMTFfY3NfaXJxX2hhbmRsZXIoZGV2 X3ByaXYtCj4gPiA+ID5lbmdpbmVbX1ZDUyhlbmdpbmUpXSwKPiA+ID4gKwkJCQkJICAgICBpcnFb MV1bR0VOMTFfVkNTKGVuCj4gPiA+IGdpbmUpXSk7Cj4gPiA+ICsJCQlyZXQgPSBJUlFfSEFORExF RDsKPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWZvciAoZW5naW5lID0gMDsg ZW5naW5lIDwgMjsgZW5naW5lKyspIHsKPiA+ID4gKwkJaWYgKGlycVsxXVtHRU4xMV9WRUNTKGVu Z2luZSldKSB7Cj4gPiA+ICsJCQlnZW4xMV9jc19pcnFfaGFuZGxlcihkZXZfcHJpdi0KPiA+ID4g PmVuZ2luZVtfVkVDUyhlbmdpbmUpXSwKPiA+ID4gKwkJCQkJICAgICBpcnFbMV1bR0VOMTFfVkVD UyhlCj4gPiA+IG5naW5lKV0pOwo+ID4gPiArCQkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4gPiA+ICsJ CX0KPiA+ID4gKwl9Cj4gPiAKPiA+IERvZXNuJ3QgdGhlIGFib3ZlIGNvZGUgbG9vayBsaWtlIGEg dGFibGUgdG8gYmUgaXRlcmF0ZWQgb3Zlcj8KPiAKPiBDaHJpcyBhbHNvIGhhZCBzb21lIGlkZWFz IG9uIGhvdyB0byBtb2RpZnkgdGhlIGxvb3BpbmcsIG1heWJlIHRoZQo+IHNhbWUgCj4gYXMgeW91 cnMuIEJlc3Qgd2UgY2hhdCBhYm91dCBpdCB3aGVuIHdlIGFyZSBhbGwgcHJlc2VudC4KClBsZWFz ZSBtYWtlIHN1cmUgY29uY2x1c2lvbnMgYXJlIHBvc3RlZCB0byB0aGlzIGxpc3Qgc28gdGhlIHB1 YmxpYwpyZXZpZXcgaXMgcHJvcGVybHkgZG9jdW1lbnRlZC4KCgo+IAo+ID4gCj4gPiA8U05JUD4K PiA+IAo+ID4gPiArc3RhdGljIHZvaWQgZ2VuMTFfZ3RfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdikKPiA+ID4gK3sKPiA+ID4gKwljb25zdCB1 MzIgaXJxcyA9IEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCB8Cj4gPiA+IEdUX0NPTlRFWFRfU1dJ VENIX0lOVEVSUlVQVDsKPiA+ID4gKwo+ID4gPiArCUJVSUxEX0JVR19PTihpcnFzICYgMHhmZmZm MDAwMCk7Cj4gPiAKPiA+ICNkZWZpbmUgZm9yIHRoZSBtYXNrLgo+ID4gCj4gPiA+ICsKPiA+ID4g KwkvKiBFbmFibGUgUkNTLCBCQ1MsIFZDUyBhbmQgVkVDUyBjbGFzcyBpbnRlcnJ1cHRzLiAqLwo+ ID4gPiArCUk5MTVfV1JJVEUoR0VOMTFfUkVOREVSX0NPUFlfSU5UUl9FTkFCTEUsIGlycXMgPDwg MTYgfAo+ID4gPiBpcnFzKTsKPiA+ID4gKwlJOTE1X1dSSVRFKEdFTjExX1ZDU19WRUNTX0lOVFJf RU5BQkxFLAkgIGlycXMgPDwKPiA+ID4gMTYgfCBpcnFzKTsKPiA+ID4gKwo+ID4gPiArCS8qIFVu bWFzayBpcnFzIG9uIFJDUywgQkNTLCBWQ1MgYW5kIFZFQ1MgZW5naW5lcy4gKi8KPiA+ID4gKwlJ OTE1X1dSSVRFKEdFTjExX1JDUzBfUlNWRF9JTlRSX01BU0ssCX4oaXJxcyA8PAo+ID4gPiAxNikp Owo+ID4gPiArCUk5MTVfV1JJVEUoR0VOMTFfQkNTX1JTVkRfSU5UUl9NQVNLLAl+KGlycXMgPDwK PiA+ID4gMTYpKTsKPiA+ID4gKwlJOTE1X1dSSVRFKEdFTjExX1ZDUzBfVkNTMV9JTlRSX01BU0ss CX4oaXJxcyB8Cj4gPiA+IGlycXMgPDwgMTYpKTsKPiA+ID4gKwlJOTE1X1dSSVRFKEdFTjExX1ZD UzJfVkNTM19JTlRSX01BU0ssCX4oaXJxcyB8Cj4gPiA+IGlycXMgPDwgMTYpKTsKPiA+ID4gKwlJ OTE1X1dSSVRFKEdFTjExX1ZFQ1MwX1ZFQ1MxX0lOVFJfTUFTSywJfihpcnFzIHwKPiA+ID4gaXJx cyA8PCAxNikpOwo+ID4gCj4gPiBXZSBzaG91bGQgYWxzbyBoYXZlIGFuIGFjdHVhbCBzaGlmdCBh bmQgbWFzayAjZGVmaW5lcyBmb3IgdGhlc2UsCj4gPiBub3cKPiA+IGl0J3MgYWxsIGhhcmRjb2Rl ZCBoZXJlLgo+ID4gCj4gPiA+ICsKPiA+ID4gKwlkZXZfcHJpdi0+cG1faW1yID0gMHhmZmZmZmZm ZjsgLyogVE9ETyAqLwo+ID4gCj4gPiBTb21lIGNvZGUgbWlzc2luZyBpdCBzZWVtcy4KPiAKPiBO b3Qgc3VyZSBvbiB0aGUgc3RhdGVzIG9mIHBhdGNoZXMgd2hpY2ggYnJpbmcgdXAgdGhlc2UgYml0 cy4gTWF5YmUKPiBpdCAKPiBjYW4gYmUgcmUtYXJyYW5nZWQgc29tZWhvdyBidXQgbm90IHN1cmUu Cj4gCj4gPiAKPiA+ID4gK30KPiA+IAo+ID4gPFNOSVA+Cj4gPiAKPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gPiBAQCAtNzk1Nyw3ICs3OTU3LDEwIEBAIHZv aWQgaW50ZWxfc2FuaXRpemVfZ3RfcG93ZXJzYXZlKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiA+ID4gICAJZGV2X3ByaXYtPmd0X3BtLnJjNi5lbmFibGVkID0gdHJ1 ZTsgLyogZm9yY2UgUkM2Cj4gPiA+IGRpc2FibGluZyAqLwo+ID4gPiAgIAlpbnRlbF9kaXNhYmxl X2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4gPiA+ICAgCj4gPiA+IC0JZ2VuNl9yZXNldF9ycHNf aW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAx MSkKPiA+ID4gKwkJZ2VuNl9yZXNldF9ycHNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gPiA+ICsJ ZWxzZQo+ID4gPiArCQlXQVJOX09OX09OQ0UoMSk7Cj4gPiAKPiA+IFNvbWUgY29kZSBpcyBvYnZp b3VzbHkgbWlzc2luZyBoZXJlLgo+IAo+IFllcywgYXMgYWJvdmUuCj4gCj4gPiAKPiA+ID4gICB9 Cj4gPiA+ICAgCj4gPiA+ICAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2Rpc2FibGVfbGxjX3Bz dGF0ZShzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiA+ID4gQEAgLTgwNzAs NiArODA3Myw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9ycHMoc3RydWN0Cj4gPiA+IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgIAkJY2hlcnJ5dmlld19lbmFibGVfcnBz KGRldl9wcml2KTsKPiA+ID4gICAJfSBlbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkg ewo+ID4gPiAgIAkJdmFsbGV5dmlld19lbmFibGVfcnBzKGRldl9wcml2KTsKPiA+ID4gKwl9IGVs c2UgaWYgKFdBUk5fT05fT05DRShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSkgewo+ID4gPiAr CQkvKiBUT0RPICovCj4gPiAKPiA+IERpdHRvLgo+ID4gCj4gPiBJZiB0aGVzZSBhcmUgaW4gYSBs YXRlciBwYXRjaCwgc2hvdWxkIGJlIHNxdWFzaGVkIGhlcmUuCj4gCj4gSXQgbWlnaHQgYmUgcG9z c2libGUgaW4gc29tZSBjYXNlcywgb3IgaXQgbWlnaHQgYmUgcXVpdGUgY2hhbGxlbmdpbmcKPiBp biAKPiBvdGhlcnMuIE5lZWQgdG8gbG9vayBpbnRvIGl0IGJ1dCBubyBwcm9taXNlcy4gV2UgbWln aHQgaGF2ZSB0byBsaXZlCj4gd2l0aCAKPiBoYXZpbmcgcGxhY2UgaG9sZGVycyBsaWtlIHRoaXMg aW4gdGhlIGNvZGUgd2hpY2ggZ2V0IHJlbW92ZWQgYnkKPiBsYXRlciAKPiBwYXRjaGVzL3Nlcmll cy4gSXQncyBxdWl0ZSBjb21wbGV4IGxvZ2lzdGljYWxseSB0byBvcmdhbmlzZSBtdWx0aXBsZSAK PiBzZXJpZXMsIHdyaXR0ZW4gYnkgbXVsdGlwbGUgYXV0aG9ycywgYXQgZGlmZmVyZW50IHRpbWVz LCBhbmQgbWFrZSBpdCAKPiBsb29rIDEwMCUgcHJldHR5LiAoQW5kIG5vdCBqdXN0IHNxdWFzaCBh bmQgYnV0Y2hlciBldmVyeXRoaW5nIHVwIGF0IAo+IG1lcmdlIHRpbWUuKQoKSSBhZ3JlZSB3aXRo IFR2cnRrbyBoZXJlIGFuZCBpbiB0aGUgb3RoZXIgcG9pbnRzIGFib3ZlLiBJZiB3ZSB0YWtlCkpv b25hcydzIHBvaW50IHRvIHRoZSBleHRyZW1lLCBJQ0wgZW5hYmxpbmcgd291bGQgYmUgYSBzaW5n bGUgZ2lhbnQKcGF0Y2guIFdlIGhhdmUgdG8gYWNjZXB0IHRoYXQgc29tZSB0aGluZ3MgYXJlIGdv aW5nIHRvIGJlIGluY29tcGxldGUgaW4KdGhlIHNlcmllcyB0aGF0IGVuYWJsZSBhIHBsYXRmb3Jt LiBXZSBhbHNvIGhhdmUgdGhlIGFscGhhX3N1cHBvcnQKb3B0aW9uIHRvIHByb3RlY3QgdXMgaGVy ZSwgYW5kIENJIHRvIG1ha2Ugc3VyZSBJQ0wncyBpbmNvbXBsZXRlbmVzcwpkb2Vzbid0IGFmZmVj dCB0aGUgb3RoZXIgcGxhdGZvcm1zLgoKCj4gCj4gUmVnYXJkcywKPiAKPiBUdnJ0a28KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==