From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A715C433E0 for ; Wed, 23 Dec 2020 14:39:00 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F198A222B3 for ; Wed, 23 Dec 2020 14:38:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F198A222B3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E43B6E0C2; Wed, 23 Dec 2020 14:38:59 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 07AF96E0C2 for ; Wed, 23 Dec 2020 14:38:57 +0000 (UTC) IronPort-SDR: cU2aH7IWPLrxg4MDg+P8TF4/qJx2vki8qmd9v7E2BBs3QAjmznTONyTu659Jko8mA9XAaN8iwo JzTRaTbnJibg== X-IronPort-AV: E=McAfee;i="6000,8403,9843"; a="172512747" X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="172512747" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Dec 2020 06:38:54 -0800 IronPort-SDR: 29onnts6Kmd5InZEr/ZNfQ8EXKHOwFfs6T4pHm/4M6p2MjcGBEpUfQdCslWAdv2jjMR0X+OsmL ZH/dEwKoAIYA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,441,1599548400"; d="scan'208";a="457992175" Received: from gaia.fi.intel.com ([10.237.72.192]) by fmsmga001.fm.intel.com with ESMTP; 23 Dec 2020 06:38:52 -0800 Received: by gaia.fi.intel.com (Postfix, from userid 1000) id E8BBD5C2052; Wed, 23 Dec 2020 16:36:26 +0200 (EET) From: Mika Kuoppala To: Chris Wilson , intel-gfx@lists.freedesktop.org In-Reply-To: <20201223122359.22562-2-chris@chris-wilson.co.uk> References: <20201223122359.22562-1-chris@chris-wilson.co.uk> <20201223122359.22562-2-chris@chris-wilson.co.uk> Date: Wed, 23 Dec 2020 16:36:26 +0200 Message-ID: <87y2hoy4gl.fsf@gaia.fi.intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 2/2] drm/i915/gt: Consolidate the CS timestamp clocks X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chris Wilson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gUHVsbCB0 aGUgR1QgY2xvY2sgaW5mb3JtYXRpb24gW3VzZWQgdG8gZGVyaXZlIENTIHRpbWVzdGFtcHMgYW5k IFBNCj4gaW50ZXJ2YWxdIHVuZGVyIHRoZSBHVCBzbyB0aGF0IGlzIGl0IGxvY2FsIHRvIHRoZSB1 c2Vycy4gSW4gZG9pbmcgc28sIHdlCj4gY29uc29saWRhdGUgdGhlIHR3byByZWZlcmVuY2VzIGZv ciB0aGUgc2FtZSBpbmZvcm1hdGlvbiwgb2Ygd2hpY2ggdGhlCj4gcnVudGltZS1pbmZvIHRvb2sg bm90ZSBvZiBhIHBvdGVudGlhbCBjbG9jayBzb3VyY2Ugb3ZlcnJpZGUgYW5kIHNjYWxpbmcKPiBm YWN0b3JzLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfcG0u YyAgICAgICB8ICAyMCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0 LmggICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyAg ICAgICAgICAgIHwgICA0ICstCj4gIC4uLi9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xvY2tf dXRpbHMuYyAgICB8IDE5NyArKysrKysrKysrKysrKy0tLS0KPiAgLi4uL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9ndF9jbG9ja191dGlscy5oICAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0X3R5cGVzLmggICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5jICB8ICAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9ndF9wbS5jICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgICAgIHwgIDE5ICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAxMiAtLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dldHBhcmFtLmMgICAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgICAgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZi5jICAgICAgICAgICAgICB8ICAxMSArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jICAgICAgfCAxNTcgLS0tLS0tLS0tLS0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaCAgICAgIHwgICAzIC0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcGVyZi5jICAgIHwgICAyICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyB8ICAgMyAr LQo+ICAxNyBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgMjU2IGRlbGV0aW9ucygt KQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfcG0u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfcG0uYwo+IGluZGV4IDg5NzU3 MTdhY2UwNi4uYTBmMTBlOGJiZDIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2RlYnVnZnNfZ3RfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVn ZnNfZ3RfcG0uYwo+IEBAIC00MDQsMzQgKzQwNCwzNCBAQCBzdGF0aWMgaW50IGZyZXF1ZW5jeV9z aG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAJCXNlcV9wcmludGYobSwg IlJQREVDTElNSVQ6IDB4JTA4eFxuIiwgcnBkZWNsaW1pdCk7Cj4gIAkJc2VxX3ByaW50ZihtLCAi UlBOU1dSRVE6ICVkTUh6XG4iLCByZXFmKTsKPiAgCQlzZXFfcHJpbnRmKG0sICJDQUdGOiAlZE1I elxuIiwgY2FnZik7Cj4gLQkJc2VxX3ByaW50ZihtLCAiUlAgQ1VSIFVQIEVJOiAlZCAoJWRucylc biIsCj4gKwkJc2VxX3ByaW50ZihtLCAiUlAgQ1VSIFVQIEVJOiAlZCAoJWxsZG5zKVxuIiwKPiAg CQkJICAgcnBjdXJ1cGVpLAo+ICAJCQkgICBpbnRlbF9ndF9wbV9pbnRlcnZhbF90b19ucyhndCwg cnBjdXJ1cGVpKSk7Cj4gLQkJc2VxX3ByaW50ZihtLCAiUlAgQ1VSIFVQOiAlZCAoJWRucylcbiIs Cj4gKwkJc2VxX3ByaW50ZihtLCAiUlAgQ1VSIFVQOiAlZCAoJWxsZG5zKVxuIiwKPiAgCQkJICAg cnBjdXJ1cCwgaW50ZWxfZ3RfcG1faW50ZXJ2YWxfdG9fbnMoZ3QsIHJwY3VydXApKTsKPiAtCQlz ZXFfcHJpbnRmKG0sICJSUCBQUkVWIFVQOiAlZCAoJWRucylcbiIsCj4gKwkJc2VxX3ByaW50Ziht LCAiUlAgUFJFViBVUDogJWQgKCVsbGRucylcbiIsCj4gIAkJCSAgIHJwcHJldnVwLCBpbnRlbF9n dF9wbV9pbnRlcnZhbF90b19ucyhndCwgcnBwcmV2dXApKTsKPiAgCQlzZXFfcHJpbnRmKG0sICJV cCB0aHJlc2hvbGQ6ICVkJSVcbiIsCj4gIAkJCSAgIHJwcy0+cG93ZXIudXBfdGhyZXNob2xkKTsK PiAtCQlzZXFfcHJpbnRmKG0sICJSUCBVUCBFSTogJWQgKCVkbnMpXG4iLAo+ICsJCXNlcV9wcmlu dGYobSwgIlJQIFVQIEVJOiAlZCAoJWxsZG5zKVxuIiwKPiAgCQkJICAgcnB1cGVpLCBpbnRlbF9n dF9wbV9pbnRlcnZhbF90b19ucyhndCwgcnB1cGVpKSk7Cj4gLQkJc2VxX3ByaW50ZihtLCAiUlAg VVAgVEhSRVNIT0xEOiAlZCAoJWRucylcbiIsCj4gKwkJc2VxX3ByaW50ZihtLCAiUlAgVVAgVEhS RVNIT0xEOiAlZCAoJWxsZG5zKVxuIiwKPiAgCQkJICAgcnB1cHQsIGludGVsX2d0X3BtX2ludGVy dmFsX3RvX25zKGd0LCBycHVwdCkpOwo+ICAKPiAtCQlzZXFfcHJpbnRmKG0sICJSUCBDVVIgRE9X TiBFSTogJWQgKCVkbnMpXG4iLAo+ICsJCXNlcV9wcmludGYobSwgIlJQIENVUiBET1dOIEVJOiAl ZCAoJWxsZG5zKVxuIiwKPiAgCQkJICAgcnBjdXJkb3duZWksCj4gIAkJCSAgIGludGVsX2d0X3Bt X2ludGVydmFsX3RvX25zKGd0LCBycGN1cmRvd25laSkpOwo+IC0JCXNlcV9wcmludGYobSwgIlJQ IENVUiBET1dOOiAlZCAoJWRucylcbiIsCj4gKwkJc2VxX3ByaW50ZihtLCAiUlAgQ1VSIERPV046 ICVkICglbGxkbnMpXG4iLAo+ICAJCQkgICBycGN1cmRvd24sCj4gIAkJCSAgIGludGVsX2d0X3Bt X2ludGVydmFsX3RvX25zKGd0LCBycGN1cmRvd24pKTsKPiAtCQlzZXFfcHJpbnRmKG0sICJSUCBQ UkVWIERPV046ICVkICglZG5zKVxuIiwKPiArCQlzZXFfcHJpbnRmKG0sICJSUCBQUkVWIERPV046 ICVkICglbGxkbnMpXG4iLAo+ICAJCQkgICBycHByZXZkb3duLAo+ICAJCQkgICBpbnRlbF9ndF9w bV9pbnRlcnZhbF90b19ucyhndCwgcnBwcmV2ZG93bikpOwo+ICAJCXNlcV9wcmludGYobSwgIkRv d24gdGhyZXNob2xkOiAlZCUlXG4iLAo+ICAJCQkgICBycHMtPnBvd2VyLmRvd25fdGhyZXNob2xk KTsKPiAtCQlzZXFfcHJpbnRmKG0sICJSUCBET1dOIEVJOiAlZCAoJWRucylcbiIsCj4gKwkJc2Vx X3ByaW50ZihtLCAiUlAgRE9XTiBFSTogJWQgKCVsbGRucylcbiIsCj4gIAkJCSAgIHJwZG93bmVp LCBpbnRlbF9ndF9wbV9pbnRlcnZhbF90b19ucyhndCwgcnBkb3duZWkpKTsKPiAtCQlzZXFfcHJp bnRmKG0sICJSUCBET1dOIFRIUkVTSE9MRDogJWQgKCVkbnMpXG4iLAo+ICsJCXNlcV9wcmludGYo bSwgIlJQIERPV04gVEhSRVNIT0xEOiAlZCAoJWxsZG5zKVxuIiwKPiAgCQkJICAgcnBkb3dudCwg aW50ZWxfZ3RfcG1faW50ZXJ2YWxfdG9fbnMoZ3QsIHJwZG93bnQpKTsKPiAgCj4gIAkJbWF4X2Zy ZXEgPSAoSVNfR0VOOV9MUChpOTE1KSA/IHJwX3N0YXRlX2NhcCA+PiAwIDoKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCj4gaW5kZXggZmRhMmViYTgxZTIyLi4yY2UyZWM2 MzliYTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4 dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCj4gQEAg LTI0OCwxNiArMjQ4LDE0IEBAIGludGVsX2NvbnRleHRfY2xlYXJfbm9wcmVlbXB0KHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSkKPiAgCj4gIHN0YXRpYyBpbmxpbmUgdTY0IGludGVsX2NvbnRleHRf Z2V0X3RvdGFsX3J1bnRpbWVfbnMoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICB7Cj4gLQlj b25zdCB1MzIgcGVyaW9kID0KPiAtCQlSVU5USU1FX0lORk8oY2UtPmVuZ2luZS0+aTkxNSktPmNz X3RpbWVzdGFtcF9wZXJpb2RfbnM7Cj4gKwljb25zdCB1MzIgcGVyaW9kID0gY2UtPmVuZ2luZS0+ Z3QtPmNsb2NrX3BlcmlvZF9uczsKPiAgCj4gIAlyZXR1cm4gUkVBRF9PTkNFKGNlLT5ydW50aW1l LnRvdGFsKSAqIHBlcmlvZDsKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSB1NjQgaW50ZWxfY29u dGV4dF9nZXRfYXZnX3J1bnRpbWVfbnMoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICB7Cj4g LQljb25zdCB1MzIgcGVyaW9kID0KPiAtCQlSVU5USU1FX0lORk8oY2UtPmVuZ2luZS0+aTkxNSkt PmNzX3RpbWVzdGFtcF9wZXJpb2RfbnM7Cj4gKwljb25zdCB1MzIgcGVyaW9kID0gY2UtPmVuZ2lu ZS0+Z3QtPmNsb2NrX3BlcmlvZF9uczsKPiAgCj4gIAlyZXR1cm4gbXVsX3UzMl91MzIoZXdtYV9y dW50aW1lX3JlYWQoJmNlLT5ydW50aW1lLmF2ZyksIHBlcmlvZCk7Cj4gIH0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0LmMKPiBpbmRleCA0NGYxZDUxZTVhZTUuLmQ4ZTFhYjQxMjYzNCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYwo+IEBAIC00Niw2ICs0Niw4IEBAIHZvaWQg aW50ZWxfZ3RfaW5pdF9od19lYXJseShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3QgaTkxNV9n Z3R0ICpnZ3R0KQo+ICAKPiAgaW50IGludGVsX2d0X2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KQo+ICB7Cj4gKwlpbnRlbF9ndF9pbml0X2Nsb2NrX2ZyZXF1ZW5jeShndCk7Cj4gKwoKV2Ug d2lsbCBub3cgcHJvYmUgaXQgd2l0aG91dCBmb3JjZXdha2VfYWxsIHVtYnJlbGxhIGJ1dAppdCBz aG91bGQgd29yayBieSB0YWtpbmcgaXQncyBvd24uCgpSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFs YSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cgo+ICAJaW50ZWxfdWNfaW5pdF9tbWlv KCZndC0+dWMpOwo+ICAJaW50ZWxfc3NldV9pbmZvX2luaXQoZ3QpOwo+ICAKPiBAQCAtNTQ2LDgg KzU0OCw2IEBAIGludCBpbnRlbF9ndF9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gIAkgKi8K PiAgCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGd0LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwp Owo+ICAKPiAtCWludGVsX2d0X2luaXRfY2xvY2tfZnJlcXVlbmN5KGd0KTsKPiAtCj4gIAllcnIg PSBpbnRlbF9ndF9pbml0X3NjcmF0Y2goZ3QsIElTX0dFTihndC0+aTkxNSwgMikgPyBTWl8yNTZL IDogU1pfNEspOwo+ICAJaWYgKGVycikKPiAgCQlnb3RvIG91dF9mdzsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xvY2tfdXRpbHMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmMKPiBpbmRleCA5OTkwNzk2ODY4 NDYuLmE0MjQyY2E4ZGNkNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9ndF9jbG9ja191dGlscy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3RfY2xvY2tfdXRpbHMuYwo+IEBAIC03LDM0ICs3LDE0NiBAQAo+ICAjaW5jbHVkZSAiaW50 ZWxfZ3QuaCIKPiAgI2luY2x1ZGUgImludGVsX2d0X2Nsb2NrX3V0aWxzLmgiCj4gIAo+IC0jZGVm aW5lIE1IWl8xMiAgIDEyMDAwMDAwIC8qIDEyTUh6ICgyNE1Iei8yKSwgODMuMzMzbnMgKi8KPiAt I2RlZmluZSBNSFpfMTJfNSAxMjUwMDAwMCAvKiAxMi41TUh6ICgyNU1Iei8yKSwgODBucyAqLwo+ IC0jZGVmaW5lIE1IWl8xOV8yIDE5MjAwMDAwIC8qIDE5LjJNSHosIDUyLjA4M25zICovCj4gK3N0 YXRpYyB1MzIgcmVhZF9yZWZlcmVuY2VfdHNfZnJlcShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUpCj4gK3sKPiArCXUzMiB0c19vdmVycmlkZSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwg R0VOOV9USU1FU1RBTVBfT1ZFUlJJREUpOwo+ICsJdTMyIGJhc2VfZnJlcSwgZnJhY19mcmVxOwo+ ICsKPiArCWJhc2VfZnJlcSA9ICgodHNfb3ZlcnJpZGUgJiBHRU45X1RJTUVTVEFNUF9PVkVSUklE RV9VU19DT1VOVEVSX0RJVklERVJfTUFTSykgPj4KPiArCQkgICAgIEdFTjlfVElNRVNUQU1QX09W RVJSSURFX1VTX0NPVU5URVJfRElWSURFUl9TSElGVCkgKyAxOwo+ICsJYmFzZV9mcmVxICo9IDEw MDAwMDA7Cj4gKwo+ICsJZnJhY19mcmVxID0gKCh0c19vdmVycmlkZSAmCj4gKwkJICAgICAgR0VO OV9USU1FU1RBTVBfT1ZFUlJJREVfVVNfQ09VTlRFUl9ERU5PTUlOQVRPUl9NQVNLKSA+Pgo+ICsJ CSAgICAgR0VOOV9USU1FU1RBTVBfT1ZFUlJJREVfVVNfQ09VTlRFUl9ERU5PTUlOQVRPUl9TSElG VCk7Cj4gKwlmcmFjX2ZyZXEgPSAxMDAwMDAwIC8gKGZyYWNfZnJlcSArIDEpOwo+ICsKPiArCXJl dHVybiBiYXNlX2ZyZXEgKyBmcmFjX2ZyZXE7Cj4gK30KPiArCj4gK3N0YXRpYyB1MzIgZ2VuMTBf Z2V0X2NyeXN0YWxfY2xvY2tfZnJlcShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4gKwkJ CQkJdTMyIHJwbV9jb25maWdfcmVnKQo+ICt7Cj4gKwl1MzIgZjE5XzJfbWh6ID0gMTkyMDAwMDA7 Cj4gKwl1MzIgZjI0X21oeiA9IDI0MDAwMDAwOwo+ICsJdTMyIGNyeXN0YWxfY2xvY2sgPQo+ICsJ CShycG1fY29uZmlnX3JlZyAmIEdFTjlfUlBNX0NPTkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRX01B U0spID4+Cj4gKwkJR0VOOV9SUE1fQ09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFfU0hJRlQ7Cj4g IAo+IC1zdGF0aWMgdTMyIHJlYWRfY2xvY2tfZnJlcXVlbmN5KGNvbnN0IHN0cnVjdCBpbnRlbF9n dCAqZ3QpCj4gKwlzd2l0Y2ggKGNyeXN0YWxfY2xvY2spIHsKPiArCWNhc2UgR0VOOV9SUE1fQ09O RklHMF9DUllTVEFMX0NMT0NLX0ZSRVFfMTlfMl9NSFo6Cj4gKwkJcmV0dXJuIGYxOV8yX21oejsK PiArCWNhc2UgR0VOOV9SUE1fQ09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFfMjRfTUhaOgo+ICsJ CXJldHVybiBmMjRfbWh6Owo+ICsJZGVmYXVsdDoKPiArCQlNSVNTSU5HX0NBU0UoY3J5c3RhbF9j bG9jayk7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB1MzIgZ2VuMTFf Z2V0X2NyeXN0YWxfY2xvY2tfZnJlcShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4gKwkJ CQkJdTMyIHJwbV9jb25maWdfcmVnKQo+ICB7Cj4gLQlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+ PSAxMSkgewo+IC0JCXUzMiBjb25maWc7Cj4gLQo+IC0JCWNvbmZpZyA9IGludGVsX3VuY29yZV9y ZWFkKGd0LT51bmNvcmUsIFJQTV9DT05GSUcwKTsKPiAtCQljb25maWcgJj0gR0VOMTFfUlBNX0NP TkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRX01BU0s7Cj4gLQkJY29uZmlnID4+PSBHRU4xMV9SUE1f Q09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFfU0hJRlQ7Cj4gLQo+IC0JCXN3aXRjaCAoY29uZmln KSB7Cj4gLQkJY2FzZSAwOiByZXR1cm4gTUhaXzEyOwo+IC0JCWNhc2UgMToKPiAtCQljYXNlIDI6 IHJldHVybiBNSFpfMTlfMjsKPiAtCQlkZWZhdWx0Ogo+IC0JCWNhc2UgMzogcmV0dXJuIE1IWl8x Ml81Owo+ICsJdTMyIGYxOV8yX21oeiA9IDE5MjAwMDAwOwo+ICsJdTMyIGYyNF9taHogPSAyNDAw MDAwMDsKPiArCXUzMiBmMjVfbWh6ID0gMjUwMDAwMDA7Cj4gKwl1MzIgZjM4XzRfbWh6ID0gMzg0 MDAwMDA7Cj4gKwl1MzIgY3J5c3RhbF9jbG9jayA9Cj4gKwkJKHJwbV9jb25maWdfcmVnICYgR0VO MTFfUlBNX0NPTkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRX01BU0spID4+Cj4gKwkJR0VOMTFfUlBN X0NPTkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRX1NISUZUOwo+ICsKPiArCXN3aXRjaCAoY3J5c3Rh bF9jbG9jaykgewo+ICsJY2FzZSBHRU4xMV9SUE1fQ09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFf MjRfTUhaOgo+ICsJCXJldHVybiBmMjRfbWh6Owo+ICsJY2FzZSBHRU4xMV9SUE1fQ09ORklHMF9D UllTVEFMX0NMT0NLX0ZSRVFfMTlfMl9NSFo6Cj4gKwkJcmV0dXJuIGYxOV8yX21oejsKPiArCWNh c2UgR0VOMTFfUlBNX0NPTkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRXzM4XzRfTUhaOgo+ICsJCXJl dHVybiBmMzhfNF9taHo7Cj4gKwljYXNlIEdFTjExX1JQTV9DT05GSUcwX0NSWVNUQUxfQ0xPQ0tf RlJFUV8yNV9NSFo6Cj4gKwkJcmV0dXJuIGYyNV9taHo7Cj4gKwlkZWZhdWx0Ogo+ICsJCU1JU1NJ TkdfQ0FTRShjcnlzdGFsX2Nsb2NrKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArfQo+ICsKPiAr c3RhdGljIHUzMiByZWFkX2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUpCj4gK3sKPiArCXUzMiBmMTJfNV9taHogPSAxMjUwMDAwMDsKPiArCXUzMiBmMTlfMl9taHog PSAxOTIwMDAwMDsKPiArCXUzMiBmMjRfbWh6ID0gMjQwMDAwMDA7Cj4gKwo+ICsJaWYgKElOVEVM X0dFTih1bmNvcmUtPmk5MTUpIDw9IDQpIHsKPiArCQkvKgo+ICsJCSAqIFBSTXMgc2F5Ogo+ICsJ CSAqCj4gKwkJICogICAgICJUaGUgdmFsdWUgaW4gdGhpcyByZWdpc3RlciBpbmNyZW1lbnRzIG9u Y2UgZXZlcnkgMTYKPiArCQkgKiAgICAgIGhjbGtzLiIgKHRocm91Z2ggdGhlIOKAnENsb2NraW5n IENvbmZpZ3VyYXRpb27igJ0KPiArCQkgKiAgICAgICjigJxDTEtDRkfigJ0pIE1DSEJBUiByZWdp c3RlcikKPiArCQkgKi8KPiArCQlyZXR1cm4gUlVOVElNRV9JTkZPKHVuY29yZS0+aTkxNSktPnJh d2Nsa19mcmVxICogMTAwMCAvIDE2Owo+ICsJfSBlbHNlIGlmIChJTlRFTF9HRU4odW5jb3JlLT5p OTE1KSA8PSA4KSB7Cj4gKwkJLyoKPiArCQkgKiBQUk1zIHNheToKPiArCQkgKgo+ICsJCSAqICAg ICAiVGhlIFBDVSBUU0MgY291bnRzIDEwbnMgaW5jcmVtZW50czsgdGhpcyB0aW1lc3RhbXAKPiAr CQkgKiAgICAgIHJlZmxlY3RzIGJpdHMgMzg6MyBvZiB0aGUgVFNDIChpLmUuIDgwbnMgZ3JhbnVs YXJpdHksCj4gKwkJICogICAgICByb2xsaW5nIG92ZXIgZXZlcnkgMS41IGhvdXJzKS4KPiArCQkg Ki8KPiArCQlyZXR1cm4gZjEyXzVfbWh6Owo+ICsJfSBlbHNlIGlmIChJTlRFTF9HRU4odW5jb3Jl LT5pOTE1KSA8PSA5KSB7Cj4gKwkJdTMyIGN0Y19yZWcgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNv cmUsIENUQ19NT0RFKTsKPiArCQl1MzIgZnJlcSA9IDA7Cj4gKwo+ICsJCWlmICgoY3RjX3JlZyAm IENUQ19TT1VSQ0VfUEFSQU1FVEVSX01BU0spID09IENUQ19TT1VSQ0VfRElWSURFX0xPR0lDKSB7 Cj4gKwkJCWZyZXEgPSByZWFkX3JlZmVyZW5jZV90c19mcmVxKHVuY29yZSk7Cj4gKwkJfSBlbHNl IHsKPiArCQkJZnJlcSA9IElTX0dFTjlfTFAodW5jb3JlLT5pOTE1KSA/IGYxOV8yX21oeiA6IGYy NF9taHo7Cj4gKwo+ICsJCQkvKgo+ICsJCQkgKiBOb3cgZmlndXJlIG91dCBob3cgdGhlIGNvbW1h bmQgc3RyZWFtJ3MgdGltZXN0YW1wCj4gKwkJCSAqIHJlZ2lzdGVyIGluY3JlbWVudHMgZnJvbSB0 aGlzIGZyZXF1ZW5jeSAoaXQgbWlnaHQKPiArCQkJICogaW5jcmVtZW50IG9ubHkgZXZlcnkgZmV3 IGNsb2NrIGN5Y2xlKS4KPiArCQkJICovCj4gKwkJCWZyZXEgPj49IDMgLSAoKGN0Y19yZWcgJiBD VENfU0hJRlRfUEFSQU1FVEVSX01BU0spID4+Cj4gKwkJCQkgICAgICBDVENfU0hJRlRfUEFSQU1F VEVSX1NISUZUKTsKPiAgCQl9Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0g OSkgewo+IC0JCWlmIChJU19HRU45X0xQKGd0LT5pOTE1KSkKPiAtCQkJcmV0dXJuIE1IWl8xOV8y Owo+IC0JCWVsc2UKPiAtCQkJcmV0dXJuIE1IWl8xMjsKPiAtCX0gZWxzZSB7Cj4gLQkJcmV0dXJu IE1IWl8xMl81Owo+ICsKPiArCQlyZXR1cm4gZnJlcTsKPiArCX0gZWxzZSBpZiAoSU5URUxfR0VO KHVuY29yZS0+aTkxNSkgPD0gMTIpIHsKPiArCQl1MzIgY3RjX3JlZyA9IGludGVsX3VuY29yZV9y ZWFkKHVuY29yZSwgQ1RDX01PREUpOwo+ICsJCXUzMiBmcmVxID0gMDsKPiArCj4gKwkJLyoKPiAr CQkgKiBGaXJzdCBmaWd1cmUgb3V0IHRoZSByZWZlcmVuY2UgZnJlcXVlbmN5LiBUaGVyZSBhcmUg MiB3YXlzCj4gKwkJICogd2UgY2FuIGNvbXB1dGUgdGhlIGZyZXF1ZW5jeSwgZWl0aGVyIHRocm91 Z2ggdGhlCj4gKwkJICogVElNRVNUQU1QX09WRVJSSURFIHJlZ2lzdGVyIG9yIHRocm91Z2ggUlBN X0NPTkZJRy4gQ1RDX01PREUKPiArCQkgKiB0ZWxscyB1cyB3aGljaCBvbmUgd2Ugc2hvdWxkIHVz ZS4KPiArCQkgKi8KPiArCQlpZiAoKGN0Y19yZWcgJiBDVENfU09VUkNFX1BBUkFNRVRFUl9NQVNL KSA9PSBDVENfU09VUkNFX0RJVklERV9MT0dJQykgewo+ICsJCQlmcmVxID0gcmVhZF9yZWZlcmVu Y2VfdHNfZnJlcSh1bmNvcmUpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCXUzMiBjMCA9IGludGVsX3Vu Y29yZV9yZWFkKHVuY29yZSwgUlBNX0NPTkZJRzApOwo+ICsKPiArCQkJaWYgKElOVEVMX0dFTih1 bmNvcmUtPmk5MTUpIDw9IDEwKQo+ICsJCQkJZnJlcSA9IGdlbjEwX2dldF9jcnlzdGFsX2Nsb2Nr X2ZyZXEodW5jb3JlLCBjMCk7Cj4gKwkJCWVsc2UKPiArCQkJCWZyZXEgPSBnZW4xMV9nZXRfY3J5 c3RhbF9jbG9ja19mcmVxKHVuY29yZSwgYzApOwo+ICsKPiArCQkJLyoKPiArCQkJICogTm93IGZp Z3VyZSBvdXQgaG93IHRoZSBjb21tYW5kIHN0cmVhbSdzIHRpbWVzdGFtcAo+ICsJCQkgKiByZWdp c3RlciBpbmNyZW1lbnRzIGZyb20gdGhpcyBmcmVxdWVuY3kgKGl0IG1pZ2h0Cj4gKwkJCSAqIGlu Y3JlbWVudCBvbmx5IGV2ZXJ5IGZldyBjbG9jayBjeWNsZSkuCj4gKwkJCSAqLwo+ICsJCQlmcmVx ID4+PSAzIC0gKChjMCAmIEdFTjEwX1JQTV9DT05GSUcwX0NUQ19TSElGVF9QQVJBTUVURVJfTUFT SykgPj4KPiArCQkJCSAgICAgIEdFTjEwX1JQTV9DT05GSUcwX0NUQ19TSElGVF9QQVJBTUVURVJf U0hJRlQpOwo+ICsJCX0KPiArCj4gKwkJcmV0dXJuIGZyZXE7Cj4gIAl9Cj4gKwo+ICsJTUlTU0lO R19DQVNFKCJVbmtub3duIGdlbiwgdW5hYmxlIHRvIHJlYWQgY29tbWFuZCBzdHJlYW1lciB0aW1l c3RhbXAgZnJlcXVlbmN5XG4iKTsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVs X2d0X2luaXRfY2xvY2tfZnJlcXVlbmN5KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gQEAgLTQzLDIw ICsxNTUsMjcgQEAgdm9pZCBpbnRlbF9ndF9pbml0X2Nsb2NrX2ZyZXF1ZW5jeShzdHJ1Y3QgaW50 ZWxfZ3QgKmd0KQo+ICAJICogTm90ZSB0aGF0IG9uIGdlbjExKywgdGhlIGNsb2NrIGZyZXF1ZW5j eSBtYXkgYmUgcmVjb25maWd1cmVkLgo+ICAJICogV2UgZG8gbm90LCBhbmQgd2UgYXNzdW1lIG5v Ym9keSBlbHNlIGRvZXMuCj4gIAkgKi8KPiAtCWd0LT5jbG9ja19mcmVxdWVuY3kgPSByZWFkX2Ns b2NrX2ZyZXF1ZW5jeShndCk7Cj4gKwlndC0+Y2xvY2tfZnJlcXVlbmN5ID0gcmVhZF9jbG9ja19m cmVxdWVuY3koZ3QtPnVuY29yZSk7Cj4gKwlpZiAoZ3QtPmNsb2NrX2ZyZXF1ZW5jeSkKPiArCQln dC0+Y2xvY2tfcGVyaW9kX25zID0gaW50ZWxfZ3RfY2xvY2tfaW50ZXJ2YWxfdG9fbnMoZ3QsIDEp Owo+ICsKPiAgCUdUX1RSQUNFKGd0LAo+IC0JCSAiVXNpbmcgY2xvY2sgZnJlcXVlbmN5OiAlZGtI elxuIiwKPiAtCQkgZ3QtPmNsb2NrX2ZyZXF1ZW5jeSAvIDEwMDApOwo+ICsJCSAiVXNpbmcgY2xv Y2sgZnJlcXVlbmN5OiAlZGtIeiwgcGVyaW9kOiAlZG5zLCB3cmFwOiAlbGxkbXNcbiIsCj4gKwkJ IGd0LT5jbG9ja19mcmVxdWVuY3kgLyAxMDAwLAo+ICsJCSBndC0+Y2xvY2tfcGVyaW9kX25zLAo+ ICsJCSBkaXZfdTY0KG11bF91MzJfdTMyKGd0LT5jbG9ja19wZXJpb2RfbnMsIFMzMl9NQVgpLAo+ ICsJCQkgVVNFQ19QRVJfU0VDKSk7Cj4gKwo+ICB9Cj4gIAo+ICAjaWYgSVNfRU5BQkxFRChDT05G SUdfRFJNX0k5MTVfREVCVUdfR0VNKQo+ICB2b2lkIGludGVsX2d0X2NoZWNrX2Nsb2NrX2ZyZXF1 ZW5jeShjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ICB7Cj4gLQlpZiAoZ3QtPmNsb2NrX2Zy ZXF1ZW5jeSAhPSByZWFkX2Nsb2NrX2ZyZXF1ZW5jeShndCkpIHsKPiArCWlmIChndC0+Y2xvY2tf ZnJlcXVlbmN5ICE9IHJlYWRfY2xvY2tfZnJlcXVlbmN5KGd0LT51bmNvcmUpKSB7Cj4gIAkJZGV2 X2VycihndC0+aTkxNS0+ZHJtLmRldiwKPiAgCQkJIkdUIGNsb2NrIGZyZXF1ZW5jeSBjaGFuZ2Vk LCB3YXMgJXVIeiwgbm93ICV1SHohXG4iLAo+ICAJCQlndC0+Y2xvY2tfZnJlcXVlbmN5LAo+IC0J CQlyZWFkX2Nsb2NrX2ZyZXF1ZW5jeShndCkpOwo+ICsJCQlyZWFkX2Nsb2NrX2ZyZXF1ZW5jeShn dC0+dW5jb3JlKSk7Cj4gIAl9Cj4gIH0KPiAgI2VuZGlmCj4gQEAgLTY2LDI2ICsxODUsMjQgQEAg c3RhdGljIHU2NCBkaXZfdTY0X3JvdW5kdXAodTY0IG5vbSwgdTMyIGRlbikKPiAgCXJldHVybiBk aXZfdTY0KG5vbSArIGRlbiAtIDEsIGRlbik7Cj4gIH0KPiAgCj4gLXUzMiBpbnRlbF9ndF9jbG9j a19pbnRlcnZhbF90b19ucyhjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCB1MzIgY291bnQpCj4g K3U2NCBpbnRlbF9ndF9jbG9ja19pbnRlcnZhbF90b19ucyhjb25zdCBzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0LCB1NjQgY291bnQpCj4gIHsKPiAtCXJldHVybiBkaXZfdTY0X3JvdW5kdXAobXVsX3UzMl91 MzIoY291bnQsIDEwMDAgKiAxMDAwICogMTAwMCksCj4gLQkJCSAgICAgICBndC0+Y2xvY2tfZnJl cXVlbmN5KTsKPiArCXJldHVybiBkaXZfdTY0X3JvdW5kdXAoY291bnQgKiBOU0VDX1BFUl9TRUMs IGd0LT5jbG9ja19mcmVxdWVuY3kpOwo+ICB9Cj4gIAo+IC11MzIgaW50ZWxfZ3RfcG1faW50ZXJ2 YWxfdG9fbnMoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCwgdTMyIGNvdW50KQo+ICt1NjQgaW50 ZWxfZ3RfcG1faW50ZXJ2YWxfdG9fbnMoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCwgdTY0IGNv dW50KQo+ICB7Cj4gIAlyZXR1cm4gaW50ZWxfZ3RfY2xvY2tfaW50ZXJ2YWxfdG9fbnMoZ3QsIDE2 ICogY291bnQpOwo+ICB9Cj4gIAo+IC11MzIgaW50ZWxfZ3RfbnNfdG9fY2xvY2tfaW50ZXJ2YWwo Y29uc3Qgc3RydWN0IGludGVsX2d0ICpndCwgdTMyIG5zKQo+ICt1NjQgaW50ZWxfZ3RfbnNfdG9f Y2xvY2tfaW50ZXJ2YWwoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCwgdTY0IG5zKQo+ICB7Cj4g LQlyZXR1cm4gZGl2X3U2NF9yb3VuZHVwKG11bF91MzJfdTMyKGd0LT5jbG9ja19mcmVxdWVuY3ks IG5zKSwKPiAtCQkJICAgICAgIDEwMDAgKiAxMDAwICogMTAwMCk7Cj4gKwlyZXR1cm4gZGl2X3U2 NF9yb3VuZHVwKGd0LT5jbG9ja19mcmVxdWVuY3kgKiBucywgTlNFQ19QRVJfU0VDKTsKPiAgfQo+ ICAKPiAtdTMyIGludGVsX2d0X25zX3RvX3BtX2ludGVydmFsKGNvbnN0IHN0cnVjdCBpbnRlbF9n dCAqZ3QsIHUzMiBucykKPiArdTY0IGludGVsX2d0X25zX3RvX3BtX2ludGVydmFsKGNvbnN0IHN0 cnVjdCBpbnRlbF9ndCAqZ3QsIHU2NCBucykKPiAgewo+IC0JdTMyIHZhbDsKPiArCXU2NCB2YWw7 Cj4gIAo+ICAJLyoKPiAgCSAqIE1ha2UgdGhlc2UgYSBtdWx0aXBsZSBvZiBtYWdpYyAyNSB0byBh dm9pZCBTTkIgKGVnLiBEZWxsIFhQUwo+IEBAIC05NCw5ICsyMTEsOSBAQCB1MzIgaW50ZWxfZ3Rf bnNfdG9fcG1faW50ZXJ2YWwoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCwgdTMyIG5zKQo+ICAJ ICogRUkvdGhyZXNob2xkcyBhcmUgImJhZCIsIGxlYWRpbmcgdG8gYSB2ZXJ5IHNsdWdnaXNoIG9y IGV2ZW4KPiAgCSAqIGZyb3plbiBtYWNoaW5lLgo+ICAJICovCj4gLQl2YWwgPSBESVZfUk9VTkRf VVAoaW50ZWxfZ3RfbnNfdG9fY2xvY2tfaW50ZXJ2YWwoZ3QsIG5zKSwgMTYpOwo+ICsJdmFsID0g ZGl2X3U2NF9yb3VuZHVwKGludGVsX2d0X25zX3RvX2Nsb2NrX2ludGVydmFsKGd0LCBucyksIDE2 KTsKPiAgCWlmIChJU19HRU4oZ3QtPmk5MTUsIDYpKQo+IC0JCXZhbCA9IHJvdW5kdXAodmFsLCAy NSk7Cj4gKwkJdmFsID0gZGl2X3U2NF9yb3VuZHVwKHZhbCwgMjUpICogMjU7Cj4gIAo+ICAJcmV0 dXJuIHZhbDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9ndF9jbG9ja191dGlscy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfY2xv Y2tfdXRpbHMuaAo+IGluZGV4IGY3OTNjODlmMmNiZC4uOGIwM2U5N2E4NWRmIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X2Nsb2NrX3V0aWxzLmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF9jbG9ja191dGlscy5oCj4gQEAgLTE4 LDEwICsxOCwxMCBAQCB2b2lkIGludGVsX2d0X2NoZWNrX2Nsb2NrX2ZyZXF1ZW5jeShjb25zdCBz dHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKPiAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2d0X2NoZWNr X2Nsb2NrX2ZyZXF1ZW5jeShjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0KSB7fQo+ICAjZW5kaWYK PiAgCj4gLXUzMiBpbnRlbF9ndF9jbG9ja19pbnRlcnZhbF90b19ucyhjb25zdCBzdHJ1Y3QgaW50 ZWxfZ3QgKmd0LCB1MzIgY291bnQpOwo+IC11MzIgaW50ZWxfZ3RfcG1faW50ZXJ2YWxfdG9fbnMo Y29uc3Qgc3RydWN0IGludGVsX2d0ICpndCwgdTMyIGNvdW50KTsKPiArdTY0IGludGVsX2d0X2Ns b2NrX2ludGVydmFsX3RvX25zKGNvbnN0IHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHU2NCBjb3VudCk7 Cj4gK3U2NCBpbnRlbF9ndF9wbV9pbnRlcnZhbF90b19ucyhjb25zdCBzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0LCB1NjQgY291bnQpOwo+ICAKPiAtdTMyIGludGVsX2d0X25zX3RvX2Nsb2NrX2ludGVydmFs KGNvbnN0IHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHUzMiBucyk7Cj4gLXUzMiBpbnRlbF9ndF9uc190 b19wbV9pbnRlcnZhbChjb25zdCBzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCB1MzIgbnMpOwo+ICt1NjQg aW50ZWxfZ3RfbnNfdG9fY2xvY2tfaW50ZXJ2YWwoY29uc3Qgc3RydWN0IGludGVsX2d0ICpndCwg dTY0IG5zKTsKPiArdTY0IGludGVsX2d0X25zX3RvX3BtX2ludGVydmFsKGNvbnN0IHN0cnVjdCBp bnRlbF9ndCAqZ3QsIHU2NCBucyk7Cj4gIAo+ICAjZW5kaWYgLyogX19JTlRFTF9HVF9DTE9DS19V VElMU19IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Z3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKPiBp bmRleCBjN2JkZTUyOWZlYWIuLmE4M2QzZTE4MjU0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAo+IEBAIC03NSw2ICs3NSw3IEBAIHN0cnVjdCBpbnRlbF9n dCB7Cj4gIAlpbnRlbF93YWtlcmVmX3QgYXdha2U7Cj4gIAo+ICAJdTMyIGNsb2NrX2ZyZXF1ZW5j eTsKPiArCXUzMiBjbG9ja19wZXJpb2RfbnM7Cj4gIAo+ICAJc3RydWN0IGludGVsX2xsYyBsbGM7 Cj4gIAlzdHJ1Y3QgaW50ZWxfcmM2IHJjNjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF9lbmdpbmVfcG0uYwo+IGluZGV4IGQ4ODUwNGE1ZDY5Yy4uY2EwODA0NDU2OTVlIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9wbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX3BtLmMKPiBA QCAtMTU2LDcgKzE1Niw3IEBAIHN0YXRpYyBpbnQgX19saXZlX2VuZ2luZV90aW1lc3RhbXBzKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCWRfcmluZyA9IHRyaWZpbHRlcihzX3Jp bmcpOwo+ICAJZF9jdHggPSB0cmlmaWx0ZXIoc19jdHgpOwo+ICAKPiAtCXByX2luZm8oIiVzIGVs YXBzZWQ6JWxsZG5zLCBDVFhfVElNRVNUQU1QOiVkbnMsIFJJTkdfVElNRVNUQU1QOiVkbnNcbiIs Cj4gKwlwcl9pbmZvKCIlcyBlbGFwc2VkOiVsbGRucywgQ1RYX1RJTUVTVEFNUDolbGxkbnMsIFJJ TkdfVElNRVNUQU1QOiVsbGRuc1xuIiwKPiAgCQllbmdpbmUtPm5hbWUsIGR0LAo+ICAJCWludGVs X2d0X2Nsb2NrX2ludGVydmFsX3RvX25zKGVuZ2luZS0+Z3QsIGRfY3R4KSwKPiAgCQlpbnRlbF9n dF9jbG9ja19pbnRlcnZhbF90b19ucyhlbmdpbmUtPmd0LCBkX3JpbmcpKTsKPiBAQCAtMTcxLDEx ICsxNzEsMTEgQEAgc3RhdGljIGludCBfX2xpdmVfZW5naW5lX3RpbWVzdGFtcHMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJZF9yaW5nID0gdHJpZmlsdGVyKHNfcmluZyk7Cj4g IAlkX2N0eCA9IHRyaWZpbHRlcihzX2N0eCk7Cj4gIAo+IC0JZF9jdHggKj0gUlVOVElNRV9JTkZP KGVuZ2luZS0+aTkxNSktPmNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfaHo7Cj4gKwlkX2N0eCAqPSBl bmdpbmUtPmd0LT5jbG9ja19mcmVxdWVuY3k7Cj4gIAlpZiAoSVNfSUNFTEFLRShlbmdpbmUtPmk5 MTUpKQo+ICAJCWRfcmluZyAqPSAxMjUwMDAwMDsgLyogRml4ZWQgODBucyBmb3IgaWNsIGN0eCB0 aW1lc3RhbXA/ICovCj4gIAllbHNlCj4gLQkJZF9yaW5nICo9IFJVTlRJTUVfSU5GTyhlbmdpbmUt Pmk5MTUpLT5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2h6Owo+ICsJCWRfcmluZyAqPSBlbmdpbmUt Pmd0LT5jbG9ja19mcmVxdWVuY3k7Cj4gIAo+ICAJaWYgKDMgKiBkX2N0eCA+IDQgKiBkX3Jpbmcg fHwgNCAqIGRfY3R4IDwgMyAqIGRfcmluZykgewo+ICAJCXByX2VycigiJXMgTWlzbWF0Y2ggYmV0 d2VlbiByaW5nIGFuZCBjb250ZXh0IHRpbWVzdGFtcHMhXG4iLAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9ndF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfZ3RfcG0uYwo+IGluZGV4IDYxODBhNDdjMWI1MS4uNWQ5MTFmNzI0ZWJl IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2d0X3BtLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9ndF9wbS5jCj4gQEAgLTcx LDcgKzcxLDcgQEAgc3RhdGljIGludCBsaXZlX2d0X2Nsb2Nrcyh2b2lkICphcmcpCj4gIAllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKPiAgCWludCBlcnIgPSAwOwo+ICAKPiAtCWlmICghUlVOVElN RV9JTkZPKGd0LT5pOTE1KS0+Y3NfdGltZXN0YW1wX2ZyZXF1ZW5jeV9oeikgeyAvKiB1bmtub3du ICovCj4gKwlpZiAoIWd0LT5jbG9ja19mcmVxdWVuY3kpIHsgLyogdW5rbm93biAqLwo+ICAJCXBy X2luZm8oIkNTX1RJTUVTVEFNUCBmcmVxdWVuY3kgdW5rbm93blxuIik7Cj4gIAkJcmV0dXJuIDA7 Cj4gIAl9Cj4gQEAgLTExMiwxMiArMTEyLDEyIEBAIHN0YXRpYyBpbnQgbGl2ZV9ndF9jbG9ja3Mo dm9pZCAqYXJnKQo+ICAKPiAgCQltZWFzdXJlX2Nsb2NrcyhlbmdpbmUsICZjeWNsZXMsICZkdCk7 Cj4gIAo+IC0JCXRpbWUgPSBpOTE1X2NzX3RpbWVzdGFtcF90aWNrc190b19ucyhlbmdpbmUtPmk5 MTUsIGN5Y2xlcyk7Cj4gLQkJZXhwZWN0ZWQgPSBpOTE1X2NzX3RpbWVzdGFtcF9uc190b190aWNr cyhlbmdpbmUtPmk5MTUsIGR0KTsKPiArCQl0aW1lID0gaW50ZWxfZ3RfY2xvY2tfaW50ZXJ2YWxf dG9fbnMoZW5naW5lLT5ndCwgY3ljbGVzKTsKPiArCQlleHBlY3RlZCA9IGludGVsX2d0X25zX3Rv X2Nsb2NrX2ludGVydmFsKGVuZ2luZS0+Z3QsIGR0KTsKPiAgCj4gIAkJcHJfaW5mbygiJXM6IFRJ TUVTVEFNUCAlZCBjeWNsZXMgWyVsbGRuc10gaW4gJWxsZG5zIFslZCBjeWNsZXNdLCB1c2luZyBD UyBjbG9jayBmcmVxdWVuY3kgb2YgJXVLSHpcbiIsCj4gIAkJCWVuZ2luZS0+bmFtZSwgY3ljbGVz LCB0aW1lLCBkdCwgZXhwZWN0ZWQsCj4gLQkJCVJVTlRJTUVfSU5GTyhlbmdpbmUtPmk5MTUpLT5j c190aW1lc3RhbXBfZnJlcXVlbmN5X2h6IC8gMTAwMCk7Cj4gKwkJCWVuZ2luZS0+Z3QtPmNsb2Nr X2ZyZXF1ZW5jeSAvIDEwMDApOwo+ICAKPiAgCQlpZiAoOSAqIHRpbWUgPCA4ICogZHQgfHwgOCAq IHRpbWUgPiA5ICogZHQpIHsKPiAgCQkJcHJfZXJyKCIlczogQ1MgdGlja3MgZGlkIG5vdCBtYXRj aCB3YWxsdGltZSFcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBj NzIxNjBlMzcwMmYuLjczMzI0NzhhM2RkNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gQEAgLTYzNSwyNyArNjM1LDI3IEBAIHN0YXRpYyBpbnQgaTkxNV9mcmVxdWVuY3lf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlzZXFfcHJpbnRmKG0s ICJSUERFQ0xJTUlUOiAweCUwOHhcbiIsIHJwZGVjbGltaXQpOwo+ICAJCXNlcV9wcmludGYobSwg IlJQTlNXUkVROiAlZE1IelxuIiwgcmVxZik7Cj4gIAkJc2VxX3ByaW50ZihtLCAiQ0FHRjogJWRN SHpcbiIsIGNhZ2YpOwo+IC0JCXNlcV9wcmludGYobSwgIlJQIENVUiBVUCBFSTogJWQgKCVkbnMp XG4iLAo+ICsJCXNlcV9wcmludGYobSwgIlJQIENVUiBVUCBFSTogJWQgKCVsbGRucylcbiIsCj4g IAkJCSAgIHJwdXBlaSwKPiAgCQkJICAgaW50ZWxfZ3RfcG1faW50ZXJ2YWxfdG9fbnMoJmRldl9w cml2LT5ndCwgcnB1cGVpKSk7Cj4gLQkJc2VxX3ByaW50ZihtLCAiUlAgQ1VSIFVQOiAlZCAoJWR1 bilcbiIsCj4gKwkJc2VxX3ByaW50ZihtLCAiUlAgQ1VSIFVQOiAlZCAoJWxsZHVuKVxuIiwKPiAg CQkJICAgcnBjdXJ1cCwKPiAgCQkJICAgaW50ZWxfZ3RfcG1faW50ZXJ2YWxfdG9fbnMoJmRldl9w cml2LT5ndCwgcnBjdXJ1cCkpOwo+IC0JCXNlcV9wcmludGYobSwgIlJQIFBSRVYgVVA6ICVkICgl ZG5zKVxuIiwKPiArCQlzZXFfcHJpbnRmKG0sICJSUCBQUkVWIFVQOiAlZCAoJWxsZG5zKVxuIiwK PiAgCQkJICAgcnBwcmV2dXAsCj4gIAkJCSAgIGludGVsX2d0X3BtX2ludGVydmFsX3RvX25zKCZk ZXZfcHJpdi0+Z3QsIHJwcHJldnVwKSk7Cj4gIAkJc2VxX3ByaW50ZihtLCAiVXAgdGhyZXNob2xk OiAlZCUlXG4iLAo+ICAJCQkgICBycHMtPnBvd2VyLnVwX3RocmVzaG9sZCk7Cj4gIAo+IC0JCXNl cV9wcmludGYobSwgIlJQIENVUiBET1dOIEVJOiAlZCAoJWRucylcbiIsCj4gKwkJc2VxX3ByaW50 ZihtLCAiUlAgQ1VSIERPV04gRUk6ICVkICglbGxkbnMpXG4iLAo+ICAJCQkgICBycGRvd25laSwK PiAgCQkJICAgaW50ZWxfZ3RfcG1faW50ZXJ2YWxfdG9fbnMoJmRldl9wcml2LT5ndCwKPiAgCQkJ CQkJICAgICAgcnBkb3duZWkpKTsKPiAtCQlzZXFfcHJpbnRmKG0sICJSUCBDVVIgRE9XTjogJWQg KCVkbnMpXG4iLAo+ICsJCXNlcV9wcmludGYobSwgIlJQIENVUiBET1dOOiAlZCAoJWxsZG5zKVxu IiwKPiAgCQkJICAgcnBjdXJkb3duLAo+ICAJCQkgICBpbnRlbF9ndF9wbV9pbnRlcnZhbF90b19u cygmZGV2X3ByaXYtPmd0LAo+ICAJCQkJCQkgICAgICBycGN1cmRvd24pKTsKPiAtCQlzZXFfcHJp bnRmKG0sICJSUCBQUkVWIERPV046ICVkICglZG5zKVxuIiwKPiArCQlzZXFfcHJpbnRmKG0sICJS UCBQUkVWIERPV046ICVkICglbGxkbnMpXG4iLAo+ICAJCQkgICBycHByZXZkb3duLAo+ICAJCQkg ICBpbnRlbF9ndF9wbV9pbnRlcnZhbF90b19ucygmZGV2X3ByaXYtPmd0LAo+ICAJCQkJCQkgICAg ICBycHByZXZkb3duKSk7Cj4gQEAgLTg2Miw4ICs4NjIsOSBAQCBzdGF0aWMgaW50IGk5MTVfZW5n aW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAkJICAgeWVzbm8o aTkxNS0+Z3QuYXdha2UpLAo+ICAJCSAgIGF0b21pY19yZWFkKCZpOTE1LT5ndC53YWtlcmVmLmNv dW50KSwKPiAgCQkgICBrdGltZV90b19tcyhpbnRlbF9ndF9nZXRfYXdha2VfdGltZSgmaTkxNS0+ Z3QpKSk7Cj4gLQlzZXFfcHJpbnRmKG0sICJDUyB0aW1lc3RhbXAgZnJlcXVlbmN5OiAldSBIelxu IiwKPiAtCQkgICBSVU5USU1FX0lORk8oaTkxNSktPmNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfaHop Owo+ICsJc2VxX3ByaW50ZihtLCAiQ1MgdGltZXN0YW1wIGZyZXF1ZW5jeTogJXUgSHosICVkIG5z XG4iLAo+ICsJCSAgIGk5MTUtPmd0LmNsb2NrX2ZyZXF1ZW5jeSwKPiArCQkgICBpOTE1LT5ndC5j bG9ja19wZXJpb2RfbnMpOwo+ICAKPiAgCXAgPSBkcm1fc2VxX2ZpbGVfcHJpbnRlcihtKTsKPiAg CWZvcl9lYWNoX3VhYmlfZW5naW5lKGVuZ2luZSwgaTkxNSkKPiBAQCAtOTQ5LDcgKzk1MCw3IEBA IGk5MTVfcGVyZl9ub2FfZGVsYXlfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIAkgKiBUaGlz IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgd2FpdHMgYXMgd2UncmUgZG9pbmcgdGltZXN0YW1wCj4g IAkgKiBkaWZmZXJlbmNlIG9uIHRoZSBDUyB3aXRoIG9ubHkgMzJiaXRzLgo+ICAJICovCj4gLQlp ZiAoaTkxNV9jc190aW1lc3RhbXBfbnNfdG9fdGlja3MoaTkxNSwgdmFsKSA+IFUzMl9NQVgpCj4g KwlpZiAoaW50ZWxfZ3RfbnNfdG9fY2xvY2tfaW50ZXJ2YWwoJmk5MTUtPmd0LCB2YWwpID4gVTMy X01BWCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAlhdG9taWM2NF9zZXQoJmk5MTUtPnBl cmYubm9hX3Byb2dyYW1taW5nX2RlbGF5LCB2YWwpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IGluZGV4IDRhOGZmMmE4OTlhNS4uZTM4YTEwZDVjMTI4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gQEAgLTIwMDMsMTYgKzIwMDMsNCBAQCBpOTE1X2NvaGVyZW50X21hcF90eXBlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJcmV0dXJuIEhBU19MTEMoaTkxNSkgPyBJ OTE1X01BUF9XQiA6IEk5MTVfTUFQX1dDOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW5saW5lIHU2NCBp OTE1X2NzX3RpbWVzdGFtcF9uc190b190aWNrcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwgdTY0IHZhbCkKPiAtewo+IC0JcmV0dXJuIERJVl9ST1VORF9VUF9VTEwodmFsICogUlVOVElN RV9JTkZPKGk5MTUpLT5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2h6LAo+IC0JCQkJMTAwMDAwMDAw MCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgdTY0IGk5MTVfY3NfdGltZXN0YW1wX3RpY2tz X3RvX25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1NjQgdmFsKQo+IC17Cj4gLQly ZXR1cm4gZGl2X3U2NCh2YWwgKiAxMDAwMDAwMDAwLAo+IC0JCSAgICAgICBSVU5USU1FX0lORk8o aTkxNSktPmNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfaHopOwo+IC19Cj4gLQo+ICAjZW5kaWYKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZXRwYXJhbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZXRwYXJhbS5jCj4gaW5kZXggZjk2MDMyYzYwYTEyLi43NWMz YmZjMjQ4NmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZXRwYXJh bS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZXRwYXJhbS5jCj4gQEAgLTE1 NCw3ICsxNTQsNyBAQCBpbnQgaTkxNV9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAo+ICAJCQlyZXR1cm4gLUVOT0RFVjsKPiAgCQlicmVhazsKPiAgCWNh c2UgSTkxNV9QQVJBTV9DU19USU1FU1RBTVBfRlJFUVVFTkNZOgo+IC0JCXZhbHVlID0gUlVOVElN RV9JTkZPKGk5MTUpLT5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2h6Owo+ICsJCXZhbHVlID0gaTkx NS0+Z3QuY2xvY2tfZnJlcXVlbmN5Owo+ICAJCWJyZWFrOwo+ICAJY2FzZSBJOTE1X1BBUkFNX01N QVBfR1RUX0NPSEVSRU5UOgo+ICAJCXZhbHVlID0gSU5URUxfSU5GTyhpOTE1KS0+aGFzX2NvaGVy ZW50X2dndHQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vy cm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggZDhj YWM0YzU4ODFmLi44YjE2M2VlMWI4NmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1 X2Vycm9yLmMKPiBAQCAtNDg1LDcgKzQ4NSw3IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2Nv bnRleHQoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiAgCQkJCWNvbnN0IGNo YXIgKmhlYWRlciwKPiAgCQkJCWNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0X2NvcmVkdW1w ICpjdHgpCj4gIHsKPiAtCWNvbnN0IHUzMiBwZXJpb2QgPSBSVU5USU1FX0lORk8obS0+aTkxNSkt PmNzX3RpbWVzdGFtcF9wZXJpb2RfbnM7Cj4gKwljb25zdCB1MzIgcGVyaW9kID0gbS0+aTkxNS0+ Z3QuY2xvY2tfcGVyaW9kX25zOwo+ICAKPiAgCWVycl9wcmludGYobSwgIiVzJXNbJWRdIHByaW8g JWQsIGd1aWx0eSAlZCBhY3RpdmUgJWQsIHJ1bnRpbWUgdG90YWwgJWxsdW5zLCBhdmcgJWxsdW5z XG4iLAo+ICAJCSAgIGhlYWRlciwgY3R4LT5jb21tLCBjdHgtPnBpZCwgY3R4LT5zY2hlZF9hdHRy LnByaW9yaXR5LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gaW5kZXggZjY1YzMyYmQ5NzBl Li4xMTJiYTVmMmNlOTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwo+IEBAIC0yMDEs NiArMjAxLDcgQEAKPiAgI2luY2x1ZGUgImd0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uLmgi Cj4gICNpbmNsdWRlICJndC9pbnRlbF9ncHVfY29tbWFuZHMuaCIKPiAgI2luY2x1ZGUgImd0L2lu dGVsX2d0LmgiCj4gKyNpbmNsdWRlICJndC9pbnRlbF9ndF9jbG9ja191dGlscy5oIgo+ICAjaW5j bHVkZSAiZ3QvaW50ZWxfbHJjLmgiCj4gICNpbmNsdWRlICJndC9pbnRlbF9yaW5nLmgiCj4gIAo+ IEBAIC0xNjM3LDcgKzE2MzgsOCBAQCBzdGF0aWMgaW50IGFsbG9jX25vYV93YWl0KHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq Ym87Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCWNvbnN0IHU2NCBkZWxheV90aWNrcyA9 IDB4ZmZmZmZmZmZmZmZmZmZmZiAtCj4gLQkJaTkxNV9jc190aW1lc3RhbXBfbnNfdG9fdGlja3Mo aTkxNSwgYXRvbWljNjRfcmVhZCgmc3RyZWFtLT5wZXJmLT5ub2FfcHJvZ3JhbW1pbmdfZGVsYXkp KTsKPiArCQlpbnRlbF9ndF9uc190b19jbG9ja19pbnRlcnZhbChzdHJlYW0tPnBlcmYtPmk5MTUt PmdndHQudm0uZ3QsCj4gKwkJCQkJICAgICAgYXRvbWljNjRfcmVhZCgmc3RyZWFtLT5wZXJmLT5u b2FfcHJvZ3JhbW1pbmdfZGVsYXkpKTsKPiAgCWNvbnN0IHUzMiBiYXNlID0gc3RyZWFtLT5lbmdp bmUtPm1taW9fYmFzZTsKPiAgI2RlZmluZSBDU19HUFIoeCkgR0VOOF9SSU5HX0NTX0dQUihiYXNl LCB4KQo+ICAJdTMyICpiYXRjaCwgKnRzMCwgKmNzLCAqanVtcDsKPiBAQCAtMzUxOCw3ICszNTIw LDggQEAgaTkxNV9wZXJmX29wZW5faW9jdGxfbG9ja2VkKHN0cnVjdCBpOTE1X3BlcmYgKnBlcmYs Cj4gIAo+ICBzdGF0aWMgdTY0IG9hX2V4cG9uZW50X3RvX25zKHN0cnVjdCBpOTE1X3BlcmYgKnBl cmYsIGludCBleHBvbmVudCkKPiAgewo+IC0JcmV0dXJuIGk5MTVfY3NfdGltZXN0YW1wX3RpY2tz X3RvX25zKHBlcmYtPmk5MTUsIDJVTEwgPDwgZXhwb25lbnQpOwo+ICsJcmV0dXJuIGludGVsX2d0 X2Nsb2NrX2ludGVydmFsX3RvX25zKHBlcmYtPmk5MTUtPmdndHQudm0uZ3QsCj4gKwkJCQkJICAg ICAyVUxMIDw8IGV4cG9uZW50KTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTQzNzIsOCArNDM3NSw4 IEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g IAlpZiAocGVyZi0+b3BzLmVuYWJsZV9tZXRyaWNfc2V0KSB7Cj4gIAkJbXV0ZXhfaW5pdCgmcGVy Zi0+bG9jayk7Cj4gIAo+IC0JCW9hX3NhbXBsZV9yYXRlX2hhcmRfbGltaXQgPQo+IC0JCQlSVU5U SU1FX0lORk8oaTkxNSktPmNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfaHogLyAyOwo+ICsJCS8qIENo b29zZSBhIHJlcHJlc2VudGF0aXZlIGxpbWl0ICovCj4gKwkJb2Ffc2FtcGxlX3JhdGVfaGFyZF9s aW1pdCA9IGk5MTUtPmd0LmNsb2NrX2ZyZXF1ZW5jeSAvIDI7Cj4gIAo+ICAJCW11dGV4X2luaXQo JnBlcmYtPm1ldHJpY3NfbG9jayk7Cj4gIAkJaWRyX2luaXRfYmFzZSgmcGVyZi0+bWV0cmljc19p ZHIsIDEpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2Vf aW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IGluZGV4 IGVmNzY3ZjA0YzM3Yy4uZjJkNWFlNTkwODFlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZXZpY2VfaW5mby5jCj4gQEAgLTExNywxNTAgKzExNyw2IEBAIHZvaWQgaW50ZWxfZGV2 aWNlX2luZm9fcHJpbnRfcnVudGltZShjb25zdCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICpp bmZvLAo+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCj4gIHsKPiAgCWRybV9wcmlu dGYocCwgInJhd2NsayByYXRlOiAldSBrSHpcbiIsIGluZm8tPnJhd2Nsa19mcmVxKTsKPiAtCWRy bV9wcmludGYocCwgIkNTIHRpbWVzdGFtcCBmcmVxdWVuY3k6ICV1IEh6XG4iLAo+IC0JCSAgIGlu Zm8tPmNzX3RpbWVzdGFtcF9mcmVxdWVuY3lfaHopOwo+IC19Cj4gLQo+IC1zdGF0aWMgdTMyIHJl YWRfcmVmZXJlbmNlX3RzX2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ IC17Cj4gLQl1MzIgdHNfb3ZlcnJpZGUgPSBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVu Y29yZSwKPiAtCQkJCQkgICAgR0VOOV9USU1FU1RBTVBfT1ZFUlJJREUpOwo+IC0JdTMyIGJhc2Vf ZnJlcSwgZnJhY19mcmVxOwo+IC0KPiAtCWJhc2VfZnJlcSA9ICgodHNfb3ZlcnJpZGUgJiBHRU45 X1RJTUVTVEFNUF9PVkVSUklERV9VU19DT1VOVEVSX0RJVklERVJfTUFTSykgPj4KPiAtCQkgICAg IEdFTjlfVElNRVNUQU1QX09WRVJSSURFX1VTX0NPVU5URVJfRElWSURFUl9TSElGVCkgKyAxOwo+ IC0JYmFzZV9mcmVxICo9IDEwMDAwMDA7Cj4gLQo+IC0JZnJhY19mcmVxID0gKCh0c19vdmVycmlk ZSAmCj4gLQkJICAgICAgR0VOOV9USU1FU1RBTVBfT1ZFUlJJREVfVVNfQ09VTlRFUl9ERU5PTUlO QVRPUl9NQVNLKSA+Pgo+IC0JCSAgICAgR0VOOV9USU1FU1RBTVBfT1ZFUlJJREVfVVNfQ09VTlRF Ul9ERU5PTUlOQVRPUl9TSElGVCk7Cj4gLQlmcmFjX2ZyZXEgPSAxMDAwMDAwIC8gKGZyYWNfZnJl cSArIDEpOwo+IC0KPiAtCXJldHVybiBiYXNlX2ZyZXEgKyBmcmFjX2ZyZXE7Cj4gLX0KPiAtCj4g LXN0YXRpYyB1MzIgZ2VuMTBfZ2V0X2NyeXN0YWxfY2xvY2tfZnJlcShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJdTMyIHJwbV9jb25maWdfcmVnKQo+IC17Cj4gLQl1 MzIgZjE5XzJfbWh6ID0gMTkyMDAwMDA7Cj4gLQl1MzIgZjI0X21oeiA9IDI0MDAwMDAwOwo+IC0J dTMyIGNyeXN0YWxfY2xvY2sgPSAocnBtX2NvbmZpZ19yZWcgJgo+IC0JCQkgICAgIEdFTjlfUlBN X0NPTkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRX01BU0spID4+Cj4gLQkJCSAgICBHRU45X1JQTV9D T05GSUcwX0NSWVNUQUxfQ0xPQ0tfRlJFUV9TSElGVDsKPiAtCj4gLQlzd2l0Y2ggKGNyeXN0YWxf Y2xvY2spIHsKPiAtCWNhc2UgR0VOOV9SUE1fQ09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFfMTlf Ml9NSFo6Cj4gLQkJcmV0dXJuIGYxOV8yX21oejsKPiAtCWNhc2UgR0VOOV9SUE1fQ09ORklHMF9D UllTVEFMX0NMT0NLX0ZSRVFfMjRfTUhaOgo+IC0JCXJldHVybiBmMjRfbWh6Owo+IC0JZGVmYXVs dDoKPiAtCQlNSVNTSU5HX0NBU0UoY3J5c3RhbF9jbG9jayk7Cj4gLQkJcmV0dXJuIDA7Cj4gLQl9 Cj4gLX0KPiAtCj4gLXN0YXRpYyB1MzIgZ2VuMTFfZ2V0X2NyeXN0YWxfY2xvY2tfZnJlcShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJdTMyIHJwbV9jb25maWdfcmVn KQo+IC17Cj4gLQl1MzIgZjE5XzJfbWh6ID0gMTkyMDAwMDA7Cj4gLQl1MzIgZjI0X21oeiA9IDI0 MDAwMDAwOwo+IC0JdTMyIGYyNV9taHogPSAyNTAwMDAwMDsKPiAtCXUzMiBmMzhfNF9taHogPSAz ODQwMDAwMDsKPiAtCXUzMiBjcnlzdGFsX2Nsb2NrID0gKHJwbV9jb25maWdfcmVnICYKPiAtCQkJ ICAgICBHRU4xMV9SUE1fQ09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFfTUFTSykgPj4KPiAtCQkJ ICAgIEdFTjExX1JQTV9DT05GSUcwX0NSWVNUQUxfQ0xPQ0tfRlJFUV9TSElGVDsKPiAtCj4gLQlz d2l0Y2ggKGNyeXN0YWxfY2xvY2spIHsKPiAtCWNhc2UgR0VOMTFfUlBNX0NPTkZJRzBfQ1JZU1RB TF9DTE9DS19GUkVRXzI0X01IWjoKPiAtCQlyZXR1cm4gZjI0X21oejsKPiAtCWNhc2UgR0VOMTFf UlBNX0NPTkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRXzE5XzJfTUhaOgo+IC0JCXJldHVybiBmMTlf Ml9taHo7Cj4gLQljYXNlIEdFTjExX1JQTV9DT05GSUcwX0NSWVNUQUxfQ0xPQ0tfRlJFUV8zOF80 X01IWjoKPiAtCQlyZXR1cm4gZjM4XzRfbWh6Owo+IC0JY2FzZSBHRU4xMV9SUE1fQ09ORklHMF9D UllTVEFMX0NMT0NLX0ZSRVFfMjVfTUhaOgo+IC0JCXJldHVybiBmMjVfbWh6Owo+IC0JZGVmYXVs dDoKPiAtCQlNSVNTSU5HX0NBU0UoY3J5c3RhbF9jbG9jayk7Cj4gLQkJcmV0dXJuIDA7Cj4gLQl9 Cj4gLX0KPiAtCj4gLXN0YXRpYyB1MzIgcmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAtewo+IC0Jc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7Cj4gLQl1MzIgZjEyXzVfbWh6ID0gMTI1MDAwMDA7 Cj4gLQl1MzIgZjE5XzJfbWh6ID0gMTkyMDAwMDA7Cj4gLQl1MzIgZjI0X21oeiA9IDI0MDAwMDAw Owo+IC0KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQpIHsKPiAtCQkvKiBQUk1zIHNh eToKPiAtCQkgKgo+IC0JCSAqICAgICAiVGhlIHZhbHVlIGluIHRoaXMgcmVnaXN0ZXIgaW5jcmVt ZW50cyBvbmNlIGV2ZXJ5IDE2Cj4gLQkJICogICAgICBoY2xrcy4iICh0aHJvdWdoIHRoZSDigJxD bG9ja2luZyBDb25maWd1cmF0aW9u4oCdCj4gLQkJICogICAgICAo4oCcQ0xLQ0ZH4oCdKSBNQ0hC QVIgcmVnaXN0ZXIpCj4gLQkJICovCj4gLQkJcmV0dXJuIFJVTlRJTUVfSU5GTyhkZXZfcHJpdikt PnJhd2Nsa19mcmVxICogMTAwMCAvIDE2Owo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDw9IDgpIHsKPiAtCQkvKiBQUk1zIHNheToKPiAtCQkgKgo+IC0JCSAqICAgICAiVGhlIFBD VSBUU0MgY291bnRzIDEwbnMgaW5jcmVtZW50czsgdGhpcyB0aW1lc3RhbXAKPiAtCQkgKiAgICAg IHJlZmxlY3RzIGJpdHMgMzg6MyBvZiB0aGUgVFNDIChpLmUuIDgwbnMgZ3JhbnVsYXJpdHksCj4g LQkJICogICAgICByb2xsaW5nIG92ZXIgZXZlcnkgMS41IGhvdXJzKS4KPiAtCQkgKi8KPiAtCQly ZXR1cm4gZjEyXzVfbWh6Owo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDkp IHsKPiAtCQl1MzIgY3RjX3JlZyA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgQ1RDX01PREUp Owo+IC0JCXUzMiBmcmVxID0gMDsKPiAtCj4gLQkJaWYgKChjdGNfcmVnICYgQ1RDX1NPVVJDRV9Q QVJBTUVURVJfTUFTSykgPT0gQ1RDX1NPVVJDRV9ESVZJREVfTE9HSUMpIHsKPiAtCQkJZnJlcSA9 IHJlYWRfcmVmZXJlbmNlX3RzX2ZyZXEoZGV2X3ByaXYpOwo+IC0JCX0gZWxzZSB7Cj4gLQkJCWZy ZXEgPSBJU19HRU45X0xQKGRldl9wcml2KSA/IGYxOV8yX21oeiA6IGYyNF9taHo7Cj4gLQo+IC0J CQkvKiBOb3cgZmlndXJlIG91dCBob3cgdGhlIGNvbW1hbmQgc3RyZWFtJ3MgdGltZXN0YW1wCj4g LQkJCSAqIHJlZ2lzdGVyIGluY3JlbWVudHMgZnJvbSB0aGlzIGZyZXF1ZW5jeSAoaXQgbWlnaHQK PiAtCQkJICogaW5jcmVtZW50IG9ubHkgZXZlcnkgZmV3IGNsb2NrIGN5Y2xlKS4KPiAtCQkJICov Cj4gLQkJCWZyZXEgPj49IDMgLSAoKGN0Y19yZWcgJiBDVENfU0hJRlRfUEFSQU1FVEVSX01BU0sp ID4+Cj4gLQkJCQkgICAgICBDVENfU0hJRlRfUEFSQU1FVEVSX1NISUZUKTsKPiAtCQl9Cj4gLQo+ IC0JCXJldHVybiBmcmVxOwo+IC0JfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDEy KSB7Cj4gLQkJdTMyIGN0Y19yZWcgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIENUQ19NT0RF KTsKPiAtCQl1MzIgZnJlcSA9IDA7Cj4gLQo+IC0JCS8qIEZpcnN0IGZpZ3VyZSBvdXQgdGhlIHJl ZmVyZW5jZSBmcmVxdWVuY3kuIFRoZXJlIGFyZSAyIHdheXMKPiAtCQkgKiB3ZSBjYW4gY29tcHV0 ZSB0aGUgZnJlcXVlbmN5LCBlaXRoZXIgdGhyb3VnaCB0aGUKPiAtCQkgKiBUSU1FU1RBTVBfT1ZF UlJJREUgcmVnaXN0ZXIgb3IgdGhyb3VnaCBSUE1fQ09ORklHLiBDVENfTU9ERQo+IC0JCSAqIHRl bGxzIHVzIHdoaWNoIG9uZSB3ZSBzaG91bGQgdXNlLgo+IC0JCSAqLwo+IC0JCWlmICgoY3RjX3Jl ZyAmIENUQ19TT1VSQ0VfUEFSQU1FVEVSX01BU0spID09IENUQ19TT1VSQ0VfRElWSURFX0xPR0lD KSB7Cj4gLQkJCWZyZXEgPSByZWFkX3JlZmVyZW5jZV90c19mcmVxKGRldl9wcml2KTsKPiAtCQl9 IGVsc2Ugewo+IC0JCQl1MzIgcnBtX2NvbmZpZ19yZWcgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNv cmUsIFJQTV9DT05GSUcwKTsKPiAtCj4gLQkJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDEw KQo+IC0JCQkJZnJlcSA9IGdlbjEwX2dldF9jcnlzdGFsX2Nsb2NrX2ZyZXEoZGV2X3ByaXYsCj4g LQkJCQkJCQkJcnBtX2NvbmZpZ19yZWcpOwo+IC0JCQllbHNlCj4gLQkJCQlmcmVxID0gZ2VuMTFf Z2V0X2NyeXN0YWxfY2xvY2tfZnJlcShkZXZfcHJpdiwKPiAtCQkJCQkJCQlycG1fY29uZmlnX3Jl Zyk7Cj4gLQo+IC0JCQkvKiBOb3cgZmlndXJlIG91dCBob3cgdGhlIGNvbW1hbmQgc3RyZWFtJ3Mg dGltZXN0YW1wCj4gLQkJCSAqIHJlZ2lzdGVyIGluY3JlbWVudHMgZnJvbSB0aGlzIGZyZXF1ZW5j eSAoaXQgbWlnaHQKPiAtCQkJICogaW5jcmVtZW50IG9ubHkgZXZlcnkgZmV3IGNsb2NrIGN5Y2xl KS4KPiAtCQkJICovCj4gLQkJCWZyZXEgPj49IDMgLSAoKHJwbV9jb25maWdfcmVnICYKPiAtCQkJ CSAgICAgICBHRU4xMF9SUE1fQ09ORklHMF9DVENfU0hJRlRfUEFSQU1FVEVSX01BU0spID4+Cj4g LQkJCQkgICAgICBHRU4xMF9SUE1fQ09ORklHMF9DVENfU0hJRlRfUEFSQU1FVEVSX1NISUZUKTsK PiAtCQl9Cj4gLQo+IC0JCXJldHVybiBmcmVxOwo+IC0JfQo+IC0KPiAtCU1JU1NJTkdfQ0FTRSgi VW5rbm93biBnZW4sIHVuYWJsZSB0byByZWFkIGNvbW1hbmQgc3RyZWFtZXIgdGltZXN0YW1wIGZy ZXF1ZW5jeVxuIik7Cj4gLQlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgI3VuZGVmIElOVEVMX1ZHQV9E RVZJQ0UKPiBAQCAtNTA1LDE5ICszNjEsNiBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRp bWVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlydW50aW1lLT5y YXdjbGtfZnJlcSA9IGludGVsX3JlYWRfcmF3Y2xrKGRldl9wcml2KTsKPiAgCWRybV9kYmcoJmRl dl9wcml2LT5kcm0sICJyYXdjbGsgcmF0ZTogJWQga0h6XG4iLCBydW50aW1lLT5yYXdjbGtfZnJl cSk7Cj4gIAo+IC0JLyogSW5pdGlhbGl6ZSBjb21tYW5kIHN0cmVhbSB0aW1lc3RhbXAgZnJlcXVl bmN5ICovCj4gLQlydW50aW1lLT5jc190aW1lc3RhbXBfZnJlcXVlbmN5X2h6ID0KPiAtCQlyZWFk X3RpbWVzdGFtcF9mcmVxdWVuY3koZGV2X3ByaXYpOwo+IC0JaWYgKHJ1bnRpbWUtPmNzX3RpbWVz dGFtcF9mcmVxdWVuY3lfaHopIHsKPiAtCQlydW50aW1lLT5jc190aW1lc3RhbXBfcGVyaW9kX25z ID0KPiAtCQkJaTkxNV9jc190aW1lc3RhbXBfdGlja3NfdG9fbnMoZGV2X3ByaXYsIDEpOwo+IC0J CWRybV9kYmcoJmRldl9wcml2LT5kcm0sCj4gLQkJCSJDUyB0aW1lc3RhbXAgd3JhcGFyb3VuZCBp biAlbGxkbXNcbiIsCj4gLQkJCWRpdl91NjQobXVsX3UzMl91MzIocnVudGltZS0+Y3NfdGltZXN0 YW1wX3BlcmlvZF9ucywKPiAtCQkJCQkgICAgUzMyX01BWCksCj4gLQkJCQlVU0VDX1BFUl9TRUMp KTsKPiAtCX0KPiAtCj4gIAlpZiAoIUhBU19ESVNQTEFZKGRldl9wcml2KSkgewo+ICAJCWRldl9w cml2LT5kcm0uZHJpdmVyX2ZlYXR1cmVzICY9IH4oRFJJVkVSX01PREVTRVQgfAo+ICAJCQkJCQkg ICBEUklWRVJfQVRPTUlDKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGV2aWNlX2luZm8uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZv LmgKPiBpbmRleCBkOTJmYTA0MWM3MDAuLjE3ZDBmZGI5NGQyZCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+IEBAIC0yMjQsOSArMjI0LDYgQEAgc3RydWN0 IGludGVsX3J1bnRpbWVfaW5mbyB7Cj4gIAl1OCBudW1fc2NhbGVyc1tJOTE1X01BWF9QSVBFU107 Cj4gIAo+ICAJdTMyIHJhd2Nsa19mcmVxOwo+IC0KPiAtCXUzMiBjc190aW1lc3RhbXBfZnJlcXVl bmN5X2h6Owo+IC0JdTMyIGNzX3RpbWVzdGFtcF9wZXJpb2RfbnM7Cj4gIH07Cj4gIAo+ICBzdHJ1 Y3QgaW50ZWxfZHJpdmVyX2NhcHMgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9wZXJmLmMKPiBpbmRleCBkZWJiYWM2NjA1MTkuLmU5ZDg2ZGFiODY3NyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJmLmMKPiBAQCAtMjYyLDcgKzI2 Miw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9ub2FfZGVsYXkodm9pZCAqYXJnKQo+ICAKPiAgCWRlbGF5 ID0gaW50ZWxfcmVhZF9zdGF0dXNfcGFnZShzdHJlYW0tPmVuZ2luZSwgMHgxMDIpOwo+ICAJZGVs YXkgLT0gaW50ZWxfcmVhZF9zdGF0dXNfcGFnZShzdHJlYW0tPmVuZ2luZSwgMHgxMDApOwo+IC0J ZGVsYXkgPSBpOTE1X2NzX3RpbWVzdGFtcF90aWNrc190b19ucyhpOTE1LCBkZWxheSk7Cj4gKwlk ZWxheSA9IGludGVsX2d0X2Nsb2NrX2ludGVydmFsX3RvX25zKHN0cmVhbS0+ZW5naW5lLT5ndCwg ZGVsYXkpOwo+ICAJcHJfaW5mbygiR1BVIGRlbGF5OiAldW5zLCBleHBlY3RlZCAlbGx1bnNcbiIs Cj4gIAkJZGVsYXksIGV4cGVjdGVkKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IGU0MjRhNmQxYTY4Yy4uZGRmNzYwNjkwNjZl IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVl c3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3Qu Ywo+IEBAIC0zMyw2ICszMyw3IEBACj4gICNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfcG0uaCIK PiAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV91c2VyLmgiCj4gICNpbmNsdWRlICJndC9pbnRl bF9ndC5oIgo+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfZ3RfY2xvY2tfdXRpbHMuaCIKPiAgI2luY2x1 ZGUgImd0L2ludGVsX2d0X3JlcXVlc3RzLmgiCj4gICNpbmNsdWRlICJndC9zZWxmdGVzdF9lbmdp bmVfaGVhcnRiZWF0LmgiCj4gIAo+IEBAIC0xNTYwLDcgKzE1NjEsNyBAQCBzdGF0aWMgdTMyIHRy aWZpbHRlcih1MzIgKmEpCj4gIAo+ICBzdGF0aWMgdTY0IGN5Y2xlc190b19ucyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIHUzMiBjeWNsZXMpCj4gIHsKPiAtCXU2NCBucyA9IGk5MTVf Y3NfdGltZXN0YW1wX3RpY2tzX3RvX25zKGVuZ2luZS0+aTkxNSwgY3ljbGVzKTsKPiArCXU2NCBu cyA9IGludGVsX2d0X2Nsb2NrX2ludGVydmFsX3RvX25zKGVuZ2luZS0+Z3QsIGN5Y2xlcyk7Cj4g IAo+ICAJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKG5zLCAxIDw8IFRGX0JJQVMpOwo+ICB9Cj4g LS0gCj4gMi4yMC4xCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==