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=-5.4 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,USER_AGENT_SANE_1 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 2348BC433E0 for ; Thu, 14 May 2020 12:03:42 +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 04ED32065D for ; Thu, 14 May 2020 12:03:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 04ED32065D 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 9046A6E338; Thu, 14 May 2020 12:03:41 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id D28B96E338 for ; Thu, 14 May 2020 12:03:39 +0000 (UTC) IronPort-SDR: bL+Q/pYuw/uVfRfPdYi7ReI7wHi2GoGwUHQ+jkXTGuZsPwUG33rhAHhgcVPiaZSCeymcF6kXxX jn4V3SMoArDA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2020 05:03:39 -0700 IronPort-SDR: I/J0VSYUlwW8vYhJmXUxpEh8ntulEJfECywYvXBm4q0DVXnfUzO1RvMvUHVLxADWsagaGdiNpd dnyKvfnhwjqQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,391,1583222400"; d="scan'208";a="298012053" Received: from ssteinbo-mobl.ger.corp.intel.com (HELO [10.252.41.158]) ([10.252.41.158]) by fmsmga002.fm.intel.com with ESMTP; 14 May 2020 05:03:35 -0700 To: Animesh Manna , intel-gfx@lists.freedesktop.org References: <20200514112752.12049-1-animesh.manna@intel.com> From: Maarten Lankhorst Message-ID: <268c4dee-1f9f-a017-1c36-a967721ff3b7@linux.intel.com> Date: Thu, 14 May 2020 14:03:34 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <20200514112752.12049-1-animesh.manna@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH v7] 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: Jani Nikula , Daniel Vetter Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T3AgMTQtMDUtMjAyMCBvbSAxMzoyNyBzY2hyZWVmIEFuaW1lc2ggTWFubmE6Cj4gUHJlLWFsbG9j YXRlIGNvbW1hbmQgYnVmZmVyIGluIGF0b21pY19jb21taXQgdXNpbmcgaW50ZWxfZHNiX3ByZXBh cmUKPiBmdW5jdGlvbiB3aGljaCBhbHNvIGluY2x1ZGVzIHBpbm5pbmcgYW5kIG1hcCBpbiBjcHUg ZG9tYWluLgo+Cj4gTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaXMgZHNiIHdyaXRlL2NvbW1pdCBmdW5j dGlvbnMuCj4KPiBOb3cgZHNiIGdldC9wdXQgZnVuY3Rpb24gaXMgcmVtb3ZlZCBhbmQgcmVmLWNv dW50IG1lY2hhbmlzbSBpcwo+IG5vdCBuZWVkZWQuIEJlbG93IGRzYiBhcGkgYWRkZWQgdG8gZG8g cmVzcGVjdGl2ZSBqb2IgbWVudGlvbmVkCj4gYmVsb3cuCj4KPiBpbnRlbF9kc2JfcHJlcGFyZSAt IEFsbG9jYXRlLCBwaW4gYW5kIG1hcCB0aGUgYnVmZmVyLgo+IGludGVsX2RzYl9jbGVhbnVwIC0g VW5waW4gYW5kIHJlbGVhc2UgdGhlIGdlbSBvYmplY3QuCj4KPiBSRkM6IEluaXRpYWwgcGF0Y2gg Zm9yIGRlc2lnbiByZXZpZXcuCj4gdjI6IGluY2x1ZGVkIF9pbml0KCkgcGFydCBpbiBfcHJlcGFy ZSgpLiBbRGFuaWVsLCBWaWxsZV0KPiB2MzogZHNiX2NsZWFudXAgY2FsbGVkIGFmdGVyIGNsZWFu dXBfcGxhbmVzLiBbRGFuaWVsXQo+IHY0OiBkc2Igc3RydWN0dXJlIGlzIG1vdmVkIHRvIGludGVs X2NydGNfc3RhdGUgZnJvbSBpbnRlbF9jcnRjLiBbTWFhcnRlbl0KPiB2NTogZHNiIGdldC9wdXQv cmVmLWNvdW50IG1lY2hhbmlzbSByZW1vdmVkLiBbTWFhcnRlbl0KPiB2NjogQmFzZWQgb24gcmV2 aWV3IGZlZWRiYWNrIGZvbGxvd2luZyBjaGFuZ2VzIGFyZSBhZGRlZCwKPiAtIHJlcGxhY2VkIGlu dGVsX2RzYiBzdHJ1Y3R1cmUgYnkgcG9pbnRlciBpbiBpbnRlbF9jcnRjX3N0YXRlLiBbTWFhcnRl bl0KPiAtIHBhc3NpbmcgaW50ZWxfY3J0Y19zdGF0ZSB0byBkc3AtYXBpIHRvIHNpbXBsaWZ5IHRo ZSBjb2RlLiBbTWFhcnRlbl0KPiAtIGZldyBkc2IgZnVuY3Rpb25zIHByb3RvdHlwZSBtb2RpZmll ZCB0byBzaW1wbGlmeSBjb2RlLgo+IHY3OiBhZGRlZCBmZXcgY29zbWV0aWMgY2hhbmdlcyBzdWdn ZXN0ZWQgYnkgSmFuaSBhbmQgbnVsbCBjaGVjayBmb3IKPiBjcnRjX3N0YXRlIGluIGRzYl9jbGVh bnVwKCkgcmVtb3ZlZCBhcyBzdWdnZXN0ZWQgYnkgTWFhcnRlbi4KPgo+IENjOiBNYWFydGVuIExh bmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IENjOiBWaWxsZSBT eXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBKYW5pIE5pa3Vs YSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGZmd2xsLmNoPgo+IEFja2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZm d2xsLmNoPgo+IFNpZ25lZC1vZmYtYnk6IEFuaW1lc2ggTWFubmEgPGFuaW1lc2gubWFubmFAaW50 ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21p Yy5jICAgfCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9y LmMgICAgfCAgNTEgKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXkuYyAgfCAgNTggKysrKy0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eV90eXBlcy5oICAgIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZHNiLmMgICAgICB8IDI0NiArKysrKysrKy0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kc2IuaCAgICAgIHwgIDE3ICstCj4gIDYgZmlsZXMgY2hhbmdl ZCwgMTk1IGluc2VydGlvbnMoKyksIDE4NiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+IGluZGV4IGQwNDMwNTdkMmZhMC4uM2Ni ODY2ZjIyZTc0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYXRvbWljLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0 b21pYy5jCj4gQEAgLTI1Miw2ICsyNTIsNyBAQCBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAljcnRjX3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBk YXRlID0gZmFsc2U7Cj4gIAljcnRjX3N0YXRlLT5mYl9iaXRzID0gMDsKPiAgCWNydGNfc3RhdGUt PnVwZGF0ZV9wbGFuZXMgPSAwOwo+ICsJY3J0Y19zdGF0ZS0+ZHNiID0gTlVMTDsKPiAgCj4gIAly ZXR1cm4gJmNydGNfc3RhdGUtPnVhcGk7Cj4gIH0KPiBAQCAtMjkyLDYgKzI5Myw4IEBAIGludGVs X2NydGNfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIHsKPiAgCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShzdGF0 ZSk7Cj4gIAo+ICsJZHJtX1dBUk5fT04oY3J0Yy0+ZGV2LCBjcnRjX3N0YXRlLT5kc2IpOwo+ICsK PiAgCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKCZjcnRjX3N0YXRlLT51 YXBpKTsKPiAgCWludGVsX2NydGNfZnJlZV9od19zdGF0ZShjcnRjX3N0YXRlKTsKPiAgCWtmcmVl KGNydGNfc3RhdGUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2NvbG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9y LmMKPiBpbmRleCA5OGVjZTljZDdjZGQuLmJjMDkzNDY4OTUwNSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKPiBAQCAtNzE3LDEzICs3MTcsMTQgQEAg c3RhdGljIHZvaWQgYmR3X2xvYWRfbHV0XzEwKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICBz dGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRfZXh0X21heChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK PiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj LT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBpbnRlbF9kc2JfZ2V0KGNy dGMpOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ICsJCXRvX2lu dGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNy dGMtPnBpcGU7CgpQbGVhc2UgdXNlIGNydGNfc3RhdGUgaGVyZSwgeW91IGNhbm5vdCByZWx5IG9u IGNydGMtPnN0YXRlIGJlaW5nIHRoZSByaWdodCBzdGF0ZSBhbmQgY2FuIGJlIGZyZWVkIGZyb20g dW5kZXIgeW91LgoKPiAgCS8qIFByb2dyYW0gdGhlIG1heCByZWdpc3RlciB0byBjbGFtcCB2YWx1 ZXMgPiAxLjAuICovCj4gLQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUX0dD X01BWChwaXBlLCAwKSwgMSA8PCAxNik7Cj4gLQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJF Q19QQUxfRVhUX0dDX01BWChwaXBlLCAxKSwgMSA8PCAxNik7Cj4gLQlpbnRlbF9kc2JfcmVnX3dy aXRlKGRzYiwgUFJFQ19QQUxfRVhUX0dDX01BWChwaXBlLCAyKSwgMSA8PCAxNik7Cj4gKwlpbnRl bF9kc2JfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0VYVF9HQ19NQVgocGlwZSwgMCks IDEgPDwgMTYpOwo+ICsJaW50ZWxfZHNiX3JlZ193cml0ZShjcnRjX3N0YXRlLCBQUkVDX1BBTF9F WFRfR0NfTUFYKHBpcGUsIDEpLCAxIDw8IDE2KTsKPiArCWludGVsX2RzYl9yZWdfd3JpdGUoY3J0 Y19zdGF0ZSwgUFJFQ19QQUxfRVhUX0dDX01BWChwaXBlLCAyKSwgMSA8PCAxNik7Cj4gIAo+ICAJ LyoKPiAgCSAqIFByb2dyYW0gdGhlIGdjIG1heCAyIHJlZ2lzdGVyIHRvIGNsYW1wIHZhbHVlcyA+ IDEuMC4KPiBAQCAtNzMxLDE1ICs3MzIsMTMgQEAgc3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0X2V4 dF9tYXgoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAkgKiBmcm9tIDMuMCB0byA3LjAKPiAg CSAqLwo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikpIHsKPiAtCQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUMl9H Q19NQVgocGlwZSwgMCksCj4gKwkJaW50ZWxfZHNiX3JlZ193cml0ZShjcnRjX3N0YXRlLCBQUkVD X1BBTF9FWFQyX0dDX01BWChwaXBlLCAwKSwKPiAgCQkJCSAgICAxIDw8IDE2KTsKPiAtCQlpbnRl bF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMSksCj4gKwkJ aW50ZWxfZHNiX3JlZ193cml0ZShjcnRjX3N0YXRlLCBQUkVDX1BBTF9FWFQyX0dDX01BWChwaXBl LCAxKSwKPiAgCQkJCSAgICAxIDw8IDE2KTsKPiAtCQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwg UFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMiksCj4gKwkJaW50ZWxfZHNiX3JlZ193cml0ZShj cnRjX3N0YXRlLCBQUkVDX1BBTF9FWFQyX0dDX01BWChwaXBlLCAyKSwKPiAgCQkJCSAgICAxIDw8 IDE2KTsKPiAgCX0KPiAtCj4gLQlpbnRlbF9kc2JfcHV0KGRzYik7Cj4gIH0KPiAgCgoKPiAgc3Rh dGljIHZvaWQgaXZiX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiBAQCAtOTAwLDE0ICs4OTksMTIgQEAgaWNsX2xvYWRfZ2NtYXgoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkgICAgICAgY29uc3Qgc3RydWN0 IGRybV9jb2xvcl9sdXQgKmNvbG9yKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAtCXN0cnVjdCBpbnRlbF9k c2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMt PnBpcGU7Cj4gIAo+ICAJLyogRklYTUUgTFVUIGVudHJpZXMgYXJlIDE2IGJpdCBvbmx5LCBzbyB3 ZSBjYW4gcHJvZyAweEZGRkYgbWF4ICovCj4gLQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJF Q19QQUxfR0NfTUFYKHBpcGUsIDApLCBjb2xvci0+cmVkKTsKPiAtCWludGVsX2RzYl9yZWdfd3Jp dGUoZHNiLCBQUkVDX1BBTF9HQ19NQVgocGlwZSwgMSksIGNvbG9yLT5ncmVlbik7Cj4gLQlpbnRl bF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIpLCBjb2xvci0+Ymx1 ZSk7Cj4gLQlpbnRlbF9kc2JfcHV0KGRzYik7Cj4gKwlpbnRlbF9kc2JfcmVnX3dyaXRlKGNydGNf c3RhdGUsIFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSwgY29sb3ItPnJlZCk7Cj4gKwlpbnRlbF9k c2JfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0dDX01BWChwaXBlLCAxKSwgY29sb3It PmdyZWVuKTsKPiArCWludGVsX2RzYl9yZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfR0Nf TUFYKHBpcGUsIDIpLCBjb2xvci0+Ymx1ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gQEAg LTkxNiw3ICs5MTMsNiBAQCBpY2xfcHJvZ3JhbV9nYW1tYV9zdXBlcmZpbmVfc2VnbWVudChjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJY29u c3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFf bHV0Owo+ICAJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGJsb2ItPmRhdGE7Cj4g LQlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBpbnRlbF9kc2JfZ2V0KGNydGMpOwo+ICAJZW51bSBw aXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJaW50IGk7Cj4gIAo+IEBAIC05MjcsMTkgKzkyMywx NyBAQCBpY2xfcHJvZ3JhbV9nYW1tYV9zdXBlcmZpbmVfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCSAqIDkgZW50cmllcywgY29ycmVzcG9uZGlu ZyB0byB2YWx1ZXMgMCwgMS8oOCAqIDEyOCAqIDI1NiksCj4gIAkgKiAyLyg4ICogMTI4ICogMjU2 KSAuLi4gOC8oOCAqIDEyOCAqIDI1NikuCj4gIAkgKi8KPiAtCWludGVsX2RzYl9yZWdfd3JpdGUo ZHNiLCBQUkVDX1BBTF9NVUxUSV9TRUdfSU5ERVgocGlwZSksCj4gKwlpbnRlbF9kc2JfcmVnX3dy aXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX01VTFRJX1NFR19JTkRFWChwaXBlKSwKPiAgCQkJICAg IFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgOTsgaSsr KSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5ID0gJmx1dFtpXTsKPiAg Cj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfTVVMVElfU0VH X0RBVEEocGlwZSksCj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3RhdGUs IFBSRUNfUEFMX01VTFRJX1NFR19EQVRBKHBpcGUpLAo+ICAJCQkJCSAgICBpbGtfbHV0XzEycDRf bGR3KGVudHJ5KSk7Cj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJFQ19Q QUxfTVVMVElfU0VHX0RBVEEocGlwZSksCj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRl KGNydGNfc3RhdGUsIFBSRUNfUEFMX01VTFRJX1NFR19EQVRBKHBpcGUpLAo+ICAJCQkJCSAgICBp bGtfbHV0XzEycDRfdWR3KGVudHJ5KSk7Cj4gIAl9Cj4gLQo+IC0JaW50ZWxfZHNiX3B1dChkc2Ip Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBAIC05NDksNyArOTQzLDYgQEAgaWNsX3Byb2dy YW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiAgCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNf c3RhdGUtPmh3LmdhbW1hX2x1dDsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQg PSBibG9iLT5kYXRhOwo+ICAJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5Owo+IC0J c3RydWN0IGludGVsX2RzYiAqZHNiID0gaW50ZWxfZHNiX2dldChjcnRjKTsKPiAgCWVudW0gcGlw ZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCWludCBpOwo+ICAKPiBAQCAtOTYzLDEyICs5NTYsMTMg QEAgaWNsX3Byb2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCSAqIFBBTF9QUkVDX0lOREVYWzBdIGFuZCBQQUxfUFJF Q19JTkRFWFsxXSBtYXAgdG8gc2VnMlsxXSwKPiAgCSAqIHNlZzJbMF0gYmVpbmcgdW51c2VkIGJ5 IHRoZSBoYXJkd2FyZS4KPiAgCSAqLwo+IC0JaW50ZWxfZHNiX3JlZ193cml0ZShkc2IsIFBSRUNf UEFMX0lOREVYKHBpcGUpLCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7Cj4gKwlpbnRlbF9kc2Jf cmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0lOREVYKHBpcGUpLAo+ICsJCQkgICAgUEFM X1BSRUNfQVVUT19JTkNSRU1FTlQpOwo+ICAJZm9yIChpID0gMTsgaSA8IDI1NzsgaSsrKSB7Cj4g IAkJZW50cnkgPSAmbHV0W2kgKiA4XTsKPiAtCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUo ZHNiLCBQUkVDX1BBTF9EQVRBKHBpcGUpLAo+ICsJCWludGVsX2RzYl9pbmRleGVkX3JlZ193cml0 ZShjcnRjX3N0YXRlLCBQUkVDX1BBTF9EQVRBKHBpcGUpLAo+ICAJCQkJCSAgICBpbGtfbHV0XzEy cDRfbGR3KGVudHJ5KSk7Cj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJF Q19QQUxfREFUQShwaXBlKSwKPiArCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoY3J0Y19z dGF0ZSwgUFJFQ19QQUxfREFUQShwaXBlKSwKPiAgCQkJCQkgICAgaWxrX2x1dF8xMnA0X3Vkdyhl bnRyeSkpOwo+ICAJfQo+ICAKPiBAQCAtOTg2LDkgKzk4MCw5IEBAIGljbF9wcm9ncmFtX2dhbW1h X211bHRpX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIAkgKi8KPiAgCWZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewo+ICAJCWVudHJ5ID0gJmx1 dFtpICogOCAqIDEyOF07Cj4gLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJF Q19QQUxfREFUQShwaXBlKSwKPiArCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoY3J0Y19z dGF0ZSwgUFJFQ19QQUxfREFUQShwaXBlKSwKPiAgCQkJCQkgICAgaWxrX2x1dF8xMnA0X2xkdyhl bnRyeSkpOwo+IC0JCWludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShkc2IsIFBSRUNfUEFMX0RB VEEocGlwZSksCj4gKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBS RUNfUEFMX0RBVEEocGlwZSksCj4gIAkJCQkJICAgIGlsa19sdXRfMTJwNF91ZHcoZW50cnkpKTsK PiAgCX0KPiAgCj4gQEAgLTk5NiwxNCArOTkwLDEyIEBAIGljbF9wcm9ncmFtX2dhbW1hX211bHRp X3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAll bnRyeSA9ICZsdXRbMjU2ICogOCAqIDEyOF07Cj4gIAlpY2xfbG9hZF9nY21heChjcnRjX3N0YXRl LCBlbnRyeSk7Cj4gIAlpdmJfbG9hZF9sdXRfZXh0X21heChjcnRjKTsKPiAtCWludGVsX2RzYl9w dXQoZHNiKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaWNsX2xvYWRfbHV0cyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7Cj4g IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFw aS5jcnRjKTsKPiAtCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7 Cj4gIAo+ICAJaWYgKGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQo+ICAJCWdsa19sb2FkX2Rl Z2FtbWFfbHV0KGNydGNfc3RhdGUpOwo+IEBAIC0xMDIxLDggKzEwMTMsNyBAQCBzdGF0aWMgdm9p ZCBpY2xfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICAJCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOwo+ICAJfQo+ICAKPiAtCWludGVsX2Rz Yl9jb21taXQoZHNiKTsKPiAtCWludGVsX2RzYl9wdXQoZHNiKTsKPiArCWludGVsX2RzYl9jb21t aXQoY3J0Y19zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB1MzIgY2h2X2NnbV9kZWdhbW1hX2xk dyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA0MzJiNGVlYWY5ZjYuLjUxNDQ4 M2ZmZDI0NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheS5jCj4gQEAgLTE0ODczLDggKzE0ODczLDI0IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWlj X2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICBzdGF0aWMgaW50IGludGVsX2F0 b21pY19wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAg ewo+IC0JcmV0dXJuIGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0YXRlLT5iYXNl LmRldiwKPiAtCQkJCQkJJnN0YXRlLT5iYXNlKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlpbnQgaSwgcmV0 Owo+ICsKPiArCXJldCA9IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0YXRlLT5i YXNlLmRldiwgJnN0YXRlLT5iYXNlKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7 Cj4gKwo+ICsJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNy dGNfc3RhdGUsIGkpIHsKPiArCQlib29sIG1vZGVfY2hhbmdlZCA9IG5lZWRzX21vZGVzZXQoY3J0 Y19zdGF0ZSk7Cj4gKwo+ICsJCWlmIChtb2RlX2NoYW5nZWQgfHwgY3J0Y19zdGF0ZS0+dXBkYXRl X3BpcGUgfHwKPiArCQkgICAgY3J0Y19zdGF0ZS0+dWFwaS5jb2xvcl9tZ210X2NoYW5nZWQpIHsK PiArCQkJaW50ZWxfZHNiX3ByZXBhcmUoY3J0Y19zdGF0ZSk7Cj4gKwkJfQo+ICsJfQo+ICsKPiAr CXJldHVybiAwOwo+ICB9Cj4gIAo+ICB1MzIgaW50ZWxfY3J0Y19nZXRfdmJsYW5rX2NvdW50ZXIo c3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gQEAgLTE1MzI3LDE1ICsxNTM0MywyNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X2ZlbmNlX3dhaXQoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqaW50ZWxfc3RhdAo+ICAJCSAgICAmd2FpdF9yZXNldCk7Cj4gIH0KPiAgCj4gK3N0 YXRpYyB2b2lkIGludGVsX2NsZWFudXBfZHNicyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAq bmV3X2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiArCWludCBpOwo+ ICsKPiArCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBv bGRfY3J0Y19zdGF0ZSwKPiArCQkJCQkgICAgbmV3X2NydGNfc3RhdGUsIGkpCj4gKwkJaW50ZWxf ZHNiX2NsZWFudXAob2xkX2NydGNfc3RhdGUpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBpbnRl bF9hdG9taWNfY2xlYW51cF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgewo+IC0J c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0KPiAtCQljb250YWluZXJfb2Yod29yaywg c3RydWN0IGRybV9hdG9taWNfc3RhdGUsIGNvbW1pdF93b3JrKTsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlID0KPiArCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSwgYmFzZS5jb21taXRfd29yayk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKPiAgCj4gLQlkcm1fYXRvbWlj X2hlbHBlcl9jbGVhbnVwX3BsYW5lcygmaTkxNS0+ZHJtLCBzdGF0ZSk7Cj4gLQlkcm1fYXRvbWlj X2hlbHBlcl9jb21taXRfY2xlYW51cF9kb25lKHN0YXRlKTsKPiAtCWRybV9hdG9taWNfc3RhdGVf cHV0KHN0YXRlKTsKPiArCWludGVsX2NsZWFudXBfZHNicyhzdGF0ZSk7Cj4gKwlkcm1fYXRvbWlj X2hlbHBlcl9jbGVhbnVwX3BsYW5lcygmaTkxNS0+ZHJtLCAmc3RhdGUtPmJhc2UpOwo+ICsJZHJt X2F0b21pY19oZWxwZXJfY29tbWl0X2NsZWFudXBfZG9uZSgmc3RhdGUtPmJhc2UpOwo+ICsJZHJt X2F0b21pY19zdGF0ZV9wdXQoJnN0YXRlLT5iYXNlKTsKPiAgCj4gIAlpbnRlbF9hdG9taWNfaGVs cGVyX2ZyZWVfc3RhdGUoaTkxNSk7Cj4gIH0KPiBAQCAtMTU0NjksNiArMTU0OTcsMTMgQEAgc3Rh dGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ICAJCQltb2Rlc2V0X3B1dF9wb3dlcl9kb21haW5zKGRldl9wcml2LCBwdXRf ZG9tYWluc1tpXSk7Cj4gIAo+ICAJCWludGVsX21vZGVzZXRfdmVyaWZ5X2NydGMoY3J0Yywgc3Rh dGUsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJCS8qCj4gKwkJICog RFNCIGNsZWFudXAgaXMgZG9uZSBpbiBjbGVhbnVwX3dvcmsgYWxpZ25pbmcgd2l0aCBmcmFtZWJ1 ZmZlcgo+ICsJCSAqIGNsZWFudXAuIFNvIGNvcHkgYW5kIHJlc2V0IHRoZSBkc2Igc3RydWN0dXJl IHRvIHN5bmMgd2l0aAo+ICsJCSAqIGNvbW1pdF9kb25lIGFuZCBsYXRlciBkbyBkc2IgY2xlYW51 cCBpbiBjbGVhbnVwX3dvcmsuCj4gKwkJICovCj4gKwkJb2xkX2NydGNfc3RhdGUtPmRzYiA9IGZl dGNoX2FuZF96ZXJvKCZuZXdfY3J0Y19zdGF0ZS0+ZHNiKTsKPiAgCX0KPiAgCj4gIAkvKiBVbmRl cnJ1bnMgZG9uJ3QgYWx3YXlzIHJhaXNlIGludGVycnVwdHMsIHNvIGNoZWNrIG1hbnVhbGx5ICov Cj4gQEAgLTE1NjE4LDggKzE1NjUzLDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWludGVsX2F0b21pY19zd2FwX2dsb2JhbF9z dGF0ZShzdGF0ZSk7Cj4gIAo+ICAJaWYgKHJldCkgewo+ICsJCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpuZXdfY3J0Y19zdGF0ZTsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiArCQlp bnQgaTsKPiArCj4gIAkJaTkxNV9zd19mZW5jZV9jb21taXQoJnN0YXRlLT5jb21taXRfcmVhZHkp Owo+ICAKPiArCQlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg bmV3X2NydGNfc3RhdGUsIGkpCj4gKwkJCWludGVsX2RzYl9jbGVhbnVwKG5ld19jcnRjX3N0YXRl KTsKPiArCj4gIAkJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCAmc3RhdGUt PmJhc2UpOwo+ICAJCWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwg c3RhdGUtPndha2VyZWYpOwo+ICAJCXJldHVybiByZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiBpbmRleCA4Nzg3NmZjZTkx YTUuLmNhNTc5MDA1ZDgxOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gQEAgLTEwNzgsNiArMTA3OCw5IEBAIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlIHsKPiAgCj4gIAkvKiBPbmx5IHZhbGlkIG9uIFRHTCsgKi8KPiAg CWVudW0gdHJhbnNjb2RlciBtc3RfbWFzdGVyX3RyYW5zY29kZXI7Cj4gKwo+ICsJLyogRm9yIERT QiByZWxhdGVkIGluZm8gKi8KPiArCXN0cnVjdCBpbnRlbF9kc2IgKmRzYjsKPiAgfTsKPiAgCj4g IGVudW0gaW50ZWxfcGlwZV9jcmNfc291cmNlIHsKPiBAQCAtMTE0Nyw5ICsxMTUwLDYgQEAgc3Ry dWN0IGludGVsX2NydGMgewo+ICAJLyogc2NhbGVycyBhdmFpbGFibGUgb24gdGhpcyBjcnRjICov Cj4gIAlpbnQgbnVtX3NjYWxlcnM7Cj4gIAo+IC0JLyogcGVyIHBpcGUgRFNCIHJlbGF0ZWQgaW5m byAqLwo+IC0Jc3RydWN0IGludGVsX2RzYiBkc2I7Cj4gLQo+ICAjaWZkZWYgQ09ORklHX0RFQlVH X0ZTCj4gIAlzdHJ1Y3QgaW50ZWxfcGlwZV9jcmMgcGlwZV9jcmM7Cj4gICNlbmRpZgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzYi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2IuYwo+IGluZGV4IDI5ZmVjNmE5MmQxNy4u MDY0MjQyODE3NmJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHNiLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rz Yi5jCj4gQEAgLTM0LDE1MiArMzQsNTIgQEAKPiAgI2RlZmluZSBEU0JfQllURV9FTl9TSElGVAkJ MjAKPiAgI2RlZmluZSBEU0JfUkVHX1ZBTFVFX01BU0sJCTB4ZmZmZmYKPiAgCj4gLXN0YXRpYyBi b29sIGlzX2RzYl9idXN5KHN0cnVjdCBpbnRlbF9kc2IgKmRzYikKPiArc3RhdGljIGJvb2wgaXNf ZHNiX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGVudW0gcGlwZSBwaXBlLAo+ ICsJCQllbnVtIGRzYl9pZCBpZCkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBj b250YWluZXJfb2YoZHNiLCB0eXBlb2YoKmNydGMpLCBkc2IpOwo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gLQllbnVtIHBp cGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gLQo+IC0JcmV0dXJuIERTQl9TVEFUVVMgJiBpbnRlbF9k ZV9yZWFkKGRldl9wcml2LCBEU0JfQ1RSTChwaXBlLCBkc2ItPmlkKSk7Cj4gKwlyZXR1cm4gRFNC X1NUQVRVUyAmIGludGVsX2RlX3JlYWQoaTkxNSwgRFNCX0NUUkwocGlwZSwgaWQpKTsKPiAgfQo+ ICAKPiAtc3RhdGljIGJvb2wgaW50ZWxfZHNiX2VuYWJsZV9lbmdpbmUoc3RydWN0IGludGVsX2Rz YiAqZHNiKQo+ICtzdGF0aWMgYm9vbCBpbnRlbF9kc2JfZW5hYmxlX2VuZ2luZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiArCQkJCSAgICBlbnVtIHBpcGUgcGlwZSwgZW51bSBkc2Jf aWQgaWQpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRz YiwgdHlwZW9mKCpjcnRjKSwgZHNiKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBjcnRj LT5waXBlOwo+ICAJdTMyIGRzYl9jdHJsOwo+ICAKPiAtCWRzYl9jdHJsID0gaW50ZWxfZGVfcmVh ZChkZXZfcHJpdiwgRFNCX0NUUkwocGlwZSwgZHNiLT5pZCkpOwo+ICsJZHNiX2N0cmwgPSBpbnRl bF9kZV9yZWFkKGk5MTUsIERTQl9DVFJMKHBpcGUsIGlkKSk7Cj4gIAlpZiAoRFNCX1NUQVRVUyAm IGRzYl9jdHJsKSB7Cj4gLQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJEU0IgZW5naW5l IGlzIGJ1c3kuXG4iKTsKPiArCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiRFNCIGVuZ2luZSBp cyBidXN5LlxuIik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAgCWRzYl9jdHJsIHw9 IERTQl9FTkFCTEU7Cj4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRFNCX0NUUkwocGlwZSwg ZHNiLT5pZCksIGRzYl9jdHJsKTsKPiArCWludGVsX2RlX3dyaXRlKGk5MTUsIERTQl9DVFJMKHBp cGUsIGlkKSwgZHNiX2N0cmwpOwo+ICAKPiAtCWludGVsX2RlX3Bvc3RpbmdfcmVhZChkZXZfcHJp diwgRFNCX0NUUkwocGlwZSwgZHNiLT5pZCkpOwo+ICsJaW50ZWxfZGVfcG9zdGluZ19yZWFkKGk5 MTUsIERTQl9DVFJMKHBpcGUsIGlkKSk7Cj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAtc3Rh dGljIGJvb2wgaW50ZWxfZHNiX2Rpc2FibGVfZW5naW5lKHN0cnVjdCBpbnRlbF9kc2IgKmRzYikK PiArc3RhdGljIGJvb2wgaW50ZWxfZHNiX2Rpc2FibGVfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+ICsJCQkJICAgICBlbnVtIHBpcGUgcGlwZSwgZW51bSBkc2JfaWQgaWQp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlw ZW9mKCpjcnRjKSwgZHNiKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBl Owo+ICAJdTMyIGRzYl9jdHJsOwo+ICAKPiAtCWRzYl9jdHJsID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwgRFNCX0NUUkwocGlwZSwgZHNiLT5pZCkpOwo+ICsJZHNiX2N0cmwgPSBpbnRlbF9kZV9y ZWFkKGk5MTUsIERTQl9DVFJMKHBpcGUsIGlkKSk7Cj4gIAlpZiAoRFNCX1NUQVRVUyAmIGRzYl9j dHJsKSB7Cj4gLQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJEU0IgZW5naW5lIGlzIGJ1 c3kuXG4iKTsKPiArCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiRFNCIGVuZ2luZSBpcyBidXN5 LlxuIik7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAgCWRzYl9jdHJsICY9IH5EU0Jf RU5BQkxFOwo+IC0JaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIERTQl9DVFJMKHBpcGUsIGRzYi0+ aWQpLCBkc2JfY3RybCk7Cj4gKwlpbnRlbF9kZV93cml0ZShpOTE1LCBEU0JfQ1RSTChwaXBlLCBp ZCksIGRzYl9jdHJsKTsKPiAgCj4gLQlpbnRlbF9kZV9wb3N0aW5nX3JlYWQoZGV2X3ByaXYsIERT Ql9DVFJMKHBpcGUsIGRzYi0+aWQpKTsKPiArCWludGVsX2RlX3Bvc3RpbmdfcmVhZChpOTE1LCBE U0JfQ1RSTChwaXBlLCBpZCkpOwo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gLS8qKgo+IC0g KiBpbnRlbF9kc2JfZ2V0KCkgLSBBbGxvY2F0ZSBEU0IgY29udGV4dCBhbmQgcmV0dXJuIGEgRFNC IGluc3RhbmNlLgo+IC0gKiBAY3J0YzogaW50ZWxfY3J0YyBzdHJ1Y3R1cmUgdG8gZ2V0IHBpcGUg aW5mby4KPiAtICoKPiAtICogVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBoYW5kbGUgb2YgYSBEU0Ig aW5zdGFuY2UsIGZvciB0aGUgZnVydGhlciBEU0IKPiAtICogb3BlcmF0aW9ucy4KPiAtICoKPiAt ICogUmV0dXJuczogYWRkcmVzcyBvZiBJbnRlbF9kc2IgaW5zdGFuY2UgcmVxdWVzdGVkIGZvci4K PiAtICogRmFpbHVyZTogUmV0dXJucyB0aGUgc2FtZSBEU0IgaW5zdGFuY2UsIGJ1dCB3aXRob3V0 IGEgY29tbWFuZCBidWZmZXIuCj4gLSAqLwo+IC0KPiAtc3RydWN0IGludGVsX2RzYiAqCj4gLWlu dGVsX2RzYl9nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gLXsKPiAtCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGludGVsX2RzYiAqZHNiID0gJmNydGMt PmRzYjsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQlzdHJ1Y3QgaTkx NV92bWEgKnZtYTsKPiAtCXUzMiAqYnVmOwo+IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4g LQo+IC0JaWYgKCFIQVNfRFNCKGk5MTUpKQo+IC0JCXJldHVybiBkc2I7Cj4gLQo+IC0JaWYgKGRz Yi0+cmVmY291bnQrKyAhPSAwKQo+IC0JCXJldHVybiBkc2I7Cj4gLQo+IC0Jd2FrZXJlZiA9IGlu dGVsX3J1bnRpbWVfcG1fZ2V0KCZpOTE1LT5ydW50aW1lX3BtKTsKPiAtCj4gLQlvYmogPSBpOTE1 X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUsIERTQl9CVUZfU0laRSk7Cj4gLQlpZiAo SVNfRVJSKG9iaikpIHsKPiAtCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJHZW0gb2JqZWN0IGNyZWF0 aW9uIGZhaWxlZFxuIik7Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQo+IC0Jdm1hID0gaTkxNV9n ZW1fb2JqZWN0X2dndHRfcGluKG9iaiwgTlVMTCwgMCwgMCwgMCk7Cj4gLQlpZiAoSVNfRVJSKHZt YSkpIHsKPiAtCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJWbWEgY3JlYXRpb24gZmFpbGVkXG4iKTsK PiAtCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQo+ IC0JYnVmID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAodm1hLT5vYmosIEk5MTVfTUFQX1dDKTsK PiAtCWlmIChJU19FUlIoYnVmKSkgewo+IC0JCWRybV9lcnIoJmk5MTUtPmRybSwgIkNvbW1hbmQg YnVmZmVyIGNyZWF0aW9uIGZhaWxlZFxuIik7Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQo+IC0J ZHNiLT5pZCA9IERTQjE7Cj4gLQlkc2ItPnZtYSA9IHZtYTsKPiAtCWRzYi0+Y21kX2J1ZiA9IGJ1 ZjsKPiAtCj4gLW91dDoKPiAtCS8qCj4gLQkgKiBPbiBlcnJvciBkc2ItPmNtZF9idWYgd2lsbCBj b250aW51ZSB0byBiZSBOVUxMLCBtYWtpbmcgdGhlIHdyaXRlcwo+IC0JICogcGFzcy10aHJvdWdo LiBMZWF2ZSB0aGUgZGFuZ2xpbmcgcmVmIHRvIGJlIHJlbW92ZWQgbGF0ZXIgYnkgdGhlCj4gLQkg KiBjb3JyZXNwb25kaW5nIGludGVsX2RzYl9wdXQoKTogdGhlIGltcG9ydGFudCBlcnJvciBtZXNz YWdlIHdpbGwKPiAtCSAqIGFscmVhZHkgYmUgbG9nZ2VkIGFib3ZlLgo+IC0JICovCj4gLQo+IC0J aW50ZWxfcnVudGltZV9wbV9wdXQoJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwo+IC0KPiAt CXJldHVybiBkc2I7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBpbnRlbF9kc2JfcHV0KCkgLSBUbyBk ZXN0cm95IERTQiBjb250ZXh0Lgo+IC0gKiBAZHNiOiBpbnRlbF9kc2Igc3RydWN0dXJlLgo+IC0g Kgo+IC0gKiBUaGlzIGZ1bmN0aW9uIGRlc3Ryb3lzIHRoZSBEU0IgY29udGV4dCBhbGxvY2F0ZWQg YnkgYSBkc2JfZ2V0KCksIGJ5Cj4gLSAqIHVucGlubmluZyBhbmQgcmVsZWFzaW5nIHRoZSBWTUEg b2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBpdC4KPiAtICovCj4gLQo+IC12b2lkIGludGVsX2RzYl9w dXQoc3RydWN0IGludGVsX2RzYiAqZHNiKQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IGNvbnRhaW5lcl9vZihkc2IsIHR5cGVvZigqY3J0YyksIGRzYik7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0KPiAtCWlm ICghSEFTX0RTQihpOTE1KSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaWYgKGRybV9XQVJOX09OKCZp OTE1LT5kcm0sIGRzYi0+cmVmY291bnQgPT0gMCkpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWlmICgt LWRzYi0+cmVmY291bnQgPT0gMCkgewo+IC0JCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZk c2ItPnZtYSwgSTkxNV9WTUFfUkVMRUFTRV9NQVApOwo+IC0JCWRzYi0+Y21kX2J1ZiA9IE5VTEw7 Cj4gLQkJZHNiLT5mcmVlX3BvcyA9IDA7Cj4gLQkJZHNiLT5pbnNfc3RhcnRfb2Zmc2V0ID0gMDsK PiAtCX0KPiAtfQo+IC0KPiAgLyoqCj4gICAqIGludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZSgp IC1Xcml0ZSB0byB0aGUgRFNCIGNvbnRleHQgZm9yIGF1dG8KPiAgICogaW5jcmVtZW50IHJlZ2lz dGVyLgo+IC0gKiBAZHNiOiBpbnRlbF9kc2Igc3RydWN0dXJlLgo+ICsgKiBAY3J0Y19zdGF0ZTog aW50ZWxfY3J0Y19zdGF0ZSBzdHJ1Y3R1cmUKPiAgICogQHJlZzogcmVnaXN0ZXIgYWRkcmVzcy4K PiAgICogQHZhbDogdmFsdWUuCj4gICAqCj4gQEAgLTE4OSwxOSArODksMjAgQEAgdm9pZCBpbnRl bF9kc2JfcHV0KHN0cnVjdCBpbnRlbF9kc2IgKmRzYikKPiAgICogaXMgZG9uZSB0aHJvdWdoIG1t aW8gd3JpdGUuCj4gICAqLwo+ICAKPiAtdm9pZCBpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUo c3RydWN0IGludGVsX2RzYiAqZHNiLCBpOTE1X3JlZ190IHJlZywKPiAtCQkJCSB1MzIgdmFsKQo+ ICt2b2lkIGludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiArCQkJCSBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCkKPiAg ewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBjb250YWluZXJfb2YoZHNiLCB0eXBlb2Yo KmNydGMpLCBkc2IpOwo+ICsJc3RydWN0IGludGVsX2RzYiAqZHNiID0gY3J0Y19zdGF0ZS0+ZHNi Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGMtPmJhc2UuZGV2KTsKPiAtCXUzMiAqYnVmID0gZHNiLT5jbWRfYnVmOwo+ICsJdTMy ICpidWY7Cj4gIAl1MzIgcmVnX3ZhbDsKPiAgCj4gLQlpZiAoIWJ1Zikgewo+ICsJaWYgKCEoZHNi ICYmIGRzYi0+Y21kX2J1ZikpIHsKPiAgCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB2 YWwpOwo+ICAJCXJldHVybjsKPiAgCX0KPiAtCj4gKwlidWYgPSBkc2ItPmNtZF9idWY7Cj4gIAlp ZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGRzYi0+ZnJlZV9wb3MgPj0gRFNCX0JVRl9T SVpFKSkgewo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRFNCIGJ1ZmZlciBvdmVy Zmxvd1xuIik7Cj4gIAkJcmV0dXJuOwo+IEBAIC0yNTYsNyArMTU3LDcgQEAgdm9pZCBpbnRlbF9k c2JfaW5kZXhlZF9yZWdfd3JpdGUoc3RydWN0IGludGVsX2RzYiAqZHNiLCBpOTE1X3JlZ190IHJl ZywKPiAgLyoqCj4gICAqIGludGVsX2RzYl9yZWdfd3JpdGUoKSAtV3JpdGUgdG8gdGhlIERTQiBj b250ZXh0IGZvciBub3JtYWwKPiAgICogcmVnaXN0ZXIuCj4gLSAqIEBkc2I6IGludGVsX2RzYiBz dHJ1Y3R1cmUuCj4gKyAqIEBjcnRjX3N0YXRlOiBpbnRlbF9jcnRjX3N0YXRlIHN0cnVjdHVyZQo+ ICAgKiBAcmVnOiByZWdpc3RlciBhZGRyZXNzLgo+ICAgKiBAdmFsOiB2YWx1ZS4KPiAgICoKPiBA QCAtMjY1LDE3ICsxNjYsMTkgQEAgdm9pZCBpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoc3Ry dWN0IGludGVsX2RzYiAqZHNiLCBpOTE1X3JlZ190IHJlZywKPiAgICogYW5kIHJlc3QgYWxsIGVy cm9uZW91cyBjb25kaXRpb24gcmVnaXN0ZXIgcHJvZ3JhbW1pbmcgaXMgZG9uZQo+ICAgKiB0aHJv dWdoIG1taW8gd3JpdGUuCj4gICAqLwo+IC12b2lkIGludGVsX2RzYl9yZWdfd3JpdGUoc3RydWN0 IGludGVsX2RzYiAqZHNiLCBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCkKPiArdm9pZCBpbnRlbF9k c2JfcmVnX3dyaXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICsJCQkgaTkxNV9yZWdfdCByZWcsIHUzMiB2YWwpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlwZW9mKCpjcnRjKSwgZHNiKTsKPiArCXN0cnVj dCBpbnRlbF9kc2IgKmRzYiA9IGNydGNfc3RhdGUtPmRzYjsKPiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4g IAl1MzIgKmJ1ZiA9IGRzYi0+Y21kX2J1ZjsKPiAgCj4gLQlpZiAoIWJ1Zikgewo+ICsJaWYgKCEo ZHNiICYmIGRzYi0+Y21kX2J1ZikpIHsKPiAgCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVn LCB2YWwpOwo+ICAJCXJldHVybjsKPiAgCX0KPiAtCj4gKwlidWYgPSBkc2ItPmNtZF9idWY7Cj4g IAlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGRzYi0+ZnJlZV9wb3MgPj0gRFNCX0JV Rl9TSVpFKSkgewo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRFNCIGJ1ZmZlciBv dmVyZmxvd1xuIik7Cj4gIAkJcmV0dXJuOwo+IEBAIC0yOTAsMjYgKzE5MywyNyBAQCB2b2lkIGlu dGVsX2RzYl9yZWdfd3JpdGUoc3RydWN0IGludGVsX2RzYiAqZHNiLCBpOTE1X3JlZ190IHJlZywg dTMyIHZhbCkKPiAgCj4gIC8qKgo+ICAgKiBpbnRlbF9kc2JfY29tbWl0KCkgLSBUcmlnZ2VyIHdv cmtsb2FkIGV4ZWN1dGlvbiBvZiBEU0IuCj4gLSAqIEBkc2I6IGludGVsX2RzYiBzdHJ1Y3R1cmUu Cj4gKyAqIEBjcnRjX3N0YXRlOiBpbnRlbF9jcnRjX3N0YXRlIHN0cnVjdHVyZQo+ICAgKgo+ICAg KiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZG8gYWN0dWFsIHdyaXRlIHRvIGhhcmR3YXJlIHVz aW5nIERTQi4KPiAgICogT24gZXJyb3JzLCBmYWxsIGJhY2sgdG8gTU1JTy4gQWxzbyB0aGlzIGZ1 bmN0aW9uIGhlbHAgdG8gcmVzZXQgdGhlIGNvbnRleHQuCj4gICAqLwo+IC12b2lkIGludGVsX2Rz Yl9jb21taXQoc3RydWN0IGludGVsX2RzYiAqZHNiKQo+ICt2b2lkIGludGVsX2RzYl9jb21taXQo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlwZW9mKCpjcnRjKSwgZHNi KTsKPiArCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGNydGNfc3RhdGUtPmRzYjsKPiArCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMp Owo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJZW51bSBwaXBl IHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJdTMyIHRhaWw7Cj4gIAo+IC0JaWYgKCFkc2ItPmZyZWVf cG9zKQo+ICsJaWYgKCEoZHNiICYmIGRzYi0+ZnJlZV9wb3MpKQo+ICAJCXJldHVybjsKPiAgCj4g LQlpZiAoIWludGVsX2RzYl9lbmFibGVfZW5naW5lKGRzYikpCj4gKwlpZiAoIWludGVsX2RzYl9l bmFibGVfZW5naW5lKGRldl9wcml2LCBwaXBlLCBkc2ItPmlkKSkKPiAgCQlnb3RvIHJlc2V0Owo+ ICAKPiAtCWlmIChpc19kc2JfYnVzeShkc2IpKSB7Cj4gKwlpZiAoaXNfZHNiX2J1c3koZGV2X3By aXYsIHBpcGUsIGRzYi0+aWQpKSB7Cj4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwKPiAgCQkJ IkhFQURfUFRSIHdyaXRlIGZhaWxlZCAtIGRzYiBlbmdpbmUgaXMgYnVzeS5cbiIpOwo+ICAJCWdv dG8gcmVzZXQ7Cj4gQEAgLTMyMiw3ICsyMjYsNyBAQCB2b2lkIGludGVsX2RzYl9jb21taXQoc3Ry dWN0IGludGVsX2RzYiAqZHNiKQo+ICAJCW1lbXNldCgmZHNiLT5jbWRfYnVmW2RzYi0+ZnJlZV9w b3NdLCAwLAo+ICAJCSAgICAgICAodGFpbCAtIGRzYi0+ZnJlZV9wb3MgKiA0KSk7Cj4gIAo+IC0J aWYgKGlzX2RzYl9idXN5KGRzYikpIHsKPiArCWlmIChpc19kc2JfYnVzeShkZXZfcHJpdiwgcGlw ZSwgZHNiLT5pZCkpIHsKPiAgCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAo+ICAJCQkiVEFJTF9Q VFIgd3JpdGUgZmFpbGVkIC0gZHNiIGVuZ2luZSBpcyBidXN5LlxuIik7Cj4gIAkJZ290byByZXNl dDsKPiBAQCAtMzMyLDcgKzIzNiw3IEBAIHZvaWQgaW50ZWxfZHNiX2NvbW1pdChzdHJ1Y3QgaW50 ZWxfZHNiICpkc2IpCj4gIAkJICAgIGk5MTVfZ2d0dF9vZmZzZXQoZHNiLT52bWEpLCB0YWlsKTsK PiAgCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBEU0JfVEFJTChwaXBlLCBkc2ItPmlkKSwKPiAg CQkgICAgICAgaTkxNV9nZ3R0X29mZnNldChkc2ItPnZtYSkgKyB0YWlsKTsKPiAtCWlmICh3YWl0 X2ZvcighaXNfZHNiX2J1c3koZHNiKSwgMSkpIHsKPiArCWlmICh3YWl0X2ZvcighaXNfZHNiX2J1 c3koZGV2X3ByaXYsIHBpcGUsIGRzYi0+aWQpLCAxKSkgewo+ICAJCWRybV9lcnIoJmRldl9wcml2 LT5kcm0sCj4gIAkJCSJUaW1lZCBvdXQgd2FpdGluZyBmb3IgRFNCIHdvcmtsb2FkIGNvbXBsZXRp b24uXG4iKTsKPiAgCQlnb3RvIHJlc2V0Owo+IEBAIC0zNDEsNSArMjQ1LDc1IEBAIHZvaWQgaW50 ZWxfZHNiX2NvbW1pdChzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpCj4gIHJlc2V0Ogo+ICAJZHNiLT5m cmVlX3BvcyA9IDA7Cj4gIAlkc2ItPmluc19zdGFydF9vZmZzZXQgPSAwOwo+IC0JaW50ZWxfZHNi X2Rpc2FibGVfZW5naW5lKGRzYik7Cj4gKwlpbnRlbF9kc2JfZGlzYWJsZV9lbmdpbmUoZGV2X3By aXYsIHBpcGUsIGRzYi0+aWQpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaW50ZWxfZHNiX3ByZXBh cmUoKSAtIEFsbG9jYXRlLCBwaW4gYW5kIG1hcCB0aGUgRFNCIGNvbW1hbmQgYnVmZmVyLgo+ICsg KiBAY3J0Y19zdGF0ZTogaW50ZWxfY3J0Y19zdGF0ZSBzdHJ1Y3R1cmUgdG8gcHJlcGFyZSBhc3Nv Y2lhdGVkIGRzYiBpbnN0YW5jZS4KPiArICoKPiArICogVGhpcyBmdW5jdGlvbiBwcmVwYXJlIHRo ZSBjb21tYW5kIGJ1ZmZlciB3aGljaCBpcyB1c2VkIHRvIHN0b3JlIGRzYgo+ICsgKiBpbnN0cnVj dGlvbnMgd2l0aCBkYXRhLgo+ICsgKi8KPiArdm9pZCBpbnRlbF9kc2JfcHJlcGFyZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICsJc3Ry dWN0IGludGVsX2RzYiAqZHNiOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsK PiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsJdTMyICpidWY7Cj4gKwlpbnRlbF93YWtlcmVm X3Qgd2FrZXJlZjsKPiArCj4gKwlpZiAoIUhBU19EU0IoaTkxNSkpCj4gKwkJcmV0dXJuOwo+ICsK PiArCWRzYiA9IGttYWxsb2Moc2l6ZW9mKCpkc2IpLCBHRlBfS0VSTkVMKTsKPiArCj4gKwl3YWtl cmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRpbWVfcG0pOwo+ICsKPiArCW9i aiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkxNSwgRFNCX0JVRl9TSVpFKTsK PiArCWlmIChJU19FUlIob2JqKSkgewo+ICsJCWRybV9lcnIoJmk5MTUtPmRybSwgIkdlbSBvYmpl Y3QgY3JlYXRpb24gZmFpbGVkXG4iKTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwl2bWEg PSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCBOVUxMLCAwLCAwLCAwKTsKPiArCWlmIChJ U19FUlIodm1hKSkgewo+ICsJCWRybV9lcnIoJmk5MTUtPmRybSwgIlZtYSBjcmVhdGlvbiBmYWls ZWRcbiIpOwo+ICsJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiArCQlnb3RvIG91dDsKPiAr CX0KPiArCj4gKwlidWYgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh2bWEtPm9iaiwgSTkxNV9N QVBfV0MpOwo+ICsJaWYgKElTX0VSUihidWYpKSB7Cj4gKwkJZHJtX2VycigmaTkxNS0+ZHJtLCAi Q29tbWFuZCBidWZmZXIgY3JlYXRpb24gZmFpbGVkXG4iKTsKPiArCQlnb3RvIG91dDsKPiArCX0K PiArCj4gKwlkc2ItPmlkID0gRFNCMTsKPiArCWRzYi0+dm1hID0gdm1hOwo+ICsJZHNiLT5jbWRf YnVmID0gYnVmOwo+ICsJZHNiLT5mcmVlX3BvcyA9IDA7Cj4gKwlkc2ItPmluc19zdGFydF9vZmZz ZXQgPSAwOwo+ICsJY3J0Y19zdGF0ZS0+ZHNiID0gZHNiOwo+ICtvdXQ6Cj4gKwlpbnRlbF9ydW50 aW1lX3BtX3B1dCgmaTkxNS0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gK30KPiArCj4gKy8qKgo+ ICsgKiBpbnRlbF9kc2JfY2xlYW51cCgpIC0gVG8gY2xlYW51cCBEU0IgY29udGV4dC4KPiArICog QGNydGNfc3RhdGU6IGludGVsX2NydGNfc3RhdGUgc3RydWN0dXJlIHRvIGNsZWFudXAgYXNzb2Np YXRlZCBkc2IgaW5zdGFuY2UuCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY2xlYW51cCB0aGUg RFNCIGNvbnRleHQgYnkgdW5waW5uaW5nIGFuZCByZWxlYXNpbmcKPiArICogdGhlIFZNQSBvYmpl Y3QgYXNzb2NpYXRlZCB3aXRoIGl0Lgo+ICsgKi8KPiArdm9pZCBpbnRlbF9kc2JfY2xlYW51cChz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJaWYgKCFjcnRjX3N0 YXRlLT5kc2IpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNl KCZjcnRjX3N0YXRlLT5kc2ItPnZtYSwgSTkxNV9WTUFfUkVMRUFTRV9NQVApOwo+ICsJa2ZyZWUo Y3J0Y19zdGF0ZS0+ZHNiKTsKPiArCWNydGNfc3RhdGUtPmRzYiA9IE5VTEw7Cj4gIH0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2IuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNiLmgKPiBpbmRleCAzOTVlZjljZTU1OGUu LjY1NGExMWYyNGI4MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RzYi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k c2IuaAo+IEBAIC0xMCw3ICsxMCw3IEBACj4gIAo+ICAjaW5jbHVkZSAiaTkxNV9yZWcuaCIKPiAg Cj4gLXN0cnVjdCBpbnRlbF9jcnRjOwo+ICtzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKPiAgc3Ry dWN0IGk5MTVfdm1hOwo+ICAKPiAgZW51bSBkc2JfaWQgewo+IEBAIC0yMiw3ICsyMiw2IEBAIGVu dW0gZHNiX2lkIHsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpbnRlbF9kc2Igewo+IC0JbG9uZyByZWZj b3VudDsKPiAgCWVudW0gZHNiX2lkIGlkOwo+ICAJdTMyICpjbWRfYnVmOwo+ICAJc3RydWN0IGk5 MTVfdm1hICp2bWE7Cj4gQEAgLTQxLDEyICs0MCwxMiBAQCBzdHJ1Y3QgaW50ZWxfZHNiIHsKPiAg CXUzMiBpbnNfc3RhcnRfb2Zmc2V0Owo+ICB9Owo+ICAKPiAtc3RydWN0IGludGVsX2RzYiAqCj4g LWludGVsX2RzYl9nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+IC12b2lkIGludGVsX2Rz Yl9wdXQoc3RydWN0IGludGVsX2RzYiAqZHNiKTsKPiAtdm9pZCBpbnRlbF9kc2JfcmVnX3dyaXRl KHN0cnVjdCBpbnRlbF9kc2IgKmRzYiwgaTkxNV9yZWdfdCByZWcsIHUzMiB2YWwpOwo+IC12b2lk IGludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVf cmVnX3QgcmVnLAo+IC0JCQkJIHUzMiB2YWwpOwo+IC12b2lkIGludGVsX2RzYl9jb21taXQoc3Ry dWN0IGludGVsX2RzYiAqZHNiKTsKPiArdm9pZCBpbnRlbF9kc2JfcHJlcGFyZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gK3ZvaWQgaW50ZWxfZHNiX2NsZWFudXAoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICt2b2lkIGludGVsX2RzYl9yZWdf d3JpdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCSBp OTE1X3JlZ190IHJlZywgdTMyIHZhbCk7Cj4gK3ZvaWQgaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dy aXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJIGk5 MTVfcmVnX3QgcmVnLCB1MzIgdmFsKTsKPiArdm9pZCBpbnRlbF9kc2JfY29tbWl0KGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAgCj4gICNlbmRpZgoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=