From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v4 4/5] drm/i915: Watchdog timeout: DRM kernel interface to set the timeout Date: Thu, 28 Feb 2019 17:22:09 +0000 Message-ID: <70ddfaac-c303-d627-03bf-436512516332@linux.intel.com> References: <20190221025820.28447-1-carlos.santa@intel.com> <20190221025820.28447-5-carlos.santa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 24D3C89BD5 for ; Thu, 28 Feb 2019 17:22:17 +0000 (UTC) In-Reply-To: <20190221025820.28447-5-carlos.santa@intel.com> 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: Carlos Santa , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIxLzAyLzIwMTkgMDI6NTgsIENhcmxvcyBTYW50YSB3cm90ZToKPiBGcm9tOiBNaWNoZWwg VGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgo+IAo+IEZpbmFsIGVuYWJsZW1lbnQg cGF0Y2ggZm9yIEdQVSBoYW5nIGRldGVjdGlvbiB1c2luZyB3YXRjaGRvZyB0aW1lb3V0Lgo+IFVz aW5nIHRoZSBnZW1fY29udGV4dF9zZXRwYXJhbSBpb2N0bCwgdXNlcnMgY2FuIHNwZWNpZnkgdGhl IGRlc2lyZWQKPiB0aW1lb3V0IHZhbHVlIGluIG1pY3Jvc2Vjb25kcywgYW5kIHRoZSBkcml2ZXIg d2lsbCBkbyB0aGUgY29udmVyc2lvbiB0bwo+ICd0aW1lc3RhbXBzJy4KPiAKPiBUaGUgcmVjb21t ZW5kZWQgZGVmYXVsdCB3YXRjaGRvZyB0aHJlc2hvbGQgZm9yIHZpZGVvIGVuZ2luZXMgaXMgNjAw MDAgdXMsCj4gc2luY2UgdGhpcyBoYXMgYmVlbiBfZW1waXJpY2FsbHkgZGV0ZXJtaW5lZF8gdG8g YmUgYSBnb29kIGNvbXByb21pc2UgZm9yCj4gbG93LWxhdGVuY3kgcmVxdWlyZW1lbnRzIGFuZCBs b3cgcmF0ZSBvZiBmYWxzZSBwb3NpdGl2ZXMuIFRoZSBkZWZhdWx0Cj4gcmVnaXN0ZXIgdmFsdWUg aXMgfjEwNjAwMHVzIGFuZCB0aGUgdGhlb3JldGljYWwgbWF4IHZhbHVlIChhbGwgMXMpIGlzCj4g MzUzIHNlY29uZHMuCj4gCj4gWzFdIGh0dHA6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Bh dGNoL21zZ2lkLzIwMTcwMzI5MTM1ODMxLjMwMjU0LTItY2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr Cj4gCj4gdjI6IEZpeGVkIGdldCBhcGkgdG8gcmV0dXJuIHZhbHVlcyBpbiBtaWNyb3NlY29uZHMu IFRocmVzaG9sZCB1cGRhdGVkIHRvCj4gYmUgcGVyIGNvbnRleHQgZW5naW5lLiBDaGVjayBmb3Ig dTMyIG92ZXJmbG93LiBDYXB0dXJlIGN0eCB0aHJlc2hvbGQKPiB2YWx1ZSBpbiBlcnJvciBzdGF0 ZS4KPiAKPiB2MzogQWRkIGEgd2F5IHRvIGdldCBhcnJheSBzaXplLCBzaG9ydC1jdXQgdG8gZGlz YWJsZSBhbGwgdGhyZXNob2xkcywKPiByZXR1cm4gRUZBVUxUIC8gRUlOVkFMIGFzIG5lZWRlZC4g TW92ZSB0aGUgY2FwdHVyZSBvZiB0aGUgdGhyZXNob2xkCj4gdmFsdWUgaW4gdGhlIGVycm9yIHN0 YXRlIGludG8gYSBuZXcgcGF0Y2guIEJYVCBoYXMgYSBkaWZmZXJlbnQKPiB0aW1lc3RhbXAgYmFz ZSAoYmVjYXVzZSB3aHkgbm90PykuCj4gCj4gdjQ6IENoZWNraW5nIGlmIHdhdGNoZG9nIGlzIGF2 YWlsYWJsZSBzaG91bGQgYmUgdGhlIGZpcnN0IHRoaW5nIHRvCj4gZG8sIGluc3RlYWQgb2YgZ2l2 aW5nIGZhbHNlIGhvcGVzIHRvIGFiaSB1c2VyczsgcmVtb3ZlIHVubmVjZXNzYXJ5ICYgaW4KPiBz ZXRfd2F0Y2hkb2c7IGlnbm9yZSBhcmdzLT5zaXplIGluIGdldHBhcmFtLgo+IAo+IHY1OiBHRU45 LUxQIHBsYXRmb3JtcyBoYXZlIGEgZGlmZmVyZW50IGNyeXN0YWwgY2xvY2sgZnJlcXVlbmN5LCB1 c2UgdGhlCj4gcmlnaHQgdGltZXN0YW1wIGJhc2UgZm9yIHRoZW0gKG1hZ2ljIDgtYmFsbCBwcmVk aWN0cyB0aGlzIHdpbGwgY2hhbmdlCj4gYWdhaW4gbGF0ZXIgb24sIHNvIGZ1dHVyZS1wcm9vZiBp dCkuIChEYW5pZWxlKQo+IAo+IHY2OiBSZWJhc2UsIG5vIG1vcmUgbXV0ZXggQkxLIGluIGdldHBh cmFtX2lvY3RsLgo+IAo+IHY3OiB1c2UgdG9faW50ZWxfY29udGV4dCBpbnN0ZWFkIG9mIGN0eC0+ ZW5naW5lLgo+IAo+IHY4OiBSZWJhc2UsIHJlbW92ZSBleHRyYSBtdXRleCBmcm9tIGk5MTVfZ2Vt X2NvbnRleHRfc2V0X3dhdGNoZG9nIChUdnJ0a28pLAo+IFVwZGF0ZSBVQVBJIHRvIHVzZSBlbmdp bmUgY2xhc3Mgd2hpbGUga2VlcGluZyB0aHJlc2hvbGRzIHBlcgo+IGVuZ2luZSBjbGFzcyAoTWlj aGVsKS4KPiAKPiB2OTogUmViYXNlLAo+ICAgICAgUmVtb3ZlIG91dGRhdGVkIGNvbW1lbnQgZnJv bSB0aGUgY29tbWl0IG1lc3NhZ2UgKFR2cnRrbykKPiAgICAgIFVzZSB0aGUgZW5naW5lLT5mbGFn IHRvIHZlcmlmeSBmb3IgZ3B1IHdhdGNoZG9nIHN1cHBvcnQgKFR2cnRrbykKPiAgICAgIFVzZSB0 aGUgc3RhbmRhcmQgY29weV90b191c2VyKCkgaW5zdGVhZCAoVHZydGtvKQo+ICAgICAgVXNlIHRo ZSBjb3JyZWN0IHR5cGUgd2hlbiBkZWNsYXJpbmcgZW5naW5lIGNsYXNzIGl0ZXJhdG9yIChUdnJ0 a28pCj4gICAgICBSZW1vdmUgeWV0IGFub3RoZXIgdW5uY2Vzc2FyeSBtdXRleF9sb2NrIChUdnJ0 a28pCj4gCj4gQ2M6IEFudG9uaW8gQXJnZW56aWFubyA8YW50b25pby5hcmdlbnppYW5vQGludGVs LmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNv bT4KPiBDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGlu dGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlA aW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IENhcmxvcyBTYW50YSA8Y2FybG9zLnNhbnRhQGlu dGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg ICB8IDUwICsrKysrKysrKysrKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgfCA5MSArKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBpbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgfCAgMSArCj4gICAzIGZpbGVzIGNoYW5nZWQsIDE0 MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gaW5kZXggMGZjYjJkZjg2OWEyLi5hYWE1ODEwYmE3NmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBAQCAtMTU4Miw2ICsxNTgyLDkgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg ewo+ICAgCXN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgZmVuY2VfcmVnc1tJOTE1X01BWF9OVU1f RkVOQ0VTXTsgLyogYXNzdW1lIDk2NSAqLwo+ICAgCWludCBudW1fZmVuY2VfcmVnczsgLyogOCBv biBwcmUtOTY1LCAxNiBvdGhlcndpc2UgKi8KPiAgIAo+ICsJLyogQ29tbWFuZCBzdHJlYW0gdGlt ZXN0YW1wIGJhc2UgLSBoZWxwcyBkZWZpbmUgd2F0Y2hkb2cgdGhyZXNob2xkICovCj4gKwl1MzIg Y3NfdGltZXN0YW1wX2Jhc2U7Cj4gKwo+ICAgCXVuc2lnbmVkIGludCBmc2JfZnJlcSwgbWVtX2Zy ZXEsIGlzX2RkcjM7Cj4gICAJdW5zaWduZWQgaW50IHNrbF9wcmVmZXJyZWRfdmNvX2ZyZXE7Cj4g ICAJdW5zaWduZWQgaW50IG1heF9jZGNsa19mcmVxOwo+IEBAIC0zMTIwLDEwICszMTIzLDU1IEBA IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZp bGVfcHJpdiwgdTMyIGlkKQo+ICAgCXJldHVybiBjdHg7Cj4gICB9Cj4gICAKPiArLyoKPiArICog QkRXLCBDSFYgJiBTS0wrIFRpbWVzdGFtcCB0aW1lciByZXNvbHV0aW9uID0gMC4wODAgdVNlYywK PiArICogb3IgMTI1MDAwMDAgY291bnRzIHBlciBzZWNvbmQsIG9yIH4xMiBjb3VudHMgcGVyIG1p Y3Jvc2Vjb25kLgo+ICsgKgo+ICsgKiBCdXQgQlhUL0dMSyBUaW1lc3RhbXAgdGltZXIgcmVzb2x1 dGlvbiBpcyBkaWZmZXJlbnQsIDAuMDUyIHVTZWMsCj4gKyAqIG9yIDE5MjAwMDAwIGNvdW50cyBw ZXIgc2Vjb25kLCBvciB+MTkgY291bnRzIHBlciBtaWNyb3NlY29uZC4KPiArICoKPiArICogRnV0 dXJlLXByb29maW5nLCBzb21lIGRheSBpdCB3b24ndCBiZSBhcyBzaW1wbGUgYXMganVzdCBHRU4g JiBJU19MUC4KPiArICovCj4gKyNkZWZpbmUgR0VOOF9USU1FU1RBTVBfQ05UU19QRVJfVVNFQyAx Mgo+ICsjZGVmaW5lIEdFTjlfTFBfVElNRVNUQU1QX0NOVFNfUEVSX1VTRUMgMTkKPiArc3RhdGlj IGlubGluZSB1MzIgY3NfdGltZXN0YW1wX2luX3VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKClByb2JhYmx5IGxldCB0aGUgY29tcGlsZXIgZGVjaWRlIG9uIHRoZSBpbmxpbmUu CgpBbmQgcy9kZXZfcHJpdi9pOTE1LyBpcyBwcmVmZXJyZWQgaW4gdGhlIEdFTSBhcmVhcyB1bmxl c3MgdGhlcmUgYXJlIApwZXNreSBJOTE1X1JFQUQvV1JJVEUgYXJvdW5kLgoKPiArewo+ICsJdTMy IGNzX3RpbWVzdGFtcF9iYXNlID0gZGV2X3ByaXYtPmNzX3RpbWVzdGFtcF9iYXNlOwo+ICsKPiAr CWlmIChjc190aW1lc3RhbXBfYmFzZSkKPiArCQlyZXR1cm4gY3NfdGltZXN0YW1wX2Jhc2U7Cj4g Kwo+ICsJc3dpdGNoIChJTlRFTF9HRU4oZGV2X3ByaXYpKSB7Cj4gKwlkZWZhdWx0Ogo+ICsJCU1J U1NJTkdfQ0FTRShJTlRFTF9HRU4oZGV2X3ByaXYpKTsKPiArCQkvKiBmYWxsIHRocm91Z2ggKi8K PiArCWNhc2UgOToKPiArCQljc190aW1lc3RhbXBfYmFzZSA9IElTX0dFTjlfTFAoZGV2X3ByaXYp ID8KPiArCQkJCQlHRU45X0xQX1RJTUVTVEFNUF9DTlRTX1BFUl9VU0VDIDoKPiArCQkJCQlHRU44 X1RJTUVTVEFNUF9DTlRTX1BFUl9VU0VDOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSA4Ogo+ICsJCWNz X3RpbWVzdGFtcF9iYXNlID0gR0VOOF9USU1FU1RBTVBfQ05UU19QRVJfVVNFQzsKPiArCQlicmVh azsKPiArCX0KPiArCj4gKwlkZXZfcHJpdi0+Y3NfdGltZXN0YW1wX2Jhc2UgPSBjc190aW1lc3Rh bXBfYmFzZTsKPiArCXJldHVybiBjc190aW1lc3RhbXBfYmFzZTsKPiArfQo+ICsKPiArc3RhdGlj IGlubGluZSB1MzIKPiArd2F0Y2hkb2dfdG9fdXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1MzIgdmFsdWVfaW5fY2xvY2tfY291bnRzKQoKRHJvcCB0aGUgaW5saW5lIGFzIHdl bGwuCgo+ICt7Cj4gKwlyZXR1cm4gdmFsdWVfaW5fY2xvY2tfY291bnRzIC8gY3NfdGltZXN0YW1w X2luX3VzKGRldl9wcml2KTsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbmxpbmUgdTMyCj4gICB3YXRj aGRvZ190b19jbG9ja19jb3VudHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 NjQgdmFsdWVfaW5fdXMpCgpIZXJlIGFzIHdlbGwuCgp1MzIgZm9yIHZhbHVlX2luX3VzIHNob3Vs ZCBiZSBlbm91Z2ggYWNjb3JkaW5nIHRvIHRoZSBjYWxsZXIuCgo+ICAgewo+IC0JdTY0IHRocmVz aG9sZCA9IDA7Cj4gKwl1NjQgdGhyZXNob2xkID0gdmFsdWVfaW5fdXMgKiBjc190aW1lc3RhbXBf aW5fdXMoZGV2X3ByaXYpOwo+ICsKPiArCWlmIChvdmVyZmxvd3NfdHlwZSh0aHJlc2hvbGQsIHUz MikpCj4gKwkJcmV0dXJuIC1FSU5WQUw7CgpZb3UgY291bGQgdXNlIGFuIHU2NCBsb2NhbCBmb3Ig Y2hlY2tpbmcgdGhlIG92ZXJmbG93LiBBbmQgaXQgaXMgYWxzbyBhIApiaXQgdW51c3VhbCB0byBy ZXR1cm4gLUVJTlZBTCBpbiB1MzIuCgpNYXliZSByZXR1cm4gYW4gaW50IHN1Y2Nlc3MvZXJyb3Is IG9yIGEgYm9vbCwgYW5kIHZhbHVlIHZpYSBwb2ludGVyIAphcmd1bWVudD8gT3IgcmV0dXJuIHpl cm8gb24gb3ZlcmZsb3cgYW5kIGluIHRoZSBjYWxsZXIgY2hlY2sgZm9yIGl0IGlmIApwYXNzZWQg aW4gdmFsdWUgd2FzIG5vbi16ZXJvPwoKPiAgIAo+ICAgCXJldHVybiB0aHJlc2hvbGQ7Cj4gICB9 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IGNiZmU4ZjJl YjNmMi4uZTFhYmNhMjgxNDBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwo+IEBAIC0xNTczLDYgKzE1NzMsODkgQEAgZ2V0X2VuZ2luZXMoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gKy8qIFJldHVy biB0aGUgdGltZXIgY291bnQgdGhyZXNob2xkIGluIG1pY3Jvc2Vjb25kcy4gKi8KCk5vdCByZWFs bHkgdHJ1ZSBldmVuIGlmIGl0IGlzIHRhbGtpbmcgYWJvdXQgd2hhdCBpdCBjb3BpZXMgYmFjayB0 byAKdXNlcnNwYWNlLgoKPiAraW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0X3dhdGNoZG9nKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gKwkJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbSAqYXJncykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gY3R4LT5pOTE1Owo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJ ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwl1MzIgdGhyZXNob2xkX2luX3VzW09USEVSX0NM QVNTXTsKPiArCj4gKwlpZighaW50ZWxfZW5naW5lX3N1cHBvcnRzX3dhdGNoZG9nKGRldl9wcml2 LT5lbmdpbmVbVkNTXSkpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7Cj4gKwkJc3RydWN0IGludGVsX2NvbnRleHQgKmNl ID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7Cj4gKwo+ICsJCXRocmVzaG9sZF9pbl91 c1tlbmdpbmUtPmNsYXNzXSA9IHdhdGNoZG9nX3RvX3VzKGRldl9wcml2LAo+ICsJCQkJCQkJCWNl LT53YXRjaGRvZ190aHJlc2hvbGQpOwo+ICsJfQo+ICsKPiArCWlmIChjb3B5X3RvX3VzZXIodTY0 X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwKPiArCQkJICAgJnRocmVzaG9sZF9pbl91cywKPiAr CQkJICAgc2l6ZW9mKHRocmVzaG9sZF9pbl91cykpKSB7Cj4gKwkJcmV0dXJuIC1FRkFVTFQ7Cj4g Kwl9Cj4gKwo+ICsJYXJncy0+c2l6ZSA9IHNpemVvZih0aHJlc2hvbGRfaW5fdXMpOwo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBCYXNlZCBvbiB0aW1lIG91dCB2YWx1ZSBp biBtaWNyb3NlY29uZHMgKHVzKSBjYWxjdWxhdGUKPiArICogdGltZXIgY291bnQgdGhyZXNob2xk cyBuZWVkZWQgYmFzZWQgb24gY29yZSBmcmVxdWVuY3kuCj4gKyAqIFdhdGNoZG9nIGNhbiBiZSBk aXNhYmxlZCBieSBzZXR0aW5nIGl0IHRvIDAuCj4gKyAqLwo+ICtpbnQgaTkxNV9nZW1fY29udGV4 dF9zZXRfd2F0Y2hkb2coc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCQkJCSAgc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBjdHgtPmk5MTU7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmU7Cj4gKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiArCWludCBpOwo+ ICsJdTMyIHRocmVzaG9sZFtPVEhFUl9DTEFTU107Cj4gKwo+ICsJaWYoIWludGVsX2VuZ2luZV9z dXBwb3J0c193YXRjaGRvZyhkZXZfcHJpdi0+ZW5naW5lW1ZDU10pKQo+ICsJCXJldHVybiAtRU5P REVWOwoKWW91IGNvdWxkIGNoZWNrIGZvciBlYWNoIGVuZ2luZSBpZiB0aGUgc3VnZ2VzdGVkIHVB UEkgd2FzIGNvbnNpZGVyZWQuCgo+ICsKPiArCW1lbXNldCh0aHJlc2hvbGQsIDAsIHNpemVvZih0 aHJlc2hvbGQpKTsKPiArCj4gKwkvKiBzaG9ydGN1dCB0byBkaXNhYmxlIGluIGFsbCBlbmdpbmVz ICovCj4gKwlpZiAoYXJncy0+c2l6ZSA9PSAwKQo+ICsJCWdvdG8gc2V0X3dhdGNoZG9nOwo+ICsK PiArCWlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHRocmVzaG9sZCkpCj4gKwkJcmV0dXJuIC1FRkFV TFQ7ID4gKwo+ICsJaWYgKGNvcHlfZnJvbV91c2VyKHRocmVzaG9sZCwKPiArCQkJICAgdTY0X3Rv X3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwKPiArCQkJICAgc2l6ZW9mKHRocmVzaG9sZCkpKSB7Cj4g KwkJcmV0dXJuIC1FRkFVTFQ7Cj4gKwl9Cj4gKwo+ICsJLyogbm90IHN1cHBvcnRlZCBpbiBibGl0 dGVyIGVuZ2luZSAqLwo+ICsJaWYgKHRocmVzaG9sZFtDT1BZX0VOR0lORV9DTEFTU10gIT0gMCkK PiArCQlyZXR1cm4gLUVJTlZBTDsKCllvdSBhZGRlZCBlbmdpbmVfc3VwcG9ydHNfd2F0Y2hkb2cu Cgo+ICsKPiArCWZvciAoaSA9IFJFTkRFUl9DTEFTUzsgaSA8IE9USEVSX0NMQVNTOyBpKyspIHsK PiArCQl0aHJlc2hvbGRbaV0gPSB3YXRjaGRvZ190b19jbG9ja19jb3VudHMoZGV2X3ByaXYsIHRo cmVzaG9sZFtpXSk7Cj4gKwo+ICsJCWlmICh0aHJlc2hvbGRbaV0gPT0gLUVJTlZBTCkKPiArCQkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICtzZXRfd2F0Y2hkb2c6Cj4gKwlmb3JfZWFjaF9l bmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKPiArCj4gKwkJY2UtPndhdGNoZG9n X3RocmVzaG9sZCA9IHRocmVzaG9sZFtlbmdpbmUtPmNsYXNzXTsKPiArCX0KPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgY3R4X3NldHBhcmFtKHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgsCj4gICAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0g KmFyZ3MpCj4gICB7Cj4gQEAgLTE2NDAsNiArMTcyMywxMCBAQCBzdGF0aWMgaW50IGN0eF9zZXRw YXJhbShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQlyZXQgPSBzZXRfZW5naW5l cyhjdHgsIGFyZ3MpOwo+ICAgCQlicmVhazsKPiAgIAo+ICsJY2FzZSBJOTE1X0NPTlRFWFRfUEFS QU1fV0FUQ0hET0c6Cj4gKwkJcmV0ID0gaTkxNV9nZW1fY29udGV4dF9zZXRfd2F0Y2hkb2coY3R4 LCBhcmdzKTsKPiArCQlicmVhazsKPiArCj4gICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFO X1BFUklPRDoKPiAgIAlkZWZhdWx0Ogo+ICAgCQlyZXQgPSAtRUlOVkFMOwo+IEBAIC0xODQzLDYg KzE5MzAsMTAgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJYXJncy0+dmFsdWUgPSBjdHgtPnNjaGVk LnByaW9yaXR5ID4+IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKPiAgIAkJYnJlYWs7Cj4gICAK PiArCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1dBVENIRE9HOgo+ICsJCXJldCA9IGk5MTVfZ2Vt X2NvbnRleHRfZ2V0X3dhdGNoZG9nKGN0eCwgYXJncyk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICAgCWNh c2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6Cj4gICAJCXJldCA9IGdldF9zc2V1KGN0eCwgYXJn cyk7Cj4gICAJCWJyZWFrOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJt LmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiBpbmRleCAzZjJjODk3NDBiMGUuLjdk YWJkYjNlMGZhZCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiAr KysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiBAQCAtMTQ5Miw2ICsxNDkyLDcgQEAg c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKPiAgICAqIFNlZSBzdHJ1Y3QgaTkx NV9jb250ZXh0X3BhcmFtX2VuZ2luZXMuCj4gICAgKi8KPiAgICNkZWZpbmUgSTkxNV9DT05URVhU X1BBUkFNX0VOR0lORVMJMHg5Cj4gKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX1dBVENIRE9H CTB4MTAKPiAgIAo+ICAgCV9fdTY0IHZhbHVlOwo+ICAgfTsKPiAKCnVBUEkgaXMgc3RpbGwgbm90 IGRvY3VtZW50ZWQgaW4gaTkxNV9kcm0uaCBhbmQgeW91IGhhdmUgbm90IGNvbnNpZGVyZWQgCnRo ZSBzdWdnZXN0aW9uIHRvIHVzZSB0aGUgYXJyYXkgb2Ygc3RydWN0cywgd2hpY2ggd291bGQgbWF0 Y2ggdGhlIG90aGVyIApiaXRzIG9mIG5ldyB1QVBJIHdlIGFyZSBhZGRpbmcuIExpa2UgbWFraW5n IGN0eCBzZXQgcGFyYW0gYXJncy0+dmFsdWUgCnBvaW50IHRvIGFuIGFycmF5IG9mOgoKc3RydWN0 IGRybV9pOTE1X3dhdGNoZG9nX3RpbWVvdXQgewogICAgIHN0cnVjdCB7CiAgICAgICAgIF9fdTE2 IGNsYXNzOwogICAgICAgICBfX3UxNiBpbnN0YW5jZTsKICAgICB9OwogICAgIF9fdTMyIHRpbWVv dXRfdXM7Cn07CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==