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=-3.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,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 11B2FC433DF for ; Thu, 14 May 2020 09:21:57 +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 E932320671 for ; Thu, 14 May 2020 09:21:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E932320671 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=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 4D9266EB15; Thu, 14 May 2020 09:21:56 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id DA0C56EB15 for ; Thu, 14 May 2020 09:21:54 +0000 (UTC) IronPort-SDR: dCTQSffyrd6cTorAKgmv4NPu81Y2d2s57JLnSCPTrhI78K19dEg2Dcnth2YKZRl02CkUgWbNDN BKMYblLy+0Dg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2020 02:21:54 -0700 IronPort-SDR: QNsjMhUSbxuKGA/HkzfjvqWkh+4HXRpVS1BUiqku6apz8EO1ZFGa5eXXpW2jNaG10c0uxyWAUm iHYOycMTgeVA== X-IronPort-AV: E=Sophos;i="5.73,390,1583222400"; d="scan'208";a="437838383" Received: from oalgaze-mobl1.ger.corp.intel.com (HELO localhost) ([10.249.39.44]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2020 02:21:52 -0700 From: Jani Nikula To: Animesh Manna , intel-gfx@lists.freedesktop.org In-Reply-To: <20200514075722.7941-1-animesh.manna@intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20200514075722.7941-1-animesh.manna@intel.com> Date: Thu, 14 May 2020 12:21:49 +0300 Message-ID: <87r1vm50sy.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v6] drm/i915/dsb: Pre allocate and late cleanup of cmd buffer 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: Daniel Vetter Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gVGh1LCAxNCBNYXkgMjAyMCwgQW5pbWVzaCBNYW5uYSA8YW5pbWVzaC5tYW5uYUBpbnRlbC5j b20+IHdyb3RlOgo+IFByZS1hbGxvY2F0ZSBjb21tYW5kIGJ1ZmZlciBpbiBhdG9taWNfY29tbWl0 IHVzaW5nIGludGVsX2RzYl9wcmVwYXJlCj4gZnVuY3Rpb24gd2hpY2ggYWxzbyBpbmNsdWRlcyBw aW5uaW5nIGFuZCBtYXAgaW4gY3B1IGRvbWFpbi4KPgo+IE5vIGZ1bmN0aW9uYWwgY2hhbmdlIGlz IGRzYiB3cml0ZS9jb21taXQgZnVuY3Rpb25zLgo+Cj4gTm93IGRzYiBnZXQvcHV0IGZ1bmN0aW9u IGlzIHJlbW92ZWQgYW5kIHJlZi1jb3VudCBtZWNoYW5pc20gaXMKPiBub3QgbmVlZGVkLiBCZWxv dyBkc2IgYXBpIGFkZGVkIHRvIGRvIHJlc3BlY3RpdmUgam9iIG1lbnRpb25lZAo+IGJlbG93Lgo+ Cj4gaW50ZWxfZHNiX3ByZXBhcmUgLSBBbGxvY2F0ZSwgcGluIGFuZCBtYXAgdGhlIGJ1ZmZlci4K PiBpbnRlbF9kc2JfY2xlYW51cCAtIFVucGluIGFuZCByZWxlYXNlIHRoZSBnZW0gb2JqZWN0Lgo+ Cj4gUkZDOiBJbml0aWFsIHBhdGNoIGZvciBkZXNpZ24gcmV2aWV3Lgo+IHYyOiBpbmNsdWRlZCBf aW5pdCgpIHBhcnQgaW4gX3ByZXBhcmUoKS4gW0RhbmllbCwgVmlsbGVdCj4gdjM6IGRzYl9jbGVh bnVwIGNhbGxlZCBhZnRlciBjbGVhbnVwX3BsYW5lcy4gW0RhbmllbF0KPiB2NDogZHNiIHN0cnVj dHVyZSBpcyBtb3ZlZCB0byBpbnRlbF9jcnRjX3N0YXRlIGZyb20gaW50ZWxfY3J0Yy4gW01hYXJ0 ZW5dCj4gdjU6IGRzYiBnZXQvcHV0L3JlZi1jb3VudCBtZWNoYW5pc20gcmVtb3ZlZC4gW01hYXJ0 ZW5dCj4gdjY6IEJhc2VkIG9uIHJldmlldyBmZWVkYmFjayBmb2xsb3dpbmcgY2hhbmdlcyBhcmUg YWRkZWQsCj4gLSByZXBsYWNlZCBpbnRlbF9kc2Igc3RydWN0dXJlIGJ5IHBvaW50ZXIgaW4gaW50 ZWxfY3J0Y19zdGF0ZS4gW01hYXJ0ZW5dCj4gLSBwYXNzaW5nIGludGVsX2NydGNfc3RhdGUgdG8g ZHNwLWFwaSB0byBzaW1wbGlmeSB0aGUgY29kZS4gW01hYXJ0ZW5dCj4gLSBmZXcgZHNiIGZ1bmN0 aW9ucyBwcm90b3R5cGUgbW9kaWZpZWQgdG8gc2ltcGxpZnkgY29kZS4KPgo+IENjOiBNYWFydGVu IExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IENjOiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBKYW5pIE5p a3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwu dmV0dGVyQGZmd2xsLmNoPgo+IEFja2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVy QGZmd2xsLmNoPgo+IFNpZ25lZC1vZmYtYnk6IEFuaW1lc2ggTWFubmEgPGFuaW1lc2gubWFubmFA aW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0 b21pYy5jICAgfCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Nv bG9yLmMgICAgfCAgNTEgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYyAgfCAgNTkgKysrKy0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV90eXBlcy5oICAgIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHNiLmMgICAgICB8IDI1MCArKysrKysrKy0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2IuaCAgICAgIHwgIDE3ICstCj4gIDYgZmlsZXMgY2hh bmdlZCwgMjAyIGluc2VydGlvbnMoKyksIDE4NCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+IGluZGV4IGQwNDMwNTdkMmZhMC4u M2NiODY2ZjIyZTc0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfYXRvbWljLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2F0b21pYy5jCj4gQEAgLTI1Miw2ICsyNTIsNyBAQCBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0 ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAljcnRjX3N0YXRlLT53bS5uZWVkX3Bvc3R2Ymxf dXBkYXRlID0gZmFsc2U7Cj4gIAljcnRjX3N0YXRlLT5mYl9iaXRzID0gMDsKPiAgCWNydGNfc3Rh dGUtPnVwZGF0ZV9wbGFuZXMgPSAwOwo+ICsJY3J0Y19zdGF0ZS0+ZHNiID0gTlVMTDsKPiAgCj4g IAlyZXR1cm4gJmNydGNfc3RhdGUtPnVhcGk7Cj4gIH0KPiBAQCAtMjkyLDYgKzI5Myw4IEBAIGlu dGVsX2NydGNfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIHsKPiAgCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShz dGF0ZSk7Cj4gIAo+ICsJZHJtX1dBUk5fT04oY3J0Yy0+ZGV2LCBjcnRjX3N0YXRlLT5kc2IpOwo+ ICsKPiAgCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKCZjcnRjX3N0YXRl LT51YXBpKTsKPiAgCWludGVsX2NydGNfZnJlZV9od19zdGF0ZShjcnRjX3N0YXRlKTsKPiAgCWtm cmVlKGNydGNfc3RhdGUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Nv bG9yLmMKPiBpbmRleCA5OGVjZTljZDdjZGQuLmJjMDkzNDY4OTUwNSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKPiBAQCAtNzE3LDEzICs3MTcsMTQg QEAgc3RhdGljIHZvaWQgYmR3X2xvYWRfbHV0XzEwKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRfZXh0X21heChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBpbnRlbF9kc2JfZ2V0 KGNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ICsJCXRv X2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9 IGNydGMtPnBpcGU7Cj4gIAo+ICAJLyogUHJvZ3JhbSB0aGUgbWF4IHJlZ2lzdGVyIHRvIGNsYW1w IHZhbHVlcyA+IDEuMC4gKi8KPiAtCWludGVsX2RzYl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9F WFRfR0NfTUFYKHBpcGUsIDApLCAxIDw8IDE2KTsKPiAtCWludGVsX2RzYl9yZWdfd3JpdGUoZHNi LCBQUkVDX1BBTF9FWFRfR0NfTUFYKHBpcGUsIDEpLCAxIDw8IDE2KTsKPiAtCWludGVsX2RzYl9y ZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9FWFRfR0NfTUFYKHBpcGUsIDIpLCAxIDw8IDE2KTsKPiAr CWludGVsX2RzYl9yZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfRVhUX0dDX01BWChwaXBl LCAwKSwgMSA8PCAxNik7Cj4gKwlpbnRlbF9kc2JfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNf UEFMX0VYVF9HQ19NQVgocGlwZSwgMSksIDEgPDwgMTYpOwo+ICsJaW50ZWxfZHNiX3JlZ193cml0 ZShjcnRjX3N0YXRlLCBQUkVDX1BBTF9FWFRfR0NfTUFYKHBpcGUsIDIpLCAxIDw8IDE2KTsKPiAg Cj4gIAkvKgo+ICAJICogUHJvZ3JhbSB0aGUgZ2MgbWF4IDIgcmVnaXN0ZXIgdG8gY2xhbXAgdmFs dWVzID4gMS4wLgo+IEBAIC03MzEsMTUgKzczMiwxMyBAQCBzdGF0aWMgdm9pZCBpdmJfbG9hZF9s dXRfZXh0X21heChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgCSAqIGZyb20gMy4wIHRvIDcu MAo+ICAJICovCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklM QUtFKGRldl9wcml2KSkgewo+IC0JCWludGVsX2RzYl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9F WFQyX0dDX01BWChwaXBlLCAwKSwKPiArCQlpbnRlbF9kc2JfcmVnX3dyaXRlKGNydGNfc3RhdGUs IFBSRUNfUEFMX0VYVDJfR0NfTUFYKHBpcGUsIDApLAo+ICAJCQkJICAgIDEgPDwgMTYpOwo+IC0J CWludGVsX2RzYl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9FWFQyX0dDX01BWChwaXBlLCAxKSwK PiArCQlpbnRlbF9kc2JfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0VYVDJfR0NfTUFY KHBpcGUsIDEpLAo+ICAJCQkJICAgIDEgPDwgMTYpOwo+IC0JCWludGVsX2RzYl9yZWdfd3JpdGUo ZHNiLCBQUkVDX1BBTF9FWFQyX0dDX01BWChwaXBlLCAyKSwKPiArCQlpbnRlbF9kc2JfcmVnX3dy aXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0VYVDJfR0NfTUFYKHBpcGUsIDIpLAo+ICAJCQkJICAg IDEgPDwgMTYpOwo+ICAJfQo+IC0KPiAtCWludGVsX2RzYl9wdXQoZHNiKTsKPiAgfQo+ICAKPiAg c3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiBAQCAtOTAwLDE0ICs4OTksMTIgQEAgaWNsX2xvYWRfZ2NtYXgoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkgICAgICAgY29uc3Qgc3Ry dWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAtCXN0cnVjdCBpbnRl bF9kc2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNy dGMtPnBpcGU7Cj4gIAo+ICAJLyogRklYTUUgTFVUIGVudHJpZXMgYXJlIDE2IGJpdCBvbmx5LCBz byB3ZSBjYW4gcHJvZyAweEZGRkYgbWF4ICovCj4gLQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwg UFJFQ19QQUxfR0NfTUFYKHBpcGUsIDApLCBjb2xvci0+cmVkKTsKPiAtCWludGVsX2RzYl9yZWdf d3JpdGUoZHNiLCBQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSksIGNvbG9yLT5ncmVlbik7Cj4gLQlp bnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIpLCBjb2xvci0+ Ymx1ZSk7Cj4gLQlpbnRlbF9kc2JfcHV0KGRzYik7Cj4gKwlpbnRlbF9kc2JfcmVnX3dyaXRlKGNy dGNfc3RhdGUsIFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSwgY29sb3ItPnJlZCk7Cj4gKwlpbnRl bF9kc2JfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0dDX01BWChwaXBlLCAxKSwgY29s b3ItPmdyZWVuKTsKPiArCWludGVsX2RzYl9yZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxf R0NfTUFYKHBpcGUsIDIpLCBjb2xvci0+Ymx1ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4g QEAgLTkxNiw3ICs5MTMsNiBAQCBpY2xfcHJvZ3JhbV9nYW1tYV9zdXBlcmZpbmVfc2VnbWVudChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJ Y29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Y19zdGF0ZS0+aHcuZ2Ft bWFfbHV0Owo+ICAJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGJsb2ItPmRhdGE7 Cj4gLQlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBpbnRlbF9kc2JfZ2V0KGNydGMpOwo+ICAJZW51 bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJaW50IGk7Cj4gIAo+IEBAIC05MjcsMTkgKzky MywxNyBAQCBpY2xfcHJvZ3JhbV9nYW1tYV9zdXBlcmZpbmVfc2VnbWVudChjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCSAqIDkgZW50cmllcywgY29ycmVzcG9u ZGluZyB0byB2YWx1ZXMgMCwgMS8oOCAqIDEyOCAqIDI1NiksCj4gIAkgKiAyLyg4ICogMTI4ICog MjU2KSAuLi4gOC8oOCAqIDEyOCAqIDI1NikuCj4gIAkgKi8KPiAtCWludGVsX2RzYl9yZWdfd3Jp dGUoZHNiLCBQUkVDX1BBTF9NVUxUSV9TRUdfSU5ERVgocGlwZSksCj4gKwlpbnRlbF9kc2JfcmVn X3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX01VTFRJX1NFR19JTkRFWChwaXBlKSwKPiAgCQkJ ICAgIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgOTsg aSsrKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5ID0gJmx1dFtpXTsK PiAgCj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfTVVMVElf U0VHX0RBVEEocGlwZSksCj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3Rh dGUsIFBSRUNfUEFMX01VTFRJX1NFR19EQVRBKHBpcGUpLAo+ICAJCQkJCSAgICBpbGtfbHV0XzEy cDRfbGR3KGVudHJ5KSk7Cj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJF Q19QQUxfTVVMVElfU0VHX0RBVEEocGlwZSksCj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dy aXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX01VTFRJX1NFR19EQVRBKHBpcGUpLAo+ICAJCQkJCSAg ICBpbGtfbHV0XzEycDRfdWR3KGVudHJ5KSk7Cj4gIAl9Cj4gLQo+IC0JaW50ZWxfZHNiX3B1dChk c2IpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBAIC05NDksNyArOTQzLDYgQEAgaWNsX3By b2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNy dGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICps dXQgPSBibG9iLT5kYXRhOwo+ICAJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5Owo+ IC0Jc3RydWN0IGludGVsX2RzYiAqZHNiID0gaW50ZWxfZHNiX2dldChjcnRjKTsKPiAgCWVudW0g cGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCWludCBpOwo+ICAKPiBAQCAtOTYzLDEyICs5NTYs MTMgQEAgaWNsX3Byb2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCSAqIFBBTF9QUkVDX0lOREVYWzBdIGFuZCBQQUxf UFJFQ19JTkRFWFsxXSBtYXAgdG8gc2VnMlsxXSwKPiAgCSAqIHNlZzJbMF0gYmVpbmcgdW51c2Vk IGJ5IHRoZSBoYXJkd2FyZS4KPiAgCSAqLwo+IC0JaW50ZWxfZHNiX3JlZ193cml0ZShkc2IsIFBS RUNfUEFMX0lOREVYKHBpcGUpLCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7Cj4gKwlpbnRlbF9k c2JfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0lOREVYKHBpcGUpLAo+ICsJCQkgICAg UEFMX1BSRUNfQVVUT19JTkNSRU1FTlQpOwo+ICAJZm9yIChpID0gMTsgaSA8IDI1NzsgaSsrKSB7 Cj4gIAkJZW50cnkgPSAmbHV0W2kgKiA4XTsKPiAtCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3Jp dGUoZHNiLCBQUkVDX1BBTF9EQVRBKHBpcGUpLAo+ICsJCWludGVsX2RzYl9pbmRleGVkX3JlZ193 cml0ZShjcnRjX3N0YXRlLCBQUkVDX1BBTF9EQVRBKHBpcGUpLAo+ICAJCQkJCSAgICBpbGtfbHV0 XzEycDRfbGR3KGVudHJ5KSk7Cj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwg UFJFQ19QQUxfREFUQShwaXBlKSwKPiArCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoY3J0 Y19zdGF0ZSwgUFJFQ19QQUxfREFUQShwaXBlKSwKPiAgCQkJCQkgICAgaWxrX2x1dF8xMnA0X3Vk dyhlbnRyeSkpOwo+ICAJfQo+ICAKPiBAQCAtOTg2LDkgKzk4MCw5IEBAIGljbF9wcm9ncmFtX2dh bW1hX211bHRpX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gIAkgKi8KPiAgCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewo+ICAJCWVudHJ5ID0g Jmx1dFtpICogOCAqIDEyOF07Cj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwg UFJFQ19QQUxfREFUQShwaXBlKSwKPiArCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoY3J0 Y19zdGF0ZSwgUFJFQ19QQUxfREFUQShwaXBlKSwKPiAgCQkJCQkgICAgaWxrX2x1dF8xMnA0X2xk dyhlbnRyeSkpOwo+IC0JCWludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShkc2IsIFBSRUNfUEFM X0RBVEEocGlwZSksCj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3RhdGUs IFBSRUNfUEFMX0RBVEEocGlwZSksCj4gIAkJCQkJICAgIGlsa19sdXRfMTJwNF91ZHcoZW50cnkp KTsKPiAgCX0KPiAgCj4gQEAgLTk5NiwxNCArOTkwLDEyIEBAIGljbF9wcm9ncmFtX2dhbW1hX211 bHRpX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g IAllbnRyeSA9ICZsdXRbMjU2ICogOCAqIDEyOF07Cj4gIAlpY2xfbG9hZF9nY21heChjcnRjX3N0 YXRlLCBlbnRyeSk7Cj4gIAlpdmJfbG9hZF9sdXRfZXh0X21heChjcnRjKTsKPiAtCWludGVsX2Rz Yl9wdXQoZHNiKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaWNsX2xvYWRfbHV0cyhjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7 Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ dWFwaS5jcnRjKTsKPiAtCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0 Yyk7Cj4gIAo+ICAJaWYgKGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQo+ICAJCWdsa19sb2Fk X2RlZ2FtbWFfbHV0KGNydGNfc3RhdGUpOwo+IEBAIC0xMDIxLDggKzEwMTMsNyBAQCBzdGF0aWMg dm9pZCBpY2xfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICAJCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOwo+ICAJfQo+ICAKPiAtCWludGVs X2RzYl9jb21taXQoZHNiKTsKPiAtCWludGVsX2RzYl9wdXQoZHNiKTsKPiArCWludGVsX2RzYl9j b21taXQoY3J0Y19zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB1MzIgY2h2X2NnbV9kZWdhbW1h X2xkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA0MzJiNGVlYWY5ZjYuLmYx MDNkMDAzMDcxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jCj4gQEAgLTE0ODczLDggKzE0ODczLDI4IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRv bWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICBzdGF0aWMgaW50IGludGVs X2F0b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkK PiAgewo+IC0JcmV0dXJuIGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0YXRlLT5i YXNlLmRldiwKPiAtCQkJCQkJJnN0YXRlLT5iYXNlKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlpbnQgaSwg cmV0Owo+ICsKPiArCXJldCA9IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0YXRl LT5iYXNlLmRldiwgJnN0YXRlLT5iYXNlKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiBy ZXQ7Cj4gKwo+ICsJLyoKPiArCSAqIEluIGNhc2Ugb2YgRFNCIGJ1ZmZlciBjcmVhdGlvbiBmYWls dXJlIHJlZ2lzdGVyIHByb2dyYW1taW5nIHdpbGwgYmUKPiArCSAqIGRvbmUgYnkgbW1pbyBhbmQg ZXJyb25lb3VzIHBhdGggd2lsbCBiZSBoYW5kbGVkIGJ5IGRzcC13cml0ZSBhcGkuCj4gKwkgKi8K CmRzcD8KCkRvIHdlIG5lZWQgdGhlIGNvbW1lbnQgYXQgYWxsPyBPciBwdXQgaXQgbmVhciBpbnRl bF9kc2JfcHJlcGFyZSgpPwoKPiArCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0 YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gKwkJYm9vbCBtb2RlX2NoYW5nZWQgPSBuZWVk c19tb2Rlc2V0KGNydGNfc3RhdGUpOwo+ICsKPiArCQlpZiAobW9kZV9jaGFuZ2VkIHx8IGNydGNf c3RhdGUtPnVwZGF0ZV9waXBlIHx8Cj4gKwkJICAgIGNydGNfc3RhdGUtPnVhcGkuY29sb3JfbWdt dF9jaGFuZ2VkKSB7Cj4gKwkJCWludGVsX2RzYl9wcmVwYXJlKGNydGNfc3RhdGUpOwo+ICsJCX0K PiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgdTMyIGludGVsX2NydGNfZ2V0X3Zi bGFua19jb3VudGVyKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+IEBAIC0xNTMyNywxNSArMTUz NDcsMjkgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF9mZW5jZV93YWl0KHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXQKPiAgCQkgICAgJndhaXRfcmVzZXQpOwo+ ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBpbnRlbF9jbGVhbnVwX2RzYnMoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7 Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsCj4gKwkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBp KSB7Cj4gKwkJaW50ZWxfZHNiX2NsZWFudXAob2xkX2NydGNfc3RhdGUpOwo+ICsJCW9sZF9jcnRj X3N0YXRlLT5kc2IgPSBOVUxMOwoKRmVlbHMgbGlrZSB0aGF0IHNob3VsZCBiZSBpbnNpZGUgaW50 ZWxfZHNiX2NsZWFudXAoKS4KCj4gKwl9Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGludGVsX2F0 b21pY19jbGVhbnVwX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICB7Cj4gLQlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPQo+IC0JCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSwgY29tbWl0X3dvcmspOwo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ICsJc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUgPQo+ICsJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlLCBiYXNlLmNvbW1pdF93b3JrKTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwo+ICAKPiAtCWRybV9hdG9taWNfaGVs cGVyX2NsZWFudXBfcGxhbmVzKCZpOTE1LT5kcm0sIHN0YXRlKTsKPiAtCWRybV9hdG9taWNfaGVs cGVyX2NvbW1pdF9jbGVhbnVwX2RvbmUoc3RhdGUpOwo+IC0JZHJtX2F0b21pY19zdGF0ZV9wdXQo c3RhdGUpOwo+ICsJaW50ZWxfY2xlYW51cF9kc2JzKHN0YXRlKTsKPiArCWRybV9hdG9taWNfaGVs cGVyX2NsZWFudXBfcGxhbmVzKCZpOTE1LT5kcm0sICZzdGF0ZS0+YmFzZSk7Cj4gKwlkcm1fYXRv bWljX2hlbHBlcl9jb21taXRfY2xlYW51cF9kb25lKCZzdGF0ZS0+YmFzZSk7Cj4gKwlkcm1fYXRv bWljX3N0YXRlX3B1dCgmc3RhdGUtPmJhc2UpOwo+ICAKPiAgCWludGVsX2F0b21pY19oZWxwZXJf ZnJlZV9zdGF0ZShpOTE1KTsKPiAgfQo+IEBAIC0xNTQ2OSw2ICsxNTUwMyw4IEBAIHN0YXRpYyB2 b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgCQkJbW9kZXNldF9wdXRfcG93ZXJfZG9tYWlucyhkZXZfcHJpdiwgcHV0X2RvbWFp bnNbaV0pOwo+ICAKPiAgCQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9jcnRjKGNydGMsIHN0YXRlLCBv bGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwo+ICsKPiArCQlvbGRfY3J0Y19zdGF0ZS0+ ZHNiID0gZmV0Y2hfYW5kX3plcm8oJm5ld19jcnRjX3N0YXRlLT5kc2IpOwoKSWYgeW91IGFkZGVk IG9ubHkgb25lIGNvbW1lbnQgaW4gdGhlIGVudGlyZSBwYXRjaCwgaXQgd291bGQgZGVzZXJ2ZSB0 bwpiZSBhYm92ZSB0aGlzIGxpbmUsIGV4cGxhaW5pbmcgd2hhdCdzIGdvaW5nIG9uLgoKPiAgCX0K PiAgCj4gIAkvKiBVbmRlcnJ1bnMgZG9uJ3QgYWx3YXlzIHJhaXNlIGludGVycnVwdHMsIHNvIGNo ZWNrIG1hbnVhbGx5ICovCj4gQEAgLTE1NjE4LDggKzE1NjU0LDE1IEBAIHN0YXRpYyBpbnQgaW50 ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWludGVsX2F0b21p Y19zd2FwX2dsb2JhbF9zdGF0ZShzdGF0ZSk7Cj4gIAo+ICAJaWYgKHJldCkgewo+ICsJCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YzsKPiArCQlpbnQgaTsKPiArCj4gIAkJaTkxNV9zd19mZW5jZV9jb21taXQoJnN0YXRl LT5jb21taXRfcmVhZHkpOwo+ICAKPiArCQlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0 ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpCj4gKwkJCWludGVsX2RzYl9jbGVhbnVw KG5ld19jcnRjX3N0YXRlKTsKPiArCj4gIAkJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFu ZXMoZGV2LCAmc3RhdGUtPmJhc2UpOwo+ICAJCWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJp di0+cnVudGltZV9wbSwgc3RhdGUtPndha2VyZWYpOwo+ICAJCXJldHVybiByZXQ7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiBp bmRleCA4Nzg3NmZjZTkxYTUuLmNhNTc5MDA1ZDgxOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gQEAgLTEwNzgsNiAr MTA3OCw5IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKPiAgCj4gIAkvKiBPbmx5IHZhbGlk IG9uIFRHTCsgKi8KPiAgCWVudW0gdHJhbnNjb2RlciBtc3RfbWFzdGVyX3RyYW5zY29kZXI7Cj4g Kwo+ICsJLyogRm9yIERTQiByZWxhdGVkIGluZm8gKi8KPiArCXN0cnVjdCBpbnRlbF9kc2IgKmRz YjsKPiAgfTsKPiAgCj4gIGVudW0gaW50ZWxfcGlwZV9jcmNfc291cmNlIHsKPiBAQCAtMTE0Nyw5 ICsxMTUwLDYgQEAgc3RydWN0IGludGVsX2NydGMgewo+ICAJLyogc2NhbGVycyBhdmFpbGFibGUg b24gdGhpcyBjcnRjICovCj4gIAlpbnQgbnVtX3NjYWxlcnM7Cj4gIAo+IC0JLyogcGVyIHBpcGUg RFNCIHJlbGF0ZWQgaW5mbyAqLwo+IC0Jc3RydWN0IGludGVsX2RzYiBkc2I7Cj4gLQo+ICAjaWZk ZWYgQ09ORklHX0RFQlVHX0ZTCj4gIAlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgcGlwZV9jcmM7Cj4g ICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RzYi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2IuYwo+IGluZGV4 IDI5ZmVjNmE5MmQxNy4uMjk1MjQyNzI0MWViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNiLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2RzYi5jCj4gQEAgLTM0LDE1MiArMzQsNTIgQEAKPiAgI2RlZmluZSBEU0Jf QllURV9FTl9TSElGVAkJMjAKPiAgI2RlZmluZSBEU0JfUkVHX1ZBTFVFX01BU0sJCTB4ZmZmZmYK PiAgCj4gLXN0YXRpYyBib29sIGlzX2RzYl9idXN5KHN0cnVjdCBpbnRlbF9kc2IgKmRzYikKPiAr c3RhdGljIGlubGluZSBib29sIGlzX2RzYl9idXN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKCk5vLCBwbGVhc2UgZG9uJ3QgYWRkIGlubGluZXMgaW4gLmMgZmlsZXMuIEkganVz dCByZW1vdmVkIHRoZSBpbmxpbmVzCmZyb20gdGhlc2UgZnVuY3Rpb25zIGluIDgxYjU1ZWYxZjQ3 YiAoImRybS9pOTE1OiBkcm9wIGEgYnVuY2ggb2YKc3VwZXJmbHVvdXMgaW5saW5lcyIpLiBQbGVh c2UganVzdCBsZXQgdGhlIGNvbXBpbGVyIGhhbmRsZSB0aGlzLgoKU2luY2UgeW91J3JlIGNoYW5n aW5nIGV2ZXJ5dGhpbmcgaW4gdGhlIGZ1bmN0aW9uLCB3aHkgbm90IHJlbmFtZSB0aGUKcGFyYW1l dGVyIGk5MTUgd2hpbGUgYXQgaXQuCgo+ICsJCQkgICAgICAgZW51bSBwaXBlIHBpcGUsIGVudW0g ZHNiX2lkIGlkKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGNvbnRhaW5lcl9v Zihkc2IsIHR5cGVvZigqY3J0YyksIGRzYik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAtCWVudW0gcGlwZSBwaXBlID0g Y3J0Yy0+cGlwZTsKPiAtCj4gLQlyZXR1cm4gRFNCX1NUQVRVUyAmIGludGVsX2RlX3JlYWQoZGV2 X3ByaXYsIERTQl9DVFJMKHBpcGUsIGRzYi0+aWQpKTsKPiArCXJldHVybiBEU0JfU1RBVFVTICYg aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRFNCX0NUUkwocGlwZSwgaWQpKTsKPiAgfQo+ICAKPiAt c3RhdGljIGJvb2wgaW50ZWxfZHNiX2VuYWJsZV9lbmdpbmUoc3RydWN0IGludGVsX2RzYiAqZHNi KQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfZHNiX2VuYWJsZV9lbmdpbmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAoKRGl0dG8uCgo+ICsJCQkJCSAgIGVudW0gcGlwZSBw aXBlLCBlbnVtIGRzYl9pZCBpZCkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBj b250YWluZXJfb2YoZHNiLCB0eXBlb2YoKmNydGMpLCBkc2IpOwo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gLQllbnVtIHBp cGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAl1MzIgZHNiX2N0cmw7Cj4gIAo+IC0JZHNiX2N0cmwg PSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBEU0JfQ1RSTChwaXBlLCBkc2ItPmlkKSk7Cj4gKwlk c2JfY3RybCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIERTQl9DVFJMKHBpcGUsIGlkKSk7Cj4g IAlpZiAoRFNCX1NUQVRVUyAmIGRzYl9jdHJsKSB7Cj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2 LT5kcm0sICJEU0IgZW5naW5lIGlzIGJ1c3kuXG4iKTsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAl9 Cj4gIAo+ICAJZHNiX2N0cmwgfD0gRFNCX0VOQUJMRTsKPiAtCWludGVsX2RlX3dyaXRlKGRldl9w cml2LCBEU0JfQ1RSTChwaXBlLCBkc2ItPmlkKSwgZHNiX2N0cmwpOwo+ICsJaW50ZWxfZGVfd3Jp dGUoZGV2X3ByaXYsIERTQl9DVFJMKHBpcGUsIGlkKSwgZHNiX2N0cmwpOwo+ICAKPiAtCWludGVs X2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJpdiwgRFNCX0NUUkwocGlwZSwgZHNiLT5pZCkpOwo+ICsJ aW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCBEU0JfQ1RSTChwaXBlLCBpZCkpOwo+ICAJ cmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIGludGVsX2RzYl9kaXNhYmxlX2Vu Z2luZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9k c2JfZGlzYWJsZV9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAoKRGl0 dG8uCgo+ICsJCQkJCSAgICBlbnVtIHBpcGUgcGlwZSwgZW51bSBkc2JfaWQgaWQpCj4gIHsKPiAt CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlwZW9mKCpjcnRj KSwgZHNiKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJdTMy IGRzYl9jdHJsOwo+ICAKPiAtCWRzYl9jdHJsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRFNC X0NUUkwocGlwZSwgZHNiLT5pZCkpOwo+ICsJZHNiX2N0cmwgPSBpbnRlbF9kZV9yZWFkKGRldl9w cml2LCBEU0JfQ1RSTChwaXBlLCBpZCkpOwo+ICAJaWYgKERTQl9TVEFUVVMgJiBkc2JfY3RybCkg ewo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRFNCIGVuZ2luZSBpcyBidXN5Llxu Iik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAgCWRzYl9jdHJsICY9IH5EU0JfRU5B QkxFOwo+IC0JaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIERTQl9DVFJMKHBpcGUsIGRzYi0+aWQp LCBkc2JfY3RybCk7Cj4gKwlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRFNCX0NUUkwocGlwZSwg aWQpLCBkc2JfY3RybCk7Cj4gIAo+IC0JaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2LCBE U0JfQ1RSTChwaXBlLCBkc2ItPmlkKSk7Cj4gKwlpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3By aXYsIERTQl9DVFJMKHBpcGUsIGlkKSk7Cj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAtLyoq Cj4gLSAqIGludGVsX2RzYl9nZXQoKSAtIEFsbG9jYXRlIERTQiBjb250ZXh0IGFuZCByZXR1cm4g YSBEU0IgaW5zdGFuY2UuCj4gLSAqIEBjcnRjOiBpbnRlbF9jcnRjIHN0cnVjdHVyZSB0byBnZXQg cGlwZSBpbmZvLgo+IC0gKgo+IC0gKiBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGhhbmRsZSBvZiBh IERTQiBpbnN0YW5jZSwgZm9yIHRoZSBmdXJ0aGVyIERTQgo+IC0gKiBvcGVyYXRpb25zLgo+IC0g Kgo+IC0gKiBSZXR1cm5zOiBhZGRyZXNzIG9mIEludGVsX2RzYiBpbnN0YW5jZSByZXF1ZXN0ZWQg Zm9yLgo+IC0gKiBGYWlsdXJlOiBSZXR1cm5zIHRoZSBzYW1lIERTQiBpbnN0YW5jZSwgYnV0IHdp dGhvdXQgYSBjb21tYW5kIGJ1ZmZlci4KPiAtICovCj4gLQo+IC1zdHJ1Y3QgaW50ZWxfZHNiICoK PiAtaW50ZWxfZHNiX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAtewo+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSB0b19pOTE1KGRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSAm Y3J0Yy0+ZHNiOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAtCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwo+IC0JdTMyICpidWY7Cj4gLQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiAtCj4gLQlpZiAoIUhBU19EU0IoaTkxNSkpCj4gLQkJcmV0dXJuIGRzYjsKPiAtCj4gLQlp ZiAoZHNiLT5yZWZjb3VudCsrICE9IDApCj4gLQkJcmV0dXJuIGRzYjsKPiAtCj4gLQl3YWtlcmVm ID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRpbWVfcG0pOwo+IC0KPiAtCW9iaiA9 IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgRFNCX0JVRl9TSVpFKTsKPiAt CWlmIChJU19FUlIob2JqKSkgewo+IC0JCWRybV9lcnIoJmk5MTUtPmRybSwgIkdlbSBvYmplY3Qg Y3JlYXRpb24gZmFpbGVkXG4iKTsKPiAtCQlnb3RvIG91dDsKPiAtCX0KPiAtCj4gLQl2bWEgPSBp OTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCBOVUxMLCAwLCAwLCAwKTsKPiAtCWlmIChJU19F UlIodm1hKSkgewo+IC0JCWRybV9lcnIoJmk5MTUtPmRybSwgIlZtYSBjcmVhdGlvbiBmYWlsZWRc biIpOwo+IC0JCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiAtCQlnb3RvIG91dDsKPiAtCX0K PiAtCj4gLQlidWYgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh2bWEtPm9iaiwgSTkxNV9NQVBf V0MpOwo+IC0JaWYgKElTX0VSUihidWYpKSB7Cj4gLQkJZHJtX2VycigmaTkxNS0+ZHJtLCAiQ29t bWFuZCBidWZmZXIgY3JlYXRpb24gZmFpbGVkXG4iKTsKPiAtCQlnb3RvIG91dDsKPiAtCX0KPiAt Cj4gLQlkc2ItPmlkID0gRFNCMTsKPiAtCWRzYi0+dm1hID0gdm1hOwo+IC0JZHNiLT5jbWRfYnVm ID0gYnVmOwo+IC0KPiAtb3V0Ogo+IC0JLyoKPiAtCSAqIE9uIGVycm9yIGRzYi0+Y21kX2J1ZiB3 aWxsIGNvbnRpbnVlIHRvIGJlIE5VTEwsIG1ha2luZyB0aGUgd3JpdGVzCj4gLQkgKiBwYXNzLXRo cm91Z2guIExlYXZlIHRoZSBkYW5nbGluZyByZWYgdG8gYmUgcmVtb3ZlZCBsYXRlciBieSB0aGUK PiAtCSAqIGNvcnJlc3BvbmRpbmcgaW50ZWxfZHNiX3B1dCgpOiB0aGUgaW1wb3J0YW50IGVycm9y IG1lc3NhZ2Ugd2lsbAo+IC0JICogYWxyZWFkeSBiZSBsb2dnZWQgYWJvdmUuCj4gLQkgKi8KPiAt Cj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4g LQo+IC0JcmV0dXJuIGRzYjsKPiAtfQo+IC0KPiAtLyoqCj4gLSAqIGludGVsX2RzYl9wdXQoKSAt IFRvIGRlc3Ryb3kgRFNCIGNvbnRleHQuCj4gLSAqIEBkc2I6IGludGVsX2RzYiBzdHJ1Y3R1cmUu Cj4gLSAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gZGVzdHJveXMgdGhlIERTQiBjb250ZXh0IGFsbG9j YXRlZCBieSBhIGRzYl9nZXQoKSwgYnkKPiAtICogdW5waW5uaW5nIGFuZCByZWxlYXNpbmcgdGhl IFZNQSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIGl0Lgo+IC0gKi8KPiAtCj4gLXZvaWQgaW50ZWxf ZHNiX3B1dChzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlwZW9mKCpjcnRjKSwgZHNiKTsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gLQo+ IC0JaWYgKCFIQVNfRFNCKGk5MTUpKQo+IC0JCXJldHVybjsKPiAtCj4gLQlpZiAoZHJtX1dBUk5f T04oJmk5MTUtPmRybSwgZHNiLT5yZWZjb3VudCA9PSAwKSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0J aWYgKC0tZHNiLT5yZWZjb3VudCA9PSAwKSB7Cj4gLQkJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVh c2UoJmRzYi0+dm1hLCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7Cj4gLQkJZHNiLT5jbWRfYnVmID0g TlVMTDsKPiAtCQlkc2ItPmZyZWVfcG9zID0gMDsKPiAtCQlkc2ItPmluc19zdGFydF9vZmZzZXQg PSAwOwo+IC0JfQo+IC19Cj4gLQo+ICAvKioKPiAgICogaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dy aXRlKCkgLVdyaXRlIHRvIHRoZSBEU0IgY29udGV4dCBmb3IgYXV0bwo+ICAgKiBpbmNyZW1lbnQg cmVnaXN0ZXIuCj4gLSAqIEBkc2I6IGludGVsX2RzYiBzdHJ1Y3R1cmUuCj4gKyAqIEBjcnRjX3N0 YXRlOiBpbnRlbF9jcnRjX3N0YXRlIHN0cnVjdHVyZQo+ICAgKiBAcmVnOiByZWdpc3RlciBhZGRy ZXNzLgo+ICAgKiBAdmFsOiB2YWx1ZS4KPiAgICoKPiBAQCAtMTg5LDE5ICs4OSwyMCBAQCB2b2lk IGludGVsX2RzYl9wdXQoc3RydWN0IGludGVsX2RzYiAqZHNiKQo+ICAgKiBpcyBkb25lIHRocm91 Z2ggbW1pbyB3cml0ZS4KPiAgICovCj4gIAo+IC12b2lkIGludGVsX2RzYl9pbmRleGVkX3JlZ193 cml0ZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVfcmVnX3QgcmVnLAo+IC0JCQkJIHUzMiB2 YWwpCj4gK3ZvaWQgaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJIGk5MTVfcmVnX3QgcmVnLCB1MzIgdmFs KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGNvbnRhaW5lcl9vZihkc2IsIHR5 cGVvZigqY3J0YyksIGRzYik7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBjcnRjX3N0YXRl LT5kc2I7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0JdTMyICpidWYgPSBkc2ItPmNtZF9idWY7Cj4g Kwl1MzIgKmJ1ZjsKPiAgCXUzMiByZWdfdmFsOwo+ICAKPiAtCWlmICghYnVmKSB7Cj4gKwlpZiAo IShkc2IgJiYgZHNiLT5jbWRfYnVmKSkgewo+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBy ZWcsIHZhbCk7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+IC0KPiArCWJ1ZiA9IGRzYi0+Y21kX2J1ZjsK PiAgCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgZHNiLT5mcmVlX3BvcyA+PSBEU0Jf QlVGX1NJWkUpKSB7Cj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJEU0IgYnVmZmVy IG92ZXJmbG93XG4iKTsKPiAgCQlyZXR1cm47Cj4gQEAgLTI1Niw3ICsxNTcsNyBAQCB2b2lkIGlu dGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVfcmVn X3QgcmVnLAo+ICAvKioKPiAgICogaW50ZWxfZHNiX3JlZ193cml0ZSgpIC1Xcml0ZSB0byB0aGUg RFNCIGNvbnRleHQgZm9yIG5vcm1hbAo+ICAgKiByZWdpc3Rlci4KPiAtICogQGRzYjogaW50ZWxf ZHNiIHN0cnVjdHVyZS4KPiArICogQGNydGNfc3RhdGU6IGludGVsX2NydGNfc3RhdGUgc3RydWN0 dXJlCj4gICAqIEByZWc6IHJlZ2lzdGVyIGFkZHJlc3MuCj4gICAqIEB2YWw6IHZhbHVlLgo+ICAg Kgo+IEBAIC0yNjUsMTcgKzE2NiwxOSBAQCB2b2lkIGludGVsX2RzYl9pbmRleGVkX3JlZ193cml0 ZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVfcmVnX3QgcmVnLAo+ICAgKiBhbmQgcmVzdCBh bGwgZXJyb25lb3VzIGNvbmRpdGlvbiByZWdpc3RlciBwcm9ncmFtbWluZyBpcyBkb25lCj4gICAq IHRocm91Z2ggbW1pbyB3cml0ZS4KPiAgICovCj4gLXZvaWQgaW50ZWxfZHNiX3JlZ193cml0ZShz dHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVfcmVnX3QgcmVnLCB1MzIgdmFsKQo+ICt2b2lkIGlu dGVsX2RzYl9yZWdfd3JpdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gKwkJCSBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCkKPiAgewo+IC0Jc3RydWN0IGludGVs X2NydGMgKmNydGMgPSBjb250YWluZXJfb2YoZHNiLCB0eXBlb2YoKmNydGMpLCBkc2IpOwo+ICsJ c3RydWN0IGludGVsX2RzYiAqZHNiID0gY3J0Y19zdGF0ZS0+ZHNiOwo+ICsJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2 KTsKPiAgCXUzMiAqYnVmID0gZHNiLT5jbWRfYnVmOwo+ICAKPiAtCWlmICghYnVmKSB7Cj4gKwlp ZiAoIShkc2IgJiYgZHNiLT5jbWRfYnVmKSkgewo+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCByZWcsIHZhbCk7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+IC0KPiArCWJ1ZiA9IGRzYi0+Y21kX2J1 ZjsKPiAgCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgZHNiLT5mcmVlX3BvcyA+PSBE U0JfQlVGX1NJWkUpKSB7Cj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJEU0IgYnVm ZmVyIG92ZXJmbG93XG4iKTsKPiAgCQlyZXR1cm47Cj4gQEAgLTI5MCwyNiArMTkzLDI3IEBAIHZv aWQgaW50ZWxfZHNiX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVfcmVnX3Qg cmVnLCB1MzIgdmFsKQo+ICAKPiAgLyoqCj4gICAqIGludGVsX2RzYl9jb21taXQoKSAtIFRyaWdn ZXIgd29ya2xvYWQgZXhlY3V0aW9uIG9mIERTQi4KPiAtICogQGRzYjogaW50ZWxfZHNiIHN0cnVj dHVyZS4KPiArICogQGNydGNfc3RhdGU6IGludGVsX2NydGNfc3RhdGUgc3RydWN0dXJlCj4gICAq Cj4gICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkbyBhY3R1YWwgd3JpdGUgdG8gaGFyZHdh cmUgdXNpbmcgRFNCLgo+ICAgKiBPbiBlcnJvcnMsIGZhbGwgYmFjayB0byBNTUlPLiBBbHNvIHRo aXMgZnVuY3Rpb24gaGVscCB0byByZXNldCB0aGUgY29udGV4dC4KPiAgICovCj4gLXZvaWQgaW50 ZWxfZHNiX2NvbW1pdChzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpCj4gK3ZvaWQgaW50ZWxfZHNiX2Nv bW1pdChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0J c3RydWN0IGludGVsX2NydGMgKmNydGMgPSBjb250YWluZXJfb2YoZHNiLCB0eXBlb2YoKmNydGMp LCBkc2IpOwo+ICsJc3RydWN0IGludGVsX2RzYiAqZHNiID0gY3J0Y19zdGF0ZS0+ZHNiOwo+ICsJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAllbnVt IHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAl1MzIgdGFpbDsKPiAgCj4gLQlpZiAoIWRzYi0+ ZnJlZV9wb3MpCj4gKwlpZiAoIShkc2IgJiYgZHNiLT5mcmVlX3BvcykpCj4gIAkJcmV0dXJuOwo+ ICAKPiAtCWlmICghaW50ZWxfZHNiX2VuYWJsZV9lbmdpbmUoZHNiKSkKPiArCWlmICghaW50ZWxf ZHNiX2VuYWJsZV9lbmdpbmUoZGV2X3ByaXYsIHBpcGUsIGRzYi0+aWQpKQo+ICAJCWdvdG8gcmVz ZXQ7Cj4gIAo+IC0JaWYgKGlzX2RzYl9idXN5KGRzYikpIHsKPiArCWlmIChpc19kc2JfYnVzeShk ZXZfcHJpdiwgcGlwZSwgZHNiLT5pZCkpIHsKPiAgCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAo+ ICAJCQkiSEVBRF9QVFIgd3JpdGUgZmFpbGVkIC0gZHNiIGVuZ2luZSBpcyBidXN5LlxuIik7Cj4g IAkJZ290byByZXNldDsKPiBAQCAtMzIyLDcgKzIyNiw3IEBAIHZvaWQgaW50ZWxfZHNiX2NvbW1p dChzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpCj4gIAkJbWVtc2V0KCZkc2ItPmNtZF9idWZbZHNiLT5m cmVlX3Bvc10sIDAsCj4gIAkJICAgICAgICh0YWlsIC0gZHNiLT5mcmVlX3BvcyAqIDQpKTsKPiAg Cj4gLQlpZiAoaXNfZHNiX2J1c3koZHNiKSkgewo+ICsJaWYgKGlzX2RzYl9idXN5KGRldl9wcml2 LCBwaXBlLCBkc2ItPmlkKSkgewo+ICAJCWRybV9lcnIoJmRldl9wcml2LT5kcm0sCj4gIAkJCSJU QUlMX1BUUiB3cml0ZSBmYWlsZWQgLSBkc2IgZW5naW5lIGlzIGJ1c3kuXG4iKTsKPiAgCQlnb3Rv IHJlc2V0Owo+IEBAIC0zMzIsNyArMjM2LDcgQEAgdm9pZCBpbnRlbF9kc2JfY29tbWl0KHN0cnVj dCBpbnRlbF9kc2IgKmRzYikKPiAgCQkgICAgaTkxNV9nZ3R0X29mZnNldChkc2ItPnZtYSksIHRh aWwpOwo+ICAJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIERTQl9UQUlMKHBpcGUsIGRzYi0+aWQp LAo+ICAJCSAgICAgICBpOTE1X2dndHRfb2Zmc2V0KGRzYi0+dm1hKSArIHRhaWwpOwo+IC0JaWYg KHdhaXRfZm9yKCFpc19kc2JfYnVzeShkc2IpLCAxKSkgewo+ICsJaWYgKHdhaXRfZm9yKCFpc19k c2JfYnVzeShkZXZfcHJpdiwgcGlwZSwgZHNiLT5pZCksIDEpKSB7Cj4gIAkJZHJtX2VycigmZGV2 X3ByaXYtPmRybSwKPiAgCQkJIlRpbWVkIG91dCB3YWl0aW5nIGZvciBEU0Igd29ya2xvYWQgY29t cGxldGlvbi5cbiIpOwo+ICAJCWdvdG8gcmVzZXQ7Cj4gQEAgLTM0MSw1ICsyNDUsODMgQEAgdm9p ZCBpbnRlbF9kc2JfY29tbWl0KHN0cnVjdCBpbnRlbF9kc2IgKmRzYikKPiAgcmVzZXQ6Cj4gIAlk c2ItPmZyZWVfcG9zID0gMDsKPiAgCWRzYi0+aW5zX3N0YXJ0X29mZnNldCA9IDA7Cj4gLQlpbnRl bF9kc2JfZGlzYWJsZV9lbmdpbmUoZHNiKTsKPiArCWludGVsX2RzYl9kaXNhYmxlX2VuZ2luZShk ZXZfcHJpdiwgcGlwZSwgZHNiLT5pZCk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9kc2Jf cHJlcGFyZSgpIC0gQWxsb2NhdGUsIHBpbiBhbmQgbWFwIHRoZSBEU0IgY29tbWFuZCBidWZmZXIu Cj4gKyAqIEBjcnRjX3N0YXRlOiBpbnRlbF9jcnRjX3N0YXRlIHN0cnVjdHVyZSB0byBwcmVwYXJl IGFzc29jaWF0ZWQgZHNiIGluc3RhbmNlLgo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIHByZXBh cmUgdGhlIGNvbW1hbmQgYnVmZmVyIHdoaWNoIGlzIHVzZWQgdG8gc3RvcmUgZHNiCj4gKyAqIGlu c3RydWN0aW9ucyB3aXRoIGRhdGEuCj4gKyAqLwo+ICsKClN1cGVyZmx1b3VzIG5ld2xpbmUuCgo+ ICt2b2lkIGludGVsX2RzYl9wcmVwYXJlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g dG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHNiICpkc2I7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7 Cj4gKwl1MzIgKmJ1ZjsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsKPiArCWlmICgh SEFTX0RTQihpOTE1KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJZHNiID0ga21hbGxvYyhzaXplb2Yo KmRzYiksIEdGUF9LRVJORUwpOwo+ICsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dl dCgmaTkxNS0+cnVudGltZV9wbSk7Cj4gKwo+ICsJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZV9pbnRlcm5hbChpOTE1LCBEU0JfQlVGX1NJWkUpOwo+ICsJaWYgKElTX0VSUihvYmopKSB7Cj4g KwkJZHJtX2VycigmaTkxNS0+ZHJtLCAiR2VtIG9iamVjdCBjcmVhdGlvbiBmYWlsZWRcbiIpOwo+ ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bp bihvYmosIE5VTEwsIDAsIDAsIDApOwo+ICsJaWYgKElTX0VSUih2bWEpKSB7Cj4gKwkJZHJtX2Vy cigmaTkxNS0+ZHJtLCAiVm1hIGNyZWF0aW9uIGZhaWxlZFxuIik7Cj4gKwkJaTkxNV9nZW1fb2Jq ZWN0X3B1dChvYmopOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCWJ1ZiA9IGk5MTVfZ2Vt X29iamVjdF9waW5fbWFwKHZtYS0+b2JqLCBJOTE1X01BUF9XQyk7Cj4gKwlpZiAoSVNfRVJSKGJ1 ZikpIHsKPiArCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJDb21tYW5kIGJ1ZmZlciBjcmVhdGlvbiBm YWlsZWRcbiIpOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCWRzYi0+aWQgPSBEU0IxOwo+ ICsJZHNiLT52bWEgPSB2bWE7Cj4gKwlkc2ItPmNtZF9idWYgPSBidWY7Cj4gKwlkc2ItPmZyZWVf cG9zID0gMDsKPiArCWRzYi0+aW5zX3N0YXJ0X29mZnNldCA9IDA7Cj4gKwljcnRjX3N0YXRlLT5k c2IgPSBkc2I7Cj4gK291dDoKPiArCS8qCj4gKwkgKiBPbiBlcnJvciBkc2ItPmNtZF9idWYgd2ls bCBjb250aW51ZSB0byBiZSBOVUxMLCBtYWtpbmcgdGhlIHdyaXRlcwo+ICsJICogcGFzcy10aHJv dWdoLiBMZWF2ZSB0aGUgZGFuZ2xpbmcgcmVmIHRvIGJlIHJlbW92ZWQgbGF0ZXIgYnkgdGhlCj4g KwkgKiBjb3JyZXNwb25kaW5nIGludGVsX2RzYl9wdXQoKTogdGhlIGltcG9ydGFudCBlcnJvciBt ZXNzYWdlIHdpbGwKPiArCSAqIGFscmVhZHkgYmUgbG9nZ2VkIGFib3ZlLgo+ICsJICovCgpTdGFs ZSBjb21tZW50LgoKVGhlIGVycm9yIHBhdGhzIGxlYWsgZHNiIGFuZCBtb3JlLgoKPiArCj4gKwlp bnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gK30KPiAr Cj4gKy8qKgo+ICsgKiBpbnRlbF9kc2JfY2xlYW51cCgpIC0gVG8gY2xlYW51cCBEU0IgY29udGV4 dC4KPiArICogQGNydGNfc3RhdGU6IGludGVsX2NydGNfc3RhdGUgc3RydWN0dXJlIHRvIGNsZWFu dXAgYXNzb2NpYXRlZCBkc2IgaW5zdGFuY2UuCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY2xl YW51cCB0aGUgRFNCIGNvbnRleHQgYnkgdW5waW5uaW5nIGFuZCByZWxlYXNpbmcKPiArICogdGhl IFZNQSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIGl0Lgo+ICsgKi8KPiArCj4gK3ZvaWQgaW50ZWxf ZHNiX2NsZWFudXAoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiAr CWlmIChjcnRjX3N0YXRlICYmIGNydGNfc3RhdGUtPmRzYikgewo+ICsJCWk5MTVfdm1hX3VucGlu X2FuZF9yZWxlYXNlKCZjcnRjX3N0YXRlLT5kc2ItPnZtYSwKPiArCQkJCQkgICBJOTE1X1ZNQV9S RUxFQVNFX01BUCk7Cj4gKwkJa2ZyZWUoY3J0Y19zdGF0ZS0+ZHNiKTsKPiArCX0KPiAgfQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzYi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2IuaAo+IGluZGV4IDM5NWVmOWNlNTU4 ZS4uNjU0YTExZjI0YjgwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHNiLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RzYi5oCj4gQEAgLTEwLDcgKzEwLDcgQEAKPiAgCj4gICNpbmNsdWRlICJpOTE1X3JlZy5oIgo+ ICAKPiAtc3RydWN0IGludGVsX2NydGM7Cj4gK3N0cnVjdCBpbnRlbF9jcnRjX3N0YXRlOwo+ICBz dHJ1Y3QgaTkxNV92bWE7Cj4gIAo+ICBlbnVtIGRzYl9pZCB7Cj4gQEAgLTIyLDcgKzIyLDYgQEAg ZW51bSBkc2JfaWQgewo+ICB9Owo+ICAKPiAgc3RydWN0IGludGVsX2RzYiB7Cj4gLQlsb25nIHJl ZmNvdW50Owo+ICAJZW51bSBkc2JfaWQgaWQ7Cj4gIAl1MzIgKmNtZF9idWY7Cj4gIAlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsKPiBAQCAtNDEsMTIgKzQwLDEyIEBAIHN0cnVjdCBpbnRlbF9kc2Igewo+ ICAJdTMyIGluc19zdGFydF9vZmZzZXQ7Cj4gIH07Cj4gIAo+IC1zdHJ1Y3QgaW50ZWxfZHNiICoK PiAtaW50ZWxfZHNiX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gLXZvaWQgaW50ZWxf ZHNiX3B1dChzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpOwo+IC12b2lkIGludGVsX2RzYl9yZWdfd3Jp dGUoc3RydWN0IGludGVsX2RzYiAqZHNiLCBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCk7Cj4gLXZv aWQgaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKHN0cnVjdCBpbnRlbF9kc2IgKmRzYiwgaTkx NV9yZWdfdCByZWcsCj4gLQkJCQkgdTMyIHZhbCk7Cj4gLXZvaWQgaW50ZWxfZHNiX2NvbW1pdChz dHJ1Y3QgaW50ZWxfZHNiICpkc2IpOwo+ICt2b2lkIGludGVsX2RzYl9wcmVwYXJlKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiArdm9pZCBpbnRlbF9kc2JfY2xlYW51cChz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gK3ZvaWQgaW50ZWxfZHNiX3Jl Z193cml0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJ IGk5MTVfcmVnX3QgcmVnLCB1MzIgdmFsKTsKPiArdm9pZCBpbnRlbF9kc2JfaW5kZXhlZF9yZWdf d3JpdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkg aTkxNV9yZWdfdCByZWcsIHUzMiB2YWwpOwo+ICt2b2lkIGludGVsX2RzYl9jb21taXQoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICAKPiAgI2VuZGlmCgotLSAK SmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK