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=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,USER_AGENT_GIT 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 B743FC433DF for ; Wed, 20 May 2020 13:20:37 +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 8229720758 for ; Wed, 20 May 2020 13:20:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8229720758 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 2758D6E17C; Wed, 20 May 2020 13:20:37 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 17C1A6E178 for ; Wed, 20 May 2020 13:20:35 +0000 (UTC) IronPort-SDR: Q8MfTaABrzHAqfUJy/KWPpTRRZuosh6CcSiOfkXqSDZ/OlA7MnuwbzBoZb+tdM+SQQsgTrksPE VFLooba0JKbA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 May 2020 06:20:34 -0700 IronPort-SDR: gULIm1rziuq+ZwGpsbtThyldum87OiMSrrJXW1du3bR3V1hKIoa8HvBG+ikT0DoKlqn7oAGvkb PqVu8hbNZ5fQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,414,1583222400"; d="scan'208";a="289347466" Received: from unknown (HELO amanna.iind.intel.com) ([10.223.74.53]) by fmsmga004.fm.intel.com with ESMTP; 20 May 2020 06:20:31 -0700 From: Animesh Manna To: intel-gfx@lists.freedesktop.org Date: Wed, 20 May 2020 18:37:37 +0530 Message-Id: <20200520130737.11240-1-animesh.manna@intel.com> X-Mailer: git-send-email 2.26.0 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v11] 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 , Maarten Lankhorst Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" UHJlLWFsbG9jYXRlIGNvbW1hbmQgYnVmZmVyIGluIGF0b21pY19jb21taXQgdXNpbmcgaW50ZWxf ZHNiX3ByZXBhcmUKZnVuY3Rpb24gd2hpY2ggYWxzbyBpbmNsdWRlcyBwaW5uaW5nIGFuZCBtYXAg aW4gY3B1IGRvbWFpbi4KCk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIGRzYiB3cml0ZS9jb21taXQg ZnVuY3Rpb25zLgoKTm93IGRzYiBnZXQvcHV0IGZ1bmN0aW9uIGlzIHJlbW92ZWQgYW5kIHJlZi1j b3VudCBtZWNoYW5pc20gaXMKbm90IG5lZWRlZC4gQmVsb3cgZHNiIGFwaSBhZGRlZCB0byBkbyBy ZXNwZWN0aXZlIGpvYiBtZW50aW9uZWQKYmVsb3cuCgppbnRlbF9kc2JfcHJlcGFyZSAtIEFsbG9j YXRlLCBwaW4gYW5kIG1hcCB0aGUgYnVmZmVyLgppbnRlbF9kc2JfY2xlYW51cCAtIFVucGluIGFu ZCByZWxlYXNlIHRoZSBnZW0gb2JqZWN0LgoKUkZDOiBJbml0aWFsIHBhdGNoIGZvciBkZXNpZ24g cmV2aWV3Lgp2MjogaW5jbHVkZWQgX2luaXQoKSBwYXJ0IGluIF9wcmVwYXJlKCkuIFtEYW5pZWws IFZpbGxlXQp2MzogZHNiX2NsZWFudXAgY2FsbGVkIGFmdGVyIGNsZWFudXBfcGxhbmVzLiBbRGFu aWVsXQp2NDogZHNiIHN0cnVjdHVyZSBpcyBtb3ZlZCB0byBpbnRlbF9jcnRjX3N0YXRlIGZyb20g aW50ZWxfY3J0Yy4gW01hYXJ0ZW5dCnY1OiBkc2IgZ2V0L3B1dC9yZWYtY291bnQgbWVjaGFuaXNt IHJlbW92ZWQuIFtNYWFydGVuXQp2NjogQmFzZWQgb24gcmV2aWV3IGZlZWRiYWNrIGZvbGxvd2lu ZyBjaGFuZ2VzIGFyZSBhZGRlZCwKLSByZXBsYWNlZCBpbnRlbF9kc2Igc3RydWN0dXJlIGJ5IHBv aW50ZXIgaW4gaW50ZWxfY3J0Y19zdGF0ZS4gW01hYXJ0ZW5dCi0gcGFzc2luZyBpbnRlbF9jcnRj X3N0YXRlIHRvIGRzcC1hcGkgdG8gc2ltcGxpZnkgdGhlIGNvZGUuIFtNYWFydGVuXQotIGZldyBk c2IgZnVuY3Rpb25zIHByb3RvdHlwZSBtb2RpZmllZCB0byBzaW1wbGlmeSBjb2RlLgp2NzogYWRk ZWQgZmV3IGNvc21ldGljIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IEphbmkgYW5kIG51bGwgY2hlY2sg Zm9yCmNydGNfc3RhdGUgaW4gZHNiX2NsZWFudXAgcmVtb3ZlZCBhcyBzdWdnZXN0ZWQgYnkgTWFh cnRlbi4Kdjg6IGNoYW5nZWQgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlciB0byBpbnRlbF9jcnRjX3N0 YXRlKiBvZgppdmJfbG9hZF9sdXRfZXh0X21heCgpIGZyb20gaW50ZWxfY3J0Yy4gW01hYXJ0ZW5d CnY5OiBlcnJvciBoYW5kbGluZyBpbXByb3ZlZCBpbiBfd3JpdGUoKSBhbmQgcHJlcGFyZSgpLiBb TWFhcnRlbl0KCkNjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+CkNjOiBEYW5pZWwg VmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpBY2tlZC1ieTogRGFuaWVsIFZldHRlciA8 ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFuaW1lc2ggTWFubmEg PGFuaW1lc2gubWFubmFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfYXRvbWljLmMgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2NvbG9yLmMgICAgfCAgNjYgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5jICB8ICA1OCArKystCiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X3R5cGVzLmggICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHNiLmMgICAgICB8IDI1MCArKysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNiLmggICAgICB8ICAxNyArLQogNiBmaWxlcyBjaGFu Z2VkLCAyMDYgaW5zZXJ0aW9ucygrKSwgMTk0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCmluZGV4IGQwNDMwNTdkMmZhMC4uM2NiODY2 ZjIyZTc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0 b21pYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMK QEAgLTI1Miw2ICsyNTIsNyBAQCBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCiAJY3J0Y19zdGF0ZS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSA9IGZhbHNl OwogCWNydGNfc3RhdGUtPmZiX2JpdHMgPSAwOwogCWNydGNfc3RhdGUtPnVwZGF0ZV9wbGFuZXMg PSAwOworCWNydGNfc3RhdGUtPmRzYiA9IE5VTEw7CiAKIAlyZXR1cm4gJmNydGNfc3RhdGUtPnVh cGk7CiB9CkBAIC0yOTIsNiArMjkzLDggQEAgaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoc3RhdGUpOwogCisJZHJtX1dBUk5fT04oY3J0Yy0+ZGV2 LCBjcnRjX3N0YXRlLT5kc2IpOworCiAJX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rlc3Ryb3lf c3RhdGUoJmNydGNfc3RhdGUtPnVhcGkpOwogCWludGVsX2NydGNfZnJlZV9od19zdGF0ZShjcnRj X3N0YXRlKTsKIAlrZnJlZShjcnRjX3N0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfY29sb3IuYwppbmRleCA5OGVjZTljZDdjZGQuLjk0NWJiMDNiZGQ0ZCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYwpAQCAtNzE0LDE2ICs3MTQs MTYgQEAgc3RhdGljIHZvaWQgYmR3X2xvYWRfbHV0XzEwKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAogCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBQUkVDX1BBTF9JTkRFWChwaXBlKSwgMCk7CiB9 CiAKLXN0YXRpYyB2b2lkIGl2Yl9sb2FkX2x1dF9leHRfbWF4KHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQorc3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0X2V4dF9tYXgoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Ci0Jc3RydWN0IGludGVs X2RzYiAqZHNiID0gaW50ZWxfZHNiX2dldChjcnRjKTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMt PnBpcGU7CiAKIAkvKiBQcm9ncmFtIHRoZSBtYXggcmVnaXN0ZXIgdG8gY2xhbXAgdmFsdWVzID4g MS4wLiAqLwotCWludGVsX2RzYl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9FWFRfR0NfTUFYKHBp cGUsIDApLCAxIDw8IDE2KTsKLQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhU X0dDX01BWChwaXBlLCAxKSwgMSA8PCAxNik7Ci0JaW50ZWxfZHNiX3JlZ193cml0ZShkc2IsIFBS RUNfUEFMX0VYVF9HQ19NQVgocGlwZSwgMiksIDEgPDwgMTYpOworCWludGVsX2RzYl9yZWdfd3Jp dGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfRVhUX0dDX01BWChwaXBlLCAwKSwgMSA8PCAxNik7CisJ aW50ZWxfZHNiX3JlZ193cml0ZShjcnRjX3N0YXRlLCBQUkVDX1BBTF9FWFRfR0NfTUFYKHBpcGUs IDEpLCAxIDw8IDE2KTsKKwlpbnRlbF9kc2JfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFM X0VYVF9HQ19NQVgocGlwZSwgMiksIDEgPDwgMTYpOwogCiAJLyoKIAkgKiBQcm9ncmFtIHRoZSBn YyBtYXggMiByZWdpc3RlciB0byBjbGFtcCB2YWx1ZXMgPiAxLjAuCkBAIC03MzEsMTUgKzczMSwx MyBAQCBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRfZXh0X21heChzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKIAkgKiBmcm9tIDMuMCB0byA3LjAKIAkgKi8KIAlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewotCQlpbnRlbF9kc2JfcmVnX3dy aXRlKGRzYiwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMCksCisJCWludGVsX2RzYl9yZWdf d3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMCksCiAJCQkJICAg IDEgPDwgMTYpOwotCQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUMl9HQ19N QVgocGlwZSwgMSksCisJCWludGVsX2RzYl9yZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxf RVhUMl9HQ19NQVgocGlwZSwgMSksCiAJCQkJICAgIDEgPDwgMTYpOwotCQlpbnRlbF9kc2JfcmVn X3dyaXRlKGRzYiwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMiksCisJCWludGVsX2RzYl9y ZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfRVhUMl9HQ19NQVgocGlwZSwgMiksCiAJCQkJ ICAgIDEgPDwgMTYpOwogCX0KLQotCWludGVsX2RzYl9wdXQoZHNiKTsKIH0KIAogc3RhdGljIHZv aWQgaXZiX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKQEAgLTc1Myw3ICs3NTEsNyBAQCBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRzKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCX0gZWxzZSBpZiAoY3J0Y19zdGF0 ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfU1BMSVQpIHsKIAkJaXZiX2xvYWRfbHV0 XzEwKGNydGMsIGRlZ2FtbWFfbHV0LCBQQUxfUFJFQ19TUExJVF9NT0RFIHwKIAkJCQlQQUxfUFJF Q19JTkRFWF9WQUxVRSgwKSk7Ci0JCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOworCQlpdmJf bG9hZF9sdXRfZXh0X21heChjcnRjX3N0YXRlKTsKIAkJaXZiX2xvYWRfbHV0XzEwKGNydGMsIGdh bW1hX2x1dCwgUEFMX1BSRUNfU1BMSVRfTU9ERSB8CiAJCQkJUEFMX1BSRUNfSU5ERVhfVkFMVUUo NTEyKSk7CiAJfSBlbHNlIHsKQEAgLTc2MSw3ICs3NTksNyBAQCBzdGF0aWMgdm9pZCBpdmJfbG9h ZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCiAJCWl2 Yl9sb2FkX2x1dF8xMChjcnRjLCBibG9iLAogCQkJCVBBTF9QUkVDX0lOREVYX1ZBTFVFKDApKTsK LQkJaXZiX2xvYWRfbHV0X2V4dF9tYXgoY3J0Yyk7CisJCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNy dGNfc3RhdGUpOwogCX0KIH0KIApAQCAtNzc2LDcgKzc3NCw3IEBAIHN0YXRpYyB2b2lkIGJkd19s b2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJfSBl bHNlIGlmIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV9TUExJVCkg ewogCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZGVnYW1tYV9sdXQsIFBBTF9QUkVDX1NQTElUX01P REUgfAogCQkJCVBBTF9QUkVDX0lOREVYX1ZBTFVFKDApKTsKLQkJaXZiX2xvYWRfbHV0X2V4dF9t YXgoY3J0Yyk7CisJCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGNfc3RhdGUpOwogCQliZHdfbG9h ZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJFQ19TUExJVF9NT0RFIHwKIAkJCQlQQUxf UFJFQ19JTkRFWF9WQUxVRSg1MTIpKTsKIAl9IGVsc2UgewpAQCAtNzg0LDcgKzc4Miw3IEBAIHN0 YXRpYyB2b2lkIGJkd19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCiAKIAkJYmR3X2xvYWRfbHV0XzEwKGNydGMsIGJsb2IsCiAJCQkJUEFMX1BSRUNf SU5ERVhfVkFMVUUoMCkpOwotCQlpdmJfbG9hZF9sdXRfZXh0X21heChjcnRjKTsKKwkJaXZiX2xv YWRfbHV0X2V4dF9tYXgoY3J0Y19zdGF0ZSk7CiAJfQogfQogCkBAIC04NzcsNyArODc1LDcgQEAg c3RhdGljIHZvaWQgZ2xrX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKIAkJaWxrX2xvYWRfbHV0XzgoY3J0YywgZ2FtbWFfbHV0KTsKIAl9IGVsc2Ug ewogCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJFQ19JTkRFWF9WQUxV RSgwKSk7Ci0JCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOworCQlpdmJfbG9hZF9sdXRfZXh0 X21heChjcnRjX3N0YXRlKTsKIAl9CiB9CiAKQEAgLTkwMCwxNCArODk4LDEyIEBAIGljbF9sb2Fk X2djbWF4KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCSAgICAg ICBjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCiB7CiAJc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Ci0Jc3RydWN0 IGludGVsX2RzYiAqZHNiID0gaW50ZWxfZHNiX2dldChjcnRjKTsKIAllbnVtIHBpcGUgcGlwZSA9 IGNydGMtPnBpcGU7CiAKIAkvKiBGSVhNRSBMVVQgZW50cmllcyBhcmUgMTYgYml0IG9ubHksIHNv IHdlIGNhbiBwcm9nIDB4RkZGRiBtYXggKi8KLQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRzYiwgUFJF Q19QQUxfR0NfTUFYKHBpcGUsIDApLCBjb2xvci0+cmVkKTsKLQlpbnRlbF9kc2JfcmVnX3dyaXRl KGRzYiwgUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDEpLCBjb2xvci0+Z3JlZW4pOwotCWludGVsX2Rz Yl9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9HQ19NQVgocGlwZSwgMiksIGNvbG9yLT5ibHVlKTsK LQlpbnRlbF9kc2JfcHV0KGRzYik7CisJaW50ZWxfZHNiX3JlZ193cml0ZShjcnRjX3N0YXRlLCBQ UkVDX1BBTF9HQ19NQVgocGlwZSwgMCksIGNvbG9yLT5yZWQpOworCWludGVsX2RzYl9yZWdfd3Jp dGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDEpLCBjb2xvci0+Z3JlZW4pOwor CWludGVsX2RzYl9yZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIp LCBjb2xvci0+Ymx1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC05MTYsNyArOTEyLDYgQEAgaWNs X3Byb2dyYW1fZ2FtbWFfc3VwZXJmaW5lX3NlZ21lbnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7CiAJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9i bG9iICpibG9iID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0OwogCWNvbnN0IHN0cnVjdCBkcm1f Y29sb3JfbHV0ICpsdXQgPSBibG9iLT5kYXRhOwotCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGlu dGVsX2RzYl9nZXQoY3J0Yyk7CiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwogCWludCBp OwogCkBAIC05MjcsMTkgKzkyMiwxNyBAQCBpY2xfcHJvZ3JhbV9nYW1tYV9zdXBlcmZpbmVfc2Vn bWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkgKiA5IGVu dHJpZXMsIGNvcnJlc3BvbmRpbmcgdG8gdmFsdWVzIDAsIDEvKDggKiAxMjggKiAyNTYpLAogCSAq IDIvKDggKiAxMjggKiAyNTYpIC4uLiA4Lyg4ICogMTI4ICogMjU2KS4KIAkgKi8KLQlpbnRlbF9k c2JfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfTVVMVElfU0VHX0lOREVYKHBpcGUpLAorCWludGVs X2RzYl9yZWdfd3JpdGUoY3J0Y19zdGF0ZSwgUFJFQ19QQUxfTVVMVElfU0VHX0lOREVYKHBpcGUp LAogCQkJICAgIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKIAogCWZvciAoaSA9IDA7IGkgPCA5 OyBpKyspIHsKIAkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5ID0gJmx1dFtpXTsK IAotCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9NVUxUSV9TRUdf REFUQShwaXBlKSwKKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBS RUNfUEFMX01VTFRJX1NFR19EQVRBKHBpcGUpLAogCQkJCQkgICAgaWxrX2x1dF8xMnA0X2xkdyhl bnRyeSkpOwotCQlpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoZHNiLCBQUkVDX1BBTF9NVUxU SV9TRUdfREFUQShwaXBlKSwKKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3Rh dGUsIFBSRUNfUEFMX01VTFRJX1NFR19EQVRBKHBpcGUpLAogCQkJCQkgICAgaWxrX2x1dF8xMnA0 X3VkdyhlbnRyeSkpOwogCX0KLQotCWludGVsX2RzYl9wdXQoZHNiKTsKIH0KIAogc3RhdGljIHZv aWQKQEAgLTk0OSw3ICs5NDIsNiBAQCBpY2xfcHJvZ3JhbV9nYW1tYV9tdWx0aV9zZWdtZW50KGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWNvbnN0IHN0cnVjdCBk cm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKIAljb25z dCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ZGF0YTsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2NvbG9yX2x1dCAqZW50cnk7Ci0Jc3RydWN0IGludGVsX2RzYiAqZHNiID0gaW50ZWxfZHNi X2dldChjcnRjKTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJaW50IGk7CiAKQEAg LTk2MywxMiArOTU1LDEzIEBAIGljbF9wcm9ncmFtX2dhbW1hX211bHRpX3NlZ21lbnQoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJICogUEFMX1BSRUNfSU5ERVhb MF0gYW5kIFBBTF9QUkVDX0lOREVYWzFdIG1hcCB0byBzZWcyWzFdLAogCSAqIHNlZzJbMF0gYmVp bmcgdW51c2VkIGJ5IHRoZSBoYXJkd2FyZS4KIAkgKi8KLQlpbnRlbF9kc2JfcmVnX3dyaXRlKGRz YiwgUFJFQ19QQUxfSU5ERVgocGlwZSksIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKKwlpbnRl bF9kc2JfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0lOREVYKHBpcGUpLAorCQkJICAg IFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKIAlmb3IgKGkgPSAxOyBpIDwgMjU3OyBpKyspIHsK IAkJZW50cnkgPSAmbHV0W2kgKiA4XTsKLQkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRz YiwgUFJFQ19QQUxfREFUQShwaXBlKSwKKwkJaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNy dGNfc3RhdGUsIFBSRUNfUEFMX0RBVEEocGlwZSksCiAJCQkJCSAgICBpbGtfbHV0XzEycDRfbGR3 KGVudHJ5KSk7Ci0JCWludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShkc2IsIFBSRUNfUEFMX0RB VEEocGlwZSksCisJCWludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShjcnRjX3N0YXRlLCBQUkVD X1BBTF9EQVRBKHBpcGUpLAogCQkJCQkgICAgaWxrX2x1dF8xMnA0X3VkdyhlbnRyeSkpOwogCX0K IApAQCAtOTg2LDI0ICs5NzksMjIgQEAgaWNsX3Byb2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkgKi8KIAlmb3IgKGkg PSAwOyBpIDwgMjU2OyBpKyspIHsKIAkJZW50cnkgPSAmbHV0W2kgKiA4ICogMTI4XTsKLQkJaW50 ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGRzYiwgUFJFQ19QQUxfREFUQShwaXBlKSwKKwkJaW50 ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNydGNfc3RhdGUsIFBSRUNfUEFMX0RBVEEocGlwZSks CiAJCQkJCSAgICBpbGtfbHV0XzEycDRfbGR3KGVudHJ5KSk7Ci0JCWludGVsX2RzYl9pbmRleGVk X3JlZ193cml0ZShkc2IsIFBSRUNfUEFMX0RBVEEocGlwZSksCisJCWludGVsX2RzYl9pbmRleGVk X3JlZ193cml0ZShjcnRjX3N0YXRlLCBQUkVDX1BBTF9EQVRBKHBpcGUpLAogCQkJCQkgICAgaWxr X2x1dF8xMnA0X3VkdyhlbnRyeSkpOwogCX0KIAogCS8qIFRoZSBsYXN0IGVudHJ5IGluIHRoZSBM VVQgaXMgdG8gYmUgcHJvZ3JhbW1lZCBpbiBHQ01BWCAqLwogCWVudHJ5ID0gJmx1dFsyNTYgKiA4 ICogMTI4XTsKIAlpY2xfbG9hZF9nY21heChjcnRjX3N0YXRlLCBlbnRyeSk7Ci0JaXZiX2xvYWRf bHV0X2V4dF9tYXgoY3J0Yyk7Ci0JaW50ZWxfZHNiX3B1dChkc2IpOworCWl2Yl9sb2FkX2x1dF9l eHRfbWF4KGNydGNfc3RhdGUpOwogfQogCiBzdGF0aWMgdm9pZCBpY2xfbG9hZF9sdXRzKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBk cm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0Owog CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBp LmNydGMpOwotCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7CiAK IAlpZiAoY3J0Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQpCiAJCWdsa19sb2FkX2RlZ2FtbWFfbHV0 KGNydGNfc3RhdGUpOwpAQCAtMTAxOCwxMSArMTAwOSwxMCBAQCBzdGF0aWMgdm9pZCBpY2xfbG9h ZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCQlicmVh azsKIAlkZWZhdWx0OgogCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJF Q19JTkRFWF9WQUxVRSgwKSk7Ci0JCWl2Yl9sb2FkX2x1dF9leHRfbWF4KGNydGMpOworCQlpdmJf bG9hZF9sdXRfZXh0X21heChjcnRjX3N0YXRlKTsKIAl9CiAKLQlpbnRlbF9kc2JfY29tbWl0KGRz Yik7Ci0JaW50ZWxfZHNiX3B1dChkc2IpOworCWludGVsX2RzYl9jb21taXQoY3J0Y19zdGF0ZSk7 CiB9CiAKIHN0YXRpYyB1MzIgY2h2X2NnbV9kZWdhbW1hX2xkdyhjb25zdCBzdHJ1Y3QgZHJtX2Nv bG9yX2x1dCAqY29sb3IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheS5jCmluZGV4IDQzMmI0ZWVhZjlmNi4uNTE0NDgzZmZkMjQ3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTQ4NzMsOCArMTQ4NzMsMjQg QEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAogc3RhdGljIGludCBpbnRlbF9hdG9taWNfcHJlcGFyZV9jb21taXQoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUpCiB7Ci0JcmV0dXJuIGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVf cGxhbmVzKHN0YXRlLT5iYXNlLmRldiwKLQkJCQkJCSZzdGF0ZS0+YmFzZSk7CisJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmNydGM7CisJ aW50IGksIHJldDsKKworCXJldCA9IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0 YXRlLT5iYXNlLmRldiwgJnN0YXRlLT5iYXNlKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJl dDsKKworCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRj X3N0YXRlLCBpKSB7CisJCWJvb2wgbW9kZV9jaGFuZ2VkID0gbmVlZHNfbW9kZXNldChjcnRjX3N0 YXRlKTsKKworCQlpZiAobW9kZV9jaGFuZ2VkIHx8IGNydGNfc3RhdGUtPnVwZGF0ZV9waXBlIHx8 CisJCSAgICBjcnRjX3N0YXRlLT51YXBpLmNvbG9yX21nbXRfY2hhbmdlZCkgeworCQkJaW50ZWxf ZHNiX3ByZXBhcmUoY3J0Y19zdGF0ZSk7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKIH0KIAogdTMy IGludGVsX2NydGNfZ2V0X3ZibGFua19jb3VudGVyKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQpA QCAtMTUzMjcsMTUgKzE1MzQzLDI3IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRf ZmVuY2Vfd2FpdChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0CiAJCSAgICAm d2FpdF9yZXNldCk7CiB9CiAKK3N0YXRpYyB2b2lkIGludGVsX2NsZWFudXBfZHNicyhzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YzsKKwlpbnQgaTsKKworCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKKwkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKQorCQlp bnRlbF9kc2JfY2xlYW51cChvbGRfY3J0Y19zdGF0ZSk7Cit9CisKIHN0YXRpYyB2b2lkIGludGVs X2F0b21pY19jbGVhbnVwX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewotCXN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9Ci0JCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSwgY29tbWl0X3dvcmspOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNShzdGF0ZS0+ZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSA9CisJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl LCBiYXNlLmNvbW1pdF93b3JrKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRv X2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKIAotCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxh bmVzKCZpOTE1LT5kcm0sIHN0YXRlKTsKLQlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfY2xlYW51 cF9kb25lKHN0YXRlKTsKLQlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CisJaW50ZWxfY2xl YW51cF9kc2JzKHN0YXRlKTsKKwlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcygmaTkx NS0+ZHJtLCAmc3RhdGUtPmJhc2UpOworCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9jbGVhbnVw X2RvbmUoJnN0YXRlLT5iYXNlKTsKKwlkcm1fYXRvbWljX3N0YXRlX3B1dCgmc3RhdGUtPmJhc2Up OwogCiAJaW50ZWxfYXRvbWljX2hlbHBlcl9mcmVlX3N0YXRlKGk5MTUpOwogfQpAQCAtMTU0Njks NiArMTU0OTcsMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQkJbW9kZXNldF9wdXRfcG93ZXJfZG9tYWlu cyhkZXZfcHJpdiwgcHV0X2RvbWFpbnNbaV0pOwogCiAJCWludGVsX21vZGVzZXRfdmVyaWZ5X2Ny dGMoY3J0Yywgc3RhdGUsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7CisKKwkJLyoK KwkJICogRFNCIGNsZWFudXAgaXMgZG9uZSBpbiBjbGVhbnVwX3dvcmsgYWxpZ25pbmcgd2l0aCBm cmFtZWJ1ZmZlcgorCQkgKiBjbGVhbnVwLiBTbyBjb3B5IGFuZCByZXNldCB0aGUgZHNiIHN0cnVj dHVyZSB0byBzeW5jIHdpdGgKKwkJICogY29tbWl0X2RvbmUgYW5kIGxhdGVyIGRvIGRzYiBjbGVh bnVwIGluIGNsZWFudXBfd29yay4KKwkJICovCisJCW9sZF9jcnRjX3N0YXRlLT5kc2IgPSBmZXRj aF9hbmRfemVybygmbmV3X2NydGNfc3RhdGUtPmRzYik7CiAJfQogCiAJLyogVW5kZXJydW5zIGRv bid0IGFsd2F5cyByYWlzZSBpbnRlcnJ1cHRzLCBzbyBjaGVjayBtYW51YWxseSAqLwpAQCAtMTU2 MTgsOCArMTU2NTMsMTUgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJCWludGVsX2F0b21pY19zd2FwX2dsb2JhbF9zdGF0ZShzdGF0ZSk7 CiAKIAlpZiAocmV0KSB7CisJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0 ZTsKKwkJc3RydWN0IGludGVsX2NydGMgKmNydGM7CisJCWludCBpOworCiAJCWk5MTVfc3dfZmVu Y2VfY29tbWl0KCZzdGF0ZS0+Y29tbWl0X3JlYWR5KTsKIAorCQlmb3JfZWFjaF9uZXdfaW50ZWxf Y3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpCisJCQlpbnRlbF9k c2JfY2xlYW51cChuZXdfY3J0Y19zdGF0ZSk7CisKIAkJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51 cF9wbGFuZXMoZGV2LCAmc3RhdGUtPmJhc2UpOwogCQlpbnRlbF9ydW50aW1lX3BtX3B1dCgmZGV2 X3ByaXYtPnJ1bnRpbWVfcG0sIHN0YXRlLT53YWtlcmVmKTsKIAkJcmV0dXJuIHJldDsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKaW5k ZXggODc4NzZmY2U5MWE1Li5jYTU3OTAwNWQ4MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCkBAIC0xMDc4LDYgKzEwNzgsOSBA QCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7CiAKIAkvKiBPbmx5IHZhbGlkIG9uIFRHTCsgKi8K IAllbnVtIHRyYW5zY29kZXIgbXN0X21hc3Rlcl90cmFuc2NvZGVyOworCisJLyogRm9yIERTQiBy ZWxhdGVkIGluZm8gKi8KKwlzdHJ1Y3QgaW50ZWxfZHNiICpkc2I7CiB9OwogCiBlbnVtIGludGVs X3BpcGVfY3JjX3NvdXJjZSB7CkBAIC0xMTQ3LDkgKzExNTAsNiBAQCBzdHJ1Y3QgaW50ZWxfY3J0 YyB7CiAJLyogc2NhbGVycyBhdmFpbGFibGUgb24gdGhpcyBjcnRjICovCiAJaW50IG51bV9zY2Fs ZXJzOwogCi0JLyogcGVyIHBpcGUgRFNCIHJlbGF0ZWQgaW5mbyAqLwotCXN0cnVjdCBpbnRlbF9k c2IgZHNiOwotCiAjaWZkZWYgQ09ORklHX0RFQlVHX0ZTCiAJc3RydWN0IGludGVsX3BpcGVfY3Jj IHBpcGVfY3JjOwogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RzYi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2Iu YwppbmRleCAyOWZlYzZhOTJkMTcuLjQ3NTEwNmU5MWZhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kc2IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RzYi5jCkBAIC0zNCwxNTIgKzM0LDUyIEBACiAjZGVmaW5lIERTQl9C WVRFX0VOX1NISUZUCQkyMAogI2RlZmluZSBEU0JfUkVHX1ZBTFVFX01BU0sJCTB4ZmZmZmYKIAot c3RhdGljIGJvb2wgaXNfZHNiX2J1c3koc3RydWN0IGludGVsX2RzYiAqZHNiKQorc3RhdGljIGJv b2wgaXNfZHNiX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGVudW0gcGlwZSBw aXBlLAorCQkJZW51bSBkc2JfaWQgaWQpCiB7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBj b250YWluZXJfb2YoZHNiLCB0eXBlb2YoKmNydGMpLCBkc2IpOwotCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwotCWVudW0gcGlwZSBw aXBlID0gY3J0Yy0+cGlwZTsKLQotCXJldHVybiBEU0JfU1RBVFVTICYgaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwgRFNCX0NUUkwocGlwZSwgZHNiLT5pZCkpOworCXJldHVybiBEU0JfU1RBVFVTICYg aW50ZWxfZGVfcmVhZChpOTE1LCBEU0JfQ1RSTChwaXBlLCBpZCkpOwogfQogCi1zdGF0aWMgYm9v bCBpbnRlbF9kc2JfZW5hYmxlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpCitzdGF0aWMg Ym9vbCBpbnRlbF9kc2JfZW5hYmxlX2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKKwkJCQkgICAgZW51bSBwaXBlIHBpcGUsIGVudW0gZHNiX2lkIGlkKQogewotCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlwZW9mKCpjcnRjKSwgZHNiKTsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2Uu ZGV2KTsKLQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJdTMyIGRzYl9jdHJsOwogCi0J ZHNiX2N0cmwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBEU0JfQ1RSTChwaXBlLCBkc2ItPmlk KSk7CisJZHNiX2N0cmwgPSBpbnRlbF9kZV9yZWFkKGk5MTUsIERTQl9DVFJMKHBpcGUsIGlkKSk7 CiAJaWYgKERTQl9TVEFUVVMgJiBkc2JfY3RybCkgewotCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYt PmRybSwgIkRTQiBlbmdpbmUgaXMgYnVzeS5cbiIpOworCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJt LCAiRFNCIGVuZ2luZSBpcyBidXN5LlxuIik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKIAlkc2Jf Y3RybCB8PSBEU0JfRU5BQkxFOwotCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBEU0JfQ1RSTChw aXBlLCBkc2ItPmlkKSwgZHNiX2N0cmwpOworCWludGVsX2RlX3dyaXRlKGk5MTUsIERTQl9DVFJM KHBpcGUsIGlkKSwgZHNiX2N0cmwpOwogCi0JaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2 LCBEU0JfQ1RSTChwaXBlLCBkc2ItPmlkKSk7CisJaW50ZWxfZGVfcG9zdGluZ19yZWFkKGk5MTUs IERTQl9DVFJMKHBpcGUsIGlkKSk7CiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGlu dGVsX2RzYl9kaXNhYmxlX2VuZ2luZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpCitzdGF0aWMgYm9v bCBpbnRlbF9kc2JfZGlzYWJsZV9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs CisJCQkJICAgICBlbnVtIHBpcGUgcGlwZSwgZW51bSBkc2JfaWQgaWQpCiB7Ci0Jc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSBjb250YWluZXJfb2YoZHNiLCB0eXBlb2YoKmNydGMpLCBkc2IpOwot CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwotCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKIAl1MzIgZHNiX2N0cmw7CiAKLQlk c2JfY3RybCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIERTQl9DVFJMKHBpcGUsIGRzYi0+aWQp KTsKKwlkc2JfY3RybCA9IGludGVsX2RlX3JlYWQoaTkxNSwgRFNCX0NUUkwocGlwZSwgaWQpKTsK IAlpZiAoRFNCX1NUQVRVUyAmIGRzYl9jdHJsKSB7Ci0JCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ ZHJtLCAiRFNCIGVuZ2luZSBpcyBidXN5LlxuIik7CisJCWRybV9kYmdfa21zKCZpOTE1LT5kcm0s ICJEU0IgZW5naW5lIGlzIGJ1c3kuXG4iKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAogCWRzYl9j dHJsICY9IH5EU0JfRU5BQkxFOwotCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBEU0JfQ1RSTChw aXBlLCBkc2ItPmlkKSwgZHNiX2N0cmwpOworCWludGVsX2RlX3dyaXRlKGk5MTUsIERTQl9DVFJM KHBpcGUsIGlkKSwgZHNiX2N0cmwpOwogCi0JaW50ZWxfZGVfcG9zdGluZ19yZWFkKGRldl9wcml2 LCBEU0JfQ1RSTChwaXBlLCBkc2ItPmlkKSk7CisJaW50ZWxfZGVfcG9zdGluZ19yZWFkKGk5MTUs IERTQl9DVFJMKHBpcGUsIGlkKSk7CiAJcmV0dXJuIHRydWU7CiB9CiAKLS8qKgotICogaW50ZWxf ZHNiX2dldCgpIC0gQWxsb2NhdGUgRFNCIGNvbnRleHQgYW5kIHJldHVybiBhIERTQiBpbnN0YW5j ZS4KLSAqIEBjcnRjOiBpbnRlbF9jcnRjIHN0cnVjdHVyZSB0byBnZXQgcGlwZSBpbmZvLgotICoK LSAqIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgaGFuZGxlIG9mIGEgRFNCIGluc3RhbmNlLCBmb3Ig dGhlIGZ1cnRoZXIgRFNCCi0gKiBvcGVyYXRpb25zLgotICoKLSAqIFJldHVybnM6IGFkZHJlc3Mg b2YgSW50ZWxfZHNiIGluc3RhbmNlIHJlcXVlc3RlZCBmb3IuCi0gKiBGYWlsdXJlOiBSZXR1cm5z IHRoZSBzYW1lIERTQiBpbnN0YW5jZSwgYnV0IHdpdGhvdXQgYSBjb21tYW5kIGJ1ZmZlci4KLSAq LwotCi1zdHJ1Y3QgaW50ZWxfZHNiICoKLWludGVsX2RzYl9nZXQoc3RydWN0IGludGVsX2NydGMg KmNydGMpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRl bF9kc2IgKmRzYiA9ICZjcnRjLT5kc2I7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQl1MzIgKmJ1ZjsKLQlpbnRlbF93YWtlcmVmX3Qg d2FrZXJlZjsKLQotCWlmICghSEFTX0RTQihpOTE1KSkKLQkJcmV0dXJuIGRzYjsKLQotCWlmIChk c2ItPnJlZmNvdW50KysgIT0gMCkKLQkJcmV0dXJuIGRzYjsKLQotCXdha2VyZWYgPSBpbnRlbF9y dW50aW1lX3BtX2dldCgmaTkxNS0+cnVudGltZV9wbSk7Ci0KLQlvYmogPSBpOTE1X2dlbV9vYmpl Y3RfY3JlYXRlX2ludGVybmFsKGk5MTUsIERTQl9CVUZfU0laRSk7Ci0JaWYgKElTX0VSUihvYmop KSB7Ci0JCWRybV9lcnIoJmk5MTUtPmRybSwgIkdlbSBvYmplY3QgY3JlYXRpb24gZmFpbGVkXG4i KTsKLQkJZ290byBvdXQ7Ci0JfQotCi0Jdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKG9i aiwgTlVMTCwgMCwgMCwgMCk7Ci0JaWYgKElTX0VSUih2bWEpKSB7Ci0JCWRybV9lcnIoJmk5MTUt PmRybSwgIlZtYSBjcmVhdGlvbiBmYWlsZWRcbiIpOwotCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9i aik7Ci0JCWdvdG8gb3V0OwotCX0KLQotCWJ1ZiA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKHZt YS0+b2JqLCBJOTE1X01BUF9XQyk7Ci0JaWYgKElTX0VSUihidWYpKSB7Ci0JCWRybV9lcnIoJmk5 MTUtPmRybSwgIkNvbW1hbmQgYnVmZmVyIGNyZWF0aW9uIGZhaWxlZFxuIik7Ci0JCWdvdG8gb3V0 OwotCX0KLQotCWRzYi0+aWQgPSBEU0IxOwotCWRzYi0+dm1hID0gdm1hOwotCWRzYi0+Y21kX2J1 ZiA9IGJ1ZjsKLQotb3V0OgotCS8qCi0JICogT24gZXJyb3IgZHNiLT5jbWRfYnVmIHdpbGwgY29u dGludWUgdG8gYmUgTlVMTCwgbWFraW5nIHRoZSB3cml0ZXMKLQkgKiBwYXNzLXRocm91Z2guIExl YXZlIHRoZSBkYW5nbGluZyByZWYgdG8gYmUgcmVtb3ZlZCBsYXRlciBieSB0aGUKLQkgKiBjb3Jy ZXNwb25kaW5nIGludGVsX2RzYl9wdXQoKTogdGhlIGltcG9ydGFudCBlcnJvciBtZXNzYWdlIHdp bGwKLQkgKiBhbHJlYWR5IGJlIGxvZ2dlZCBhYm92ZS4KLQkgKi8KLQotCWludGVsX3J1bnRpbWVf cG1fcHV0KCZpOTE1LT5ydW50aW1lX3BtLCB3YWtlcmVmKTsKLQotCXJldHVybiBkc2I7Ci19Ci0K LS8qKgotICogaW50ZWxfZHNiX3B1dCgpIC0gVG8gZGVzdHJveSBEU0IgY29udGV4dC4KLSAqIEBk c2I6IGludGVsX2RzYiBzdHJ1Y3R1cmUuCi0gKgotICogVGhpcyBmdW5jdGlvbiBkZXN0cm95cyB0 aGUgRFNCIGNvbnRleHQgYWxsb2NhdGVkIGJ5IGEgZHNiX2dldCgpLCBieQotICogdW5waW5uaW5n IGFuZCByZWxlYXNpbmcgdGhlIFZNQSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIGl0LgotICovCi0K LXZvaWQgaW50ZWxfZHNiX3B1dChzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpCi17Ci0Jc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSBjb250YWluZXJfb2YoZHNiLCB0eXBlb2YoKmNydGMpLCBkc2IpOwot CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7 Ci0KLQlpZiAoIUhBU19EU0IoaTkxNSkpCi0JCXJldHVybjsKLQotCWlmIChkcm1fV0FSTl9PTigm aTkxNS0+ZHJtLCBkc2ItPnJlZmNvdW50ID09IDApKQotCQlyZXR1cm47Ci0KLQlpZiAoLS1kc2It PnJlZmNvdW50ID09IDApIHsKLQkJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmRzYi0+dm1h LCBJOTE1X1ZNQV9SRUxFQVNFX01BUCk7Ci0JCWRzYi0+Y21kX2J1ZiA9IE5VTEw7Ci0JCWRzYi0+ ZnJlZV9wb3MgPSAwOwotCQlkc2ItPmluc19zdGFydF9vZmZzZXQgPSAwOwotCX0KLX0KLQogLyoq CiAgKiBpbnRlbF9kc2JfaW5kZXhlZF9yZWdfd3JpdGUoKSAtV3JpdGUgdG8gdGhlIERTQiBjb250 ZXh0IGZvciBhdXRvCiAgKiBpbmNyZW1lbnQgcmVnaXN0ZXIuCi0gKiBAZHNiOiBpbnRlbF9kc2Ig c3RydWN0dXJlLgorICogQGNydGNfc3RhdGU6IGludGVsX2NydGNfc3RhdGUgc3RydWN0dXJlCiAg KiBAcmVnOiByZWdpc3RlciBhZGRyZXNzLgogICogQHZhbDogdmFsdWUuCiAgKgpAQCAtMTg5LDE5 ICs4OSwyMCBAQCB2b2lkIGludGVsX2RzYl9wdXQoc3RydWN0IGludGVsX2RzYiAqZHNiKQogICog aXMgZG9uZSB0aHJvdWdoIG1taW8gd3JpdGUuCiAgKi8KIAotdm9pZCBpbnRlbF9kc2JfaW5kZXhl ZF9yZWdfd3JpdGUoc3RydWN0IGludGVsX2RzYiAqZHNiLCBpOTE1X3JlZ190IHJlZywKLQkJCQkg dTMyIHZhbCkKK3ZvaWQgaW50ZWxfZHNiX2luZGV4ZWRfcmVnX3dyaXRlKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSBpOTE1X3JlZ190IHJlZywgdTMyIHZh bCkKIHsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGNvbnRhaW5lcl9vZihkc2IsIHR5cGVv ZigqY3J0YyksIGRzYik7CisJc3RydWN0IGludGVsX2RzYiAqZHNiID0gY3J0Y19zdGF0ZS0+ZHNi OworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51 YXBpLmNydGMpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwotCXUzMiAqYnVmID0gZHNiLT5jbWRfYnVmOworCXUzMiAqYnVmOwog CXUzMiByZWdfdmFsOwogCi0JaWYgKCFidWYpIHsKKwlpZiAoIWRzYikgewogCQlpbnRlbF9kZV93 cml0ZShkZXZfcHJpdiwgcmVnLCB2YWwpOwogCQlyZXR1cm47CiAJfQotCisJYnVmID0gZHNiLT5j bWRfYnVmOwogCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgZHNiLT5mcmVlX3BvcyA+ PSBEU0JfQlVGX1NJWkUpKSB7CiAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRFNCIGJ1 ZmZlciBvdmVyZmxvd1xuIik7CiAJCXJldHVybjsKQEAgLTI1Niw3ICsxNTcsNyBAQCB2b2lkIGlu dGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVfcmVn X3QgcmVnLAogLyoqCiAgKiBpbnRlbF9kc2JfcmVnX3dyaXRlKCkgLVdyaXRlIHRvIHRoZSBEU0Ig Y29udGV4dCBmb3Igbm9ybWFsCiAgKiByZWdpc3Rlci4KLSAqIEBkc2I6IGludGVsX2RzYiBzdHJ1 Y3R1cmUuCisgKiBAY3J0Y19zdGF0ZTogaW50ZWxfY3J0Y19zdGF0ZSBzdHJ1Y3R1cmUKICAqIEBy ZWc6IHJlZ2lzdGVyIGFkZHJlc3MuCiAgKiBAdmFsOiB2YWx1ZS4KICAqCkBAIC0yNjUsMTcgKzE2 NiwxOSBAQCB2b2lkIGludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfZHNi ICpkc2IsIGk5MTVfcmVnX3QgcmVnLAogICogYW5kIHJlc3QgYWxsIGVycm9uZW91cyBjb25kaXRp b24gcmVnaXN0ZXIgcHJvZ3JhbW1pbmcgaXMgZG9uZQogICogdGhyb3VnaCBtbWlvIHdyaXRlLgog ICovCi12b2lkIGludGVsX2RzYl9yZWdfd3JpdGUoc3RydWN0IGludGVsX2RzYiAqZHNiLCBpOTE1 X3JlZ190IHJlZywgdTMyIHZhbCkKK3ZvaWQgaW50ZWxfZHNiX3JlZ193cml0ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSBpOTE1X3JlZ190IHJlZywgdTMy IHZhbCkKIHsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGNvbnRhaW5lcl9vZihkc2IsIHR5 cGVvZigqY3J0YyksIGRzYik7CisJc3RydWN0IGludGVsX2RzYiAqZHNiID0gY3J0Y19zdGF0ZS0+ ZHNiOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT51YXBpLmNydGMpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwogCXUzMiAqYnVmID0gZHNiLT5jbWRfYnVmOwogCi0JaWYgKCFi dWYpIHsKKwlpZiAoIWRzYikgewogCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgcmVnLCB2YWwp OwogCQlyZXR1cm47CiAJfQotCisJYnVmID0gZHNiLT5jbWRfYnVmOwogCWlmIChkcm1fV0FSTl9P TigmZGV2X3ByaXYtPmRybSwgZHNiLT5mcmVlX3BvcyA+PSBEU0JfQlVGX1NJWkUpKSB7CiAJCWRy bV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRFNCIGJ1ZmZlciBvdmVyZmxvd1xuIik7CiAJCXJl dHVybjsKQEAgLTI5MCwyNiArMTkzLDI3IEBAIHZvaWQgaW50ZWxfZHNiX3JlZ193cml0ZShzdHJ1 Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVfcmVnX3QgcmVnLCB1MzIgdmFsKQogCiAvKioKICAqIGlu dGVsX2RzYl9jb21taXQoKSAtIFRyaWdnZXIgd29ya2xvYWQgZXhlY3V0aW9uIG9mIERTQi4KLSAq IEBkc2I6IGludGVsX2RzYiBzdHJ1Y3R1cmUuCisgKiBAY3J0Y19zdGF0ZTogaW50ZWxfY3J0Y19z dGF0ZSBzdHJ1Y3R1cmUKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZG8gYWN0dWFs IHdyaXRlIHRvIGhhcmR3YXJlIHVzaW5nIERTQi4KICAqIE9uIGVycm9ycywgZmFsbCBiYWNrIHRv IE1NSU8uIEFsc28gdGhpcyBmdW5jdGlvbiBoZWxwIHRvIHJlc2V0IHRoZSBjb250ZXh0LgogICov Ci12b2lkIGludGVsX2RzYl9jb21taXQoc3RydWN0IGludGVsX2RzYiAqZHNiKQordm9pZCBpbnRl bF9kc2JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQog ewotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gY29udGFpbmVyX29mKGRzYiwgdHlwZW9mKCpj cnRjKSwgZHNiKTsKKwlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBjcnRjX3N0YXRlLT5kc2I7CisJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7CiAJdTMyIHRhaWw7CiAKLQlpZiAoIWRzYi0+ZnJlZV9wb3MpCisJ aWYgKCEoZHNiICYmIGRzYi0+ZnJlZV9wb3MpKQogCQlyZXR1cm47CiAKLQlpZiAoIWludGVsX2Rz Yl9lbmFibGVfZW5naW5lKGRzYikpCisJaWYgKCFpbnRlbF9kc2JfZW5hYmxlX2VuZ2luZShkZXZf cHJpdiwgcGlwZSwgZHNiLT5pZCkpCiAJCWdvdG8gcmVzZXQ7CiAKLQlpZiAoaXNfZHNiX2J1c3ko ZHNiKSkgeworCWlmIChpc19kc2JfYnVzeShkZXZfcHJpdiwgcGlwZSwgZHNiLT5pZCkpIHsKIAkJ ZHJtX2VycigmZGV2X3ByaXYtPmRybSwKIAkJCSJIRUFEX1BUUiB3cml0ZSBmYWlsZWQgLSBkc2Ig ZW5naW5lIGlzIGJ1c3kuXG4iKTsKIAkJZ290byByZXNldDsKQEAgLTMyMiw3ICsyMjYsNyBAQCB2 b2lkIGludGVsX2RzYl9jb21taXQoc3RydWN0IGludGVsX2RzYiAqZHNiKQogCQltZW1zZXQoJmRz Yi0+Y21kX2J1Zltkc2ItPmZyZWVfcG9zXSwgMCwKIAkJICAgICAgICh0YWlsIC0gZHNiLT5mcmVl X3BvcyAqIDQpKTsKIAotCWlmIChpc19kc2JfYnVzeShkc2IpKSB7CisJaWYgKGlzX2RzYl9idXN5 KGRldl9wcml2LCBwaXBlLCBkc2ItPmlkKSkgewogCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAog CQkJIlRBSUxfUFRSIHdyaXRlIGZhaWxlZCAtIGRzYiBlbmdpbmUgaXMgYnVzeS5cbiIpOwogCQln b3RvIHJlc2V0OwpAQCAtMzMyLDcgKzIzNiw3IEBAIHZvaWQgaW50ZWxfZHNiX2NvbW1pdChzdHJ1 Y3QgaW50ZWxfZHNiICpkc2IpCiAJCSAgICBpOTE1X2dndHRfb2Zmc2V0KGRzYi0+dm1hKSwgdGFp bCk7CiAJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIERTQl9UQUlMKHBpcGUsIGRzYi0+aWQpLAog CQkgICAgICAgaTkxNV9nZ3R0X29mZnNldChkc2ItPnZtYSkgKyB0YWlsKTsKLQlpZiAod2FpdF9m b3IoIWlzX2RzYl9idXN5KGRzYiksIDEpKSB7CisJaWYgKHdhaXRfZm9yKCFpc19kc2JfYnVzeShk ZXZfcHJpdiwgcGlwZSwgZHNiLT5pZCksIDEpKSB7CiAJCWRybV9lcnIoJmRldl9wcml2LT5kcm0s CiAJCQkiVGltZWQgb3V0IHdhaXRpbmcgZm9yIERTQiB3b3JrbG9hZCBjb21wbGV0aW9uLlxuIik7 CiAJCWdvdG8gcmVzZXQ7CkBAIC0zNDEsNSArMjQ1LDc5IEBAIHZvaWQgaW50ZWxfZHNiX2NvbW1p dChzdHJ1Y3QgaW50ZWxfZHNiICpkc2IpCiByZXNldDoKIAlkc2ItPmZyZWVfcG9zID0gMDsKIAlk c2ItPmluc19zdGFydF9vZmZzZXQgPSAwOwotCWludGVsX2RzYl9kaXNhYmxlX2VuZ2luZShkc2Ip OworCWludGVsX2RzYl9kaXNhYmxlX2VuZ2luZShkZXZfcHJpdiwgcGlwZSwgZHNiLT5pZCk7Cit9 CisKKy8qKgorICogaW50ZWxfZHNiX3ByZXBhcmUoKSAtIEFsbG9jYXRlLCBwaW4gYW5kIG1hcCB0 aGUgRFNCIGNvbW1hbmQgYnVmZmVyLgorICogQGNydGNfc3RhdGU6IGludGVsX2NydGNfc3RhdGUg c3RydWN0dXJlIHRvIHByZXBhcmUgYXNzb2NpYXRlZCBkc2IgaW5zdGFuY2UuCisgKgorICogVGhp cyBmdW5jdGlvbiBwcmVwYXJlIHRoZSBjb21tYW5kIGJ1ZmZlciB3aGljaCBpcyB1c2VkIHRvIHN0 b3JlIGRzYgorICogaW5zdHJ1Y3Rpb25zIHdpdGggZGF0YS4KKyAqLwordm9pZCBpbnRlbF9kc2Jf cHJlcGFyZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYp OworCXN0cnVjdCBpbnRlbF9kc2IgKmRzYjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCXUzMiAqYnVmOworCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOworCisJaWYgKCFIQVNfRFNCKGk5MTUpKQorCQlyZXR1cm47CisKKwlkc2IgPSBr bWFsbG9jKHNpemVvZigqZHNiKSwgR0ZQX0tFUk5FTCk7CisKKwl3YWtlcmVmID0gaW50ZWxfcnVu dGltZV9wbV9nZXQoJmk5MTUtPnJ1bnRpbWVfcG0pOworCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBEU0JfQlVGX1NJWkUpOworCWlmIChJU19FUlIob2JqKSkg eworCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJHZW0gb2JqZWN0IGNyZWF0aW9uIGZhaWxlZFxuIik7 CisJCWtmcmVlKGRzYik7CisJCWdvdG8gb3V0OworCX0KKworCXZtYSA9IGk5MTVfZ2VtX29iamVj dF9nZ3R0X3BpbihvYmosIE5VTEwsIDAsIDAsIDApOworCWlmIChJU19FUlIodm1hKSkgeworCQlk cm1fZXJyKCZpOTE1LT5kcm0sICJWbWEgY3JlYXRpb24gZmFpbGVkXG4iKTsKKwkJaTkxNV9nZW1f b2JqZWN0X3B1dChvYmopOworCQlrZnJlZShkc2IpOworCQlnb3RvIG91dDsKKwl9CisKKwlidWYg PSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh2bWEtPm9iaiwgSTkxNV9NQVBfV0MpOworCWlmIChJ U19FUlIoYnVmKSkgeworCQlkcm1fZXJyKCZpOTE1LT5kcm0sICJDb21tYW5kIGJ1ZmZlciBjcmVh dGlvbiBmYWlsZWRcbiIpOworCQlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmdm1hLCBJOTE1 X1ZNQV9SRUxFQVNFX01BUCk7CisJCWtmcmVlKGRzYik7CisJCWdvdG8gb3V0OworCX0KKworCWRz Yi0+aWQgPSBEU0IxOworCWRzYi0+dm1hID0gdm1hOworCWRzYi0+Y21kX2J1ZiA9IGJ1ZjsKKwlk c2ItPmZyZWVfcG9zID0gMDsKKwlkc2ItPmluc19zdGFydF9vZmZzZXQgPSAwOworCWNydGNfc3Rh dGUtPmRzYiA9IGRzYjsKK291dDoKKwlpbnRlbF9ydW50aW1lX3BtX3B1dCgmaTkxNS0+cnVudGlt ZV9wbSwgd2FrZXJlZik7Cit9CisKKy8qKgorICogaW50ZWxfZHNiX2NsZWFudXAoKSAtIFRvIGNs ZWFudXAgRFNCIGNvbnRleHQuCisgKiBAY3J0Y19zdGF0ZTogaW50ZWxfY3J0Y19zdGF0ZSBzdHJ1 Y3R1cmUgdG8gY2xlYW51cCBhc3NvY2lhdGVkIGRzYiBpbnN0YW5jZS4KKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIGNsZWFudXAgdGhlIERTQiBjb250ZXh0IGJ5IHVucGlubmluZyBhbmQgcmVsZWFzaW5n CisgKiB0aGUgVk1BIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggaXQuCisgKi8KK3ZvaWQgaW50ZWxf ZHNiX2NsZWFudXAoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJaWYg KCFjcnRjX3N0YXRlLT5kc2IpCisJCXJldHVybjsKKworCWk5MTVfdm1hX3VucGluX2FuZF9yZWxl YXNlKCZjcnRjX3N0YXRlLT5kc2ItPnZtYSwgSTkxNV9WTUFfUkVMRUFTRV9NQVApOworCWtmcmVl KGNydGNfc3RhdGUtPmRzYik7CisJY3J0Y19zdGF0ZS0+ZHNiID0gTlVMTDsKIH0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNiLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RzYi5oCmluZGV4IDM5NWVmOWNlNTU4ZS4uNjU0YTEx ZjI0YjgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rz Yi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHNiLmgKQEAgLTEw LDcgKzEwLDcgQEAKIAogI2luY2x1ZGUgImk5MTVfcmVnLmgiCiAKLXN0cnVjdCBpbnRlbF9jcnRj Oworc3RydWN0IGludGVsX2NydGNfc3RhdGU7CiBzdHJ1Y3QgaTkxNV92bWE7CiAKIGVudW0gZHNi X2lkIHsKQEAgLTIyLDcgKzIyLDYgQEAgZW51bSBkc2JfaWQgewogfTsKIAogc3RydWN0IGludGVs X2RzYiB7Ci0JbG9uZyByZWZjb3VudDsKIAllbnVtIGRzYl9pZCBpZDsKIAl1MzIgKmNtZF9idWY7 CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CkBAIC00MSwxMiArNDAsMTIgQEAgc3RydWN0IGludGVs X2RzYiB7CiAJdTMyIGluc19zdGFydF9vZmZzZXQ7CiB9OwogCi1zdHJ1Y3QgaW50ZWxfZHNiICoK LWludGVsX2RzYl9nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwotdm9pZCBpbnRlbF9kc2Jf cHV0KHN0cnVjdCBpbnRlbF9kc2IgKmRzYik7Ci12b2lkIGludGVsX2RzYl9yZWdfd3JpdGUoc3Ry dWN0IGludGVsX2RzYiAqZHNiLCBpOTE1X3JlZ190IHJlZywgdTMyIHZhbCk7Ci12b2lkIGludGVs X2RzYl9pbmRleGVkX3JlZ193cml0ZShzdHJ1Y3QgaW50ZWxfZHNiICpkc2IsIGk5MTVfcmVnX3Qg cmVnLAotCQkJCSB1MzIgdmFsKTsKLXZvaWQgaW50ZWxfZHNiX2NvbW1pdChzdHJ1Y3QgaW50ZWxf ZHNiICpkc2IpOwordm9pZCBpbnRlbF9kc2JfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSk7Cit2b2lkIGludGVsX2RzYl9jbGVhbnVwKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKTsKK3ZvaWQgaW50ZWxfZHNiX3JlZ193cml0ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSBpOTE1X3JlZ190IHJlZywgdTMy IHZhbCk7Cit2b2lkIGludGVsX2RzYl9pbmRleGVkX3JlZ193cml0ZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgaTkxNV9yZWdfdCByZWcsIHUzMiB2YWwp Owordm9pZCBpbnRlbF9kc2JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKTsKIAogI2VuZGlmCi0tIAoyLjI2LjAKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=