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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 A7CBDC433ED for ; Wed, 14 Apr 2021 02:23:32 +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 6D9F76100B for ; Wed, 14 Apr 2021 02:23:32 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6D9F76100B 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 15AA86E8BA; Wed, 14 Apr 2021 02:23:32 +0000 (UTC) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9D76F6E8B3 for ; Wed, 14 Apr 2021 02:23:30 +0000 (UTC) IronPort-SDR: Lcr/k/84eMYngvSGxhlQVfPdKdY5onEQK5CoTHxtEXkKL7Yh4pgc0eGxK7R3SI6Uqpvdc0zPIR 8B6jiXUVvCLg== X-IronPort-AV: E=McAfee;i="6200,9189,9953"; a="182057293" X-IronPort-AV: E=Sophos;i="5.82,221,1613462400"; d="scan'208";a="182057293" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Apr 2021 19:23:29 -0700 IronPort-SDR: FoiQMh09WtstjkiWyF+iYthPp5743ntI7aMF7h+lacKXrASVm4V7k9oHbvl+OoZe7IAHyXcqFH LRehO8oh6dXg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,221,1613462400"; d="scan'208";a="421070651" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.171]) by orsmga007.jf.intel.com with SMTP; 13 Apr 2021 19:23:27 -0700 Received: by stinkbox (sSMTP sendmail emulation); Wed, 14 Apr 2021 05:23:27 +0300 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Wed, 14 Apr 2021 05:23:07 +0300 Message-Id: <20210414022309.30898-7-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210414022309.30898-1-ville.syrjala@linux.intel.com> References: <20210414022309.30898-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 6/8] drm/i915: Nuke lots of crap from intel_fbc_state_cache 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRo ZXJlJ3Mgbm8gbmVlZCB0byBzdG9yZSBhbGwgdGhpcyBzdHVmZiBpbiBpbnRlbF9mYmNfc3RhdGVf Y2FjaGUuCkp1c3QgY2hlY2sgaXQgYWxsIGFnYWluc3QgdGhlIHBsYW5lL2NydGMgc3RhdGVzIGFu ZCBzdG9yZSBvbmx5CndoYXQgd2UgbmVlZC4gUHJvYmFibHkgbW9yZSBzaG91bGQgZ2V0IG51a2Vk IHN0aWxsLCBidXQgdGhpcwppcyBhIHN0YXJ0LgoKU28gd2hhdCB3ZSdsbCBkbyBpczoKLSBlYWNo IGNydGMgd2lsbCBjaGVjayBpdHMgb3duIHN0YXRlIGFuZCB1cGRhdGUgaXRzIGxvY2FsCiAgbm9f ZmJjX3JlYXNvbgotIHRoZSBwZXItY3J0YyBub19mYmNfcmVhc29uIChpZiBhbnkpIHRoZW4gZ2V0 cyBwcm9wYWdhdGVkCiAgdG8gdGhlIGNhY2hlLT5ub19mYmNfcmVhc29uIHdoaWxlIGRvaW5nIHRo ZSBhY3R1YWwgdXBkYXRlCi0gZmJjLT5ub19mYmNfcmVhc29uIGdldHMgdXBkYXRlZCBpbiB0aGUg ZW5kIHdpdGggZWl0aGVyCiAgdGhlIHZhbHVlIGZyb20gdGhlIGNhY2hlIG9yIGRpcmVjdGx5IGZy b20gZnJvbnRidWZmZXIKICB0cmFjaW5nCgpJdCdzIHN0aWxsIGEgYml0IG1lc3N5LCBidXQgc2hv dWxkIGhvcGVmdWx5IGdldCBjbGVhbmVkIHVwCm1vcmUgaW4gdGhlIGZ1dHVyZS4gQXQgbGVhc3Qg bm93IHdlIGNhbiBvYnNlcnZlIGVhY2ggcGlwZSdzCnJlYXNvbnMgZm9yIHJlamVjdGluZyBGQkMg bm93IG1vcmUgY29uc2lzdGVudGx5LCBhbmQgd2UgZG9uJ3QKaGF2ZSBzbyBtY3VoIHJlZHVuZGFu dCBzdGF0ZSBzdG9yZSBhbGwgb3ZlciB0aGUgcGxhY2UuCgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBT eXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8ICAgNSArLQogLi4uL2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jICAgICAgfCAzNjMgKysrKysrKystLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5oICAgICAgfCAgIDMgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAyMSArLQog NSBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5zZXJ0aW9ucygrKSwgMjE3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggYTRiOGZi NWMyMGYwLi5mMWQ3MWNiNzk1MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheS5jCkBAIC05NTc1LDcgKzk1NzUsNiBAQCBzdGF0aWMgaW50IGludGVsX2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChyZXQpCiAJCWdvdG8gZmFp bDsKIAotCWludGVsX2ZiY19jaG9vc2VfY3J0YyhkZXZfcHJpdiwgc3RhdGUpOwogCXJldCA9IGNh bGNfd2F0ZXJtYXJrX2RhdGEoc3RhdGUpOwogCWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKQEAgLTk2 MDQsNiArOTYwMywxMCBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKIAorCXJldCA9IGludGVsX2Zi Y19hdG9taWNfY2hlY2soc3RhdGUpOworCWlmIChyZXQpCisJCWdvdG8gZmFpbDsKKwogCWZvcl9l YWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0 ZSwKIAkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ dWFwaS5hc3luY19mbGlwKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheV90eXBlcy5oCmluZGV4IGUyZTcwN2M0ZGZmNS4uYzA4ZmFlNjNiYWU1IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlw ZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlw ZXMuaApAQCAtMTA4NCw3ICsxMDg0LDcgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewogCiAJ Ym9vbCBjcmNfZW5hYmxlZDsKIAotCWJvb2wgZW5hYmxlX2ZiYzsKKwljb25zdCBjaGFyICpub19m YmNfcmVhc29uOwogCiAJYm9vbCBkb3VibGVfd2lkZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZmJjLmMKaW5kZXggODE2NWJkYjZmOTIxLi5hODU2NWM1OGQxZjEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYwpAQCAtNDMsNiArNDMsNyBAQAog I2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgogI2luY2x1ZGUg Imk5MTVfdmdwdS5oIgorI2luY2x1ZGUgImludGVsX2NkY2xrLmgiCiAjaW5jbHVkZSAiaW50ZWxf ZGlzcGxheV90eXBlcy5oIgogI2luY2x1ZGUgImludGVsX2ZiYy5oIgogI2luY2x1ZGUgImludGVs X2Zyb250YnVmZmVyLmgiCkBAIC01ODgsOSArNTg5LDE2IEBAIHZvaWQgaW50ZWxfZmJjX2NsZWFu dXBfY2ZiKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAltdXRleF91bmxvY2so JmZiYy0+bG9jayk7CiB9CiAKLXN0YXRpYyBib29sIHN0cmlkZV9pc192YWxpZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgdTY0IG1vZGlmaWVyLCB1bnNpZ25lZCBp bnQgc3RyaWRlKQorc3RhdGljIGJvb2wgc3RyaWRlX2lzX3ZhbGlkKGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKKwljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKKwl1bnNp Z25lZCBpbnQgc3RyaWRlOworCisJc3RyaWRlID0gcGxhbmVfc3RhdGUtPnZpZXcuY29sb3JfcGxh bmVbMF0uc3RyaWRlOworCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5o dy5yb3RhdGlvbikpCisJCXN0cmlkZSAqPSBmYi0+Zm9ybWF0LT5jcHBbMF07CisKIAkvKiBUaGlz IHNob3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGVhcmxpZXIuICovCiAJaWYgKGRybV9XQVJOX09OX09O Q0UoJmRldl9wcml2LT5kcm0sIChzdHJpZGUgJiAoNjQgLSAxKSkgIT0gMCkpCiAJCXJldHVybiBm YWxzZTsKQEAgLTYwNyw3ICs2MTUsNyBAQCBzdGF0aWMgYm9vbCBzdHJpZGVfaXNfdmFsaWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJLyogRGlzcGxheSBXQSAjMTEwNTog c2tsLGJ4dCxrYmwsY2ZsLGdsayAqLwogCWlmIChJU19ESVNQTEFZX1ZFUihkZXZfcHJpdiwgOSkg JiYKLQkgICAgbW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSICYmIHN0cmlkZSAmIDUx MSkKKwkgICAgZmItPm1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiAmJiBzdHJpZGUg JiA1MTEpCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChzdHJpZGUgPiAxNjM4NCkKQEAgLTYxNiwx MCArNjI0LDEyIEBAIHN0YXRpYyBib29sIHN0cmlkZV9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHBpeGVs X2Zvcm1hdF9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJ ICB1MzIgcGl4ZWxfZm9ybWF0KQorc3RhdGljIGJvb2wgcGl4ZWxfZm9ybWF0X2lzX3ZhbGlkKGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7Ci0Jc3dpdGNoIChw aXhlbF9mb3JtYXQpIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOworCisJc3dpdGNoIChmYi0+Zm9ybWF0 LT5mb3JtYXQpIHsKIAljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6CiAJY2FzZSBEUk1fRk9STUFU X1hCR1I4ODg4OgogCQlyZXR1cm4gdHJ1ZTsKQEAgLTYzNywxMCArNjQ3LDE0IEBAIHN0YXRpYyBi b29sIHBpeGVsX2Zvcm1hdF9pc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJfQogfQogCi1zdGF0aWMgYm9vbCByb3RhdGlvbl9pc192YWxpZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgICB1MzIgcGl4ZWxfZm9ybWF0LCB1bnNpZ25l ZCBpbnQgcm90YXRpb24pCitzdGF0aWMgYm9vbCByb3RhdGlvbl9pc192YWxpZChjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCWlmIChESVNQTEFZX1ZFUihk ZXZfcHJpdikgPj0gOSAmJiBwaXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9SR0I1NjUgJiYKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lLT5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5o dy5yb3RhdGlvbjsKKworCWlmIChESVNQTEFZX1ZFUihkZXZfcHJpdikgPj0gOSAmJgorCSAgICBm Yi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZPUk1BVF9SR0I1NjUgJiYKIAkgICAgZHJtX3JvdGF0 aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCiAJCXJldHVybiBmYWxzZTsKIAllbHNlIGlmIChESVNQ TEFZX1ZFUihkZXZfcHJpdikgPD0gNCAmJiAhSVNfRzRYKGRldl9wcml2KSAmJgpAQCAtNjU2LDEw ICs2NzAsMTAgQEAgc3RhdGljIGJvb2wgcm90YXRpb25faXNfdmFsaWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogICogdGhlIFggYW5kIFkgb2Zmc2V0IHJlZ2lzdGVycy4gVGhh dCdzIHdoeSB3ZSBpbmNsdWRlIHRoZSBzcmMgeC95IG9mZnNldHMKICAqIGluc3RlYWQgb2YganVz dCBsb29raW5nIGF0IHRoZSBwbGFuZSBzaXplLgogICovCi1zdGF0aWMgYm9vbCBpbnRlbF9mYmNf aHdfdHJhY2tpbmdfY292ZXJzX3NjcmVlbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKK3N0YXRp YyBib29sCitpbnRlbF9mYmNfaHdfdHJhY2tpbmdfY292ZXJzX3NjcmVlbihjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwotCXN0cnVjdCBpbnRlbF9m YmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7CiAJdW5zaWduZWQg aW50IGVmZmVjdGl2ZV93LCBlZmZlY3RpdmVfaCwgbWF4X3csIG1heF9oOwogCiAJaWYgKERJU1BM QVlfVkVSKGRldl9wcml2KSA+PSAxMCkgewpAQCAtNjc2LDE4ICs2OTAsMjAgQEAgc3RhdGljIGJv b2wgaW50ZWxfZmJjX2h3X3RyYWNraW5nX2NvdmVyc19zY3JlZW4oc3RydWN0IGludGVsX2NydGMg KmNydGMpCiAJCW1heF9oID0gMTUzNjsKIAl9CiAKLQlpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJj ZV9zaXplKCZmYmMtPnN0YXRlX2NhY2hlLCAmZWZmZWN0aXZlX3csCi0JCQkJCSZlZmZlY3RpdmVf aCk7Ci0JZWZmZWN0aXZlX3cgKz0gZmJjLT5zdGF0ZV9jYWNoZS5wbGFuZS5hZGp1c3RlZF94Owot CWVmZmVjdGl2ZV9oICs9IGZiYy0+c3RhdGVfY2FjaGUucGxhbmUuYWRqdXN0ZWRfeTsKKwllZmZl Y3RpdmVfdyA9IHBsYW5lX3N0YXRlLT52aWV3LmNvbG9yX3BsYW5lWzBdLnggKworCQkoZHJtX3Jl Y3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTYpOworCWVmZmVjdGl2ZV9oID0g cGxhbmVfc3RhdGUtPnZpZXcuY29sb3JfcGxhbmVbMF0ueSArCisJCShkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTYpOwogCiAJcmV0dXJuIGVmZmVjdGl2ZV93IDw9 IG1heF93ICYmIGVmZmVjdGl2ZV9oIDw9IG1heF9oOwogfQogCi1zdGF0aWMgYm9vbCB0aWxpbmdf aXNfdmFsaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgIHU2NCBt b2RpZmllcikKK3N0YXRpYyBib29sIHRpbGluZ19pc192YWxpZChjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN3aXRjaCAobW9kaWZpZXIpIHsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lLT5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmh3LmZiOworCisJc3dpdGNoIChmYi0+bW9kaWZpZXIpIHsKIAljYXNlIERSTV9GT1JN QVRfTU9EX0xJTkVBUjoKIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgogCQlyZXR1cm4g RElTUExBWV9WRVIoZGV2X3ByaXYpID49IDk7CkBAIC03MDcsMTUgKzcyMywxMCBAQCBzdGF0aWMg dm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAogCXN0cnVjdCBpbnRlbF9mYmNfc3RhdGVfY2FjaGUgKmNhY2hlID0gJmZiYy0+c3RhdGVfY2Fj aGU7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CiAK LQljYWNoZS0+cGxhbmUudmlzaWJsZSA9IHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGU7Ci0JaWYg KCFjYWNoZS0+cGxhbmUudmlzaWJsZSkKKwljYWNoZS0+bm9fZmJjX3JlYXNvbiA9IGNydGNfc3Rh dGUtPm5vX2ZiY19yZWFzb247CisJaWYgKGNhY2hlLT5ub19mYmNfcmVhc29uKQogCQlyZXR1cm47 CiAKLQljYWNoZS0+Y3J0Yy5tb2RlX2ZsYWdzID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZS5mbGFnczsKLQlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9w cml2KSkKLQkJY2FjaGUtPmNydGMuaHN3X2Jkd19waXhlbF9yYXRlID0gY3J0Y19zdGF0ZS0+cGl4 ZWxfcmF0ZTsKLQotCWNhY2hlLT5wbGFuZS5yb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3Rh dGlvbjsKIAkvKgogCSAqIFNyYyBjb29yZGluYXRlcyBhcmUgYWxyZWFkeSByb3RhdGVkIGJ5IDI3 MCBkZWdyZWVzIGZvcgogCSAqIHRoZSA5MC8yNzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2Vz ICh0byBtYXRjaCB0aGUKQEAgLTcyMywxMCArNzM0LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmJj X3VwZGF0ZV9zdGF0ZV9jYWNoZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkgKi8KIAljYWNo ZS0+cGxhbmUuc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+ PiAxNjsKIAljYWNoZS0+cGxhbmUuc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRl LT51YXBpLnNyYykgPj4gMTY7Ci0JY2FjaGUtPnBsYW5lLmFkanVzdGVkX3ggPSBwbGFuZV9zdGF0 ZS0+dmlldy5jb2xvcl9wbGFuZVswXS54OwotCWNhY2hlLT5wbGFuZS5hZGp1c3RlZF95ID0gcGxh bmVfc3RhdGUtPnZpZXcuY29sb3JfcGxhbmVbMF0ueTsKLQotCWNhY2hlLT5wbGFuZS5waXhlbF9i bGVuZF9tb2RlID0gcGxhbmVfc3RhdGUtPmh3LnBpeGVsX2JsZW5kX21vZGU7CiAKIAljYWNoZS0+ ZmIuZm9ybWF0ID0gZmItPmZvcm1hdDsKIAljYWNoZS0+ZmIubW9kaWZpZXIgPSBmYi0+bW9kaWZp ZXI7CkBAIC03NDksOCArNzU2LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX3VwZGF0ZV9zdGF0 ZV9jYWNoZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJY2FjaGUtPmZlbmNlX2lkID0gcGxh bmVfc3RhdGUtPnZtYS0+ZmVuY2UtPmlkOwogCWVsc2UKIAkJY2FjaGUtPmZlbmNlX2lkID0gLTE7 Ci0KLQljYWNoZS0+cHNyMl9hY3RpdmUgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsKIH0KIAogc3Rh dGljIGJvb2wgaW50ZWxfZmJjX2NmYl9zaXplX2NoYW5nZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQpAQCAtNzg0LDYgKzc4OSwxMSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNf Y2FuX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJc3RydWN0 IGludGVsX2ZiYyAqZmJjID0gJmRldl9wcml2LT5mYmM7CiAKKwlpZiAoIUhBU19GQkMoZGV2X3By aXYpKSB7CisJCWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJ1bnN1cHBvcnRlZCBieSB0aGlzIGNoaXBz ZXQiOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9w cml2KSkgewogCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAiVkdQVSBpcyBhY3RpdmUiOwogCQlyZXR1 cm4gZmFsc2U7CkBAIC04MDIsNiArODEyLDExNCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNfY2Fu X2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIHRydWU7 CiB9CiAKK3N0YXRpYyBpbnQgaW50ZWxfY3J0Y19mYmNfY2hlY2soc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCisJCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwor CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnBy aW1hcnkpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KKwkJaW50ZWxf YXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJY29uc3Qgc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9CisJCWludGVsX2F0b21pY19nZXRfbmV3X3Bs YW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7CisJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmI7CisKKwlpZiAoIXBsYW5lLT5oYXNfZmJjKQorCQlyZXR1cm4gMDsKKworCWlmICghcGxhbmVf c3RhdGUpCisJCXJldHVybiAwOworCisJZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7CisKKwlpZiAo IXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpIHsKKwkJY3J0Y19zdGF0ZS0+bm9fZmJjX3JlYXNv biA9ICJwbGFuZSBub3QgdmlzaWJsZSI7CisJCXJldHVybiAwOworCX0KKworCWlmIChjcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpIHsK KwkJY3J0Y19zdGF0ZS0+bm9fZmJjX3JlYXNvbiA9ICJpbnRlcmxhY2VkIG1vZGUiOworCQlyZXR1 cm4gMDsKKwl9CisKKwlpZiAoIWludGVsX2ZiY19od190cmFja2luZ19jb3ZlcnNfc2NyZWVuKHBs YW5lX3N0YXRlKSkgeworCQljcnRjX3N0YXRlLT5ub19mYmNfcmVhc29uID0gInBsYW5lIHRvbyBs YXJnZSI7CisJCXJldHVybiAwOworCX0KKworCWlmICghcGl4ZWxfZm9ybWF0X2lzX3ZhbGlkKHBs YW5lX3N0YXRlKSkgeworCQljcnRjX3N0YXRlLT5ub19mYmNfcmVhc29uID0gImluY29tcGF0aWJs ZSBwaXhlbCBmb3JtYXQiOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoIXRpbGluZ19pc192YWxp ZChwbGFuZV9zdGF0ZSkpIHsKKwkJY3J0Y19zdGF0ZS0+bm9fZmJjX3JlYXNvbiA9ICJpbmNvbXBh dGlibGUgdGlsaW5nIjsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKCFyb3RhdGlvbl9pc192YWxp ZChwbGFuZV9zdGF0ZSkpIHsKKwkJY3J0Y19zdGF0ZS0+bm9fZmJjX3JlYXNvbiA9ICJpbmNvbXBh dGlibGUgcm90YXRpb24iOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoIXN0cmlkZV9pc192YWxp ZChwbGFuZV9zdGF0ZSkpIHsKKwkJY3J0Y19zdGF0ZS0+bm9fZmJjX3JlYXNvbiA9ICJpbmNvbXBh dGlibGUgc3RyaWRlIjsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHBsYW5lX3N0YXRlLT5ody5w aXhlbF9ibGVuZF9tb2RlICE9IERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkUgJiYKKwkgICAgcGxh bmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPmhhc19hbHBoYSkgeworCQljcnRjX3N0YXRlLT5ub19m YmNfcmVhc29uID0gImFscGhhIGJsZW5kaW5nIGVuYWJsZWQiOworCQlyZXR1cm4gMDsKKwl9CisK KwkvKgorCSAqIFdvcmsgYXJvdW5kIGEgcHJvYmxlbSBvbiBHRU45KyBIVywgd2hlcmUgZW5hYmxp bmcgRkJDIG9uIGEgcGxhbmUKKwkgKiBoYXZpbmcgYSBZIG9mZnNldCB0aGF0IGlzbid0IGRpdmlz aWJsZSBieSA0IGNhdXNlcyBGSUZPIHVuZGVycnVuCisJICogYW5kIHNjcmVlbiBmbGlja2VyLgor CSAqLworCWlmIChESVNQTEFZX1ZFUihkZXZfcHJpdikgPj0gOSAmJgorCSAgICBwbGFuZV9zdGF0 ZS0+dmlldy5jb2xvcl9wbGFuZVswXS55ICYgMykgeworCQljcnRjX3N0YXRlLT5ub19mYmNfcmVh c29uID0gInBsYW5lIHN0YXJ0IFkgb2Zmc2V0IG1pc2FsaWduZWQiOworCQlyZXR1cm4gMDsKKwl9 CisKKwkvKiBXYV8yMjAxMDc1MTE2NjogaWNsLCBlaGwsIHRnbCwgZGcxLCBya2wgKi8KKwlpZiAo RElTUExBWV9WRVIoZGV2X3ByaXYpID49IDExICYmCisJICAgIChwbGFuZV9zdGF0ZS0+dmlldy5j b2xvcl9wbGFuZVswXS55ICsgKGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3Jj KSA+PiAxNikpICYgMykgeworCQljcnRjX3N0YXRlLT5ub19mYmNfcmVhc29uID0gInBsYW5lIGVu ZCBZIG9mZnNldCBtaXNhbGlnbmVkIjsKKwkJcmV0dXJuIDA7CisJfQorCisJLyoKKwkgKiBUaWdl cmxha2UgaXMgbm90IHN1cHBvcnRpbmcgRkJDIHdpdGggUFNSMi4KKwkgKiBSZWNvbW1lbmRhdGlv biBpcyB0byBrZWVwIHRoaXMgY29tYmluYXRpb24gZGlzYWJsZWQKKwkgKiBCc3BlYzogNTA0MjIg SFNEOiAxNDAxMDI2MDAwMgorCSAqLworCWlmIChJU19USUdFUkxBS0UoZGV2X3ByaXYpICYmIGNy dGNfc3RhdGUtPmhhc19wc3IyKSB7CisJCWNydGNfc3RhdGUtPm5vX2ZiY19yZWFzb24gPSAiUFNS MiBlbmFibGVkIjsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogV2FGYmNFeGNlZWRDZENsb2NrVGhy ZXNob2xkOmhzdyxiZHcgKi8KKwlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURX RUxMKGRldl9wcml2KSkgeworCQljb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xr X3N0YXRlOworCisJCWNkY2xrX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9jZGNsa19zdGF0ZShz dGF0ZSk7CisJCWlmIChJU19FUlIoY2RjbGtfc3RhdGUpKQorCQkJcmV0dXJuIFBUUl9FUlIoY2Rj bGtfc3RhdGUpOworCisJCWlmIChjcnRjX3N0YXRlLT5waXhlbF9yYXRlID4KKwkJICAgIGNkY2xr X3N0YXRlLT5sb2dpY2FsLmNkY2xrICogOTUgLyAxMDApIHsKKwkJCWNydGNfc3RhdGUtPm5vX2Zi Y19yZWFzb24gPSAicGl4ZWwgcmF0ZSB0b28gaGlnaCI7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0K KworCWNydGNfc3RhdGUtPm5vX2ZiY19yZWFzb24gPSBOVUxMOworCisJcmV0dXJuIDA7Cit9CisK IHN0YXRpYyBib29sIGludGVsX2ZiY19jYW5fYWN0aXZhdGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj LT5iYXNlLmRldik7CkBAIC04MTEsMjYgKzkyOSw4IEBAIHN0YXRpYyBib29sIGludGVsX2ZiY19j YW5fYWN0aXZhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJaWYgKCFpbnRlbF9mYmNfY2Fu X2VuYWJsZShkZXZfcHJpdikpCiAJCXJldHVybiBmYWxzZTsKIAotCWlmICghY2FjaGUtPnBsYW5l LnZpc2libGUpIHsKLQkJZmJjLT5ub19mYmNfcmVhc29uID0gInByaW1hcnkgcGxhbmUgbm90IHZp c2libGUiOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyogV2UgZG9uJ3QgbmVlZCB0byB1c2Ug YSBzdGF0ZSBjYWNoZSBoZXJlIHNpbmNlIHRoaXMgaW5mb3JtYXRpb24gaXMKLQkgKiBnbG9iYWwg Zm9yIGFsbCBDUlRDLgotCSAqLwotCWlmIChmYmMtPnVuZGVycnVuX2RldGVjdGVkKSB7Ci0JCWZi Yy0+bm9fZmJjX3JlYXNvbiA9ICJ1bmRlcnJ1biBkZXRlY3RlZCI7Ci0JCXJldHVybiBmYWxzZTsK LQl9Ci0KLQlpZiAoY2FjaGUtPmNydGMubW9kZV9mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJM QUNFKSB7Ci0JCWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJpbmNvbXBhdGlibGUgbW9kZSI7Ci0JCXJl dHVybiBmYWxzZTsKLQl9Ci0KLQlpZiAoIWludGVsX2ZiY19od190cmFja2luZ19jb3ZlcnNfc2Ny ZWVuKGNydGMpKSB7Ci0JCWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJtb2RlIHRvbyBsYXJnZSBmb3Ig Y29tcHJlc3Npb24iOworCWlmIChjYWNoZS0+bm9fZmJjX3JlYXNvbikgeworCQlmYmMtPm5vX2Zi Y19yZWFzb24gPSBjYWNoZS0+bm9fZmJjX3JlYXNvbjsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIApA QCAtODUyLDQxICs5NTIsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYmNfY2FuX2FjdGl2YXRlKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCSAqIHJvdGF0aW9uLgogCSAqLwogCWlmIChESVNQTEFZ X1ZFUihkZXZfcHJpdikgPCA5ICYmIGNhY2hlLT5mZW5jZV9pZCA8IDApIHsKLQkJZmJjLT5ub19m YmNfcmVhc29uID0gImZyYW1lYnVmZmVyIG5vdCB0aWxlZCBvciBmZW5jZWQiOwotCQlyZXR1cm4g ZmFsc2U7Ci0JfQotCi0JaWYgKCFwaXhlbF9mb3JtYXRfaXNfdmFsaWQoZGV2X3ByaXYsIGNhY2hl LT5mYi5mb3JtYXQtPmZvcm1hdCkpIHsKLQkJZmJjLT5ub19mYmNfcmVhc29uID0gInBpeGVsIGZv cm1hdCBpcyBpbnZhbGlkIjsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCWlmICghcm90YXRpb25f aXNfdmFsaWQoZGV2X3ByaXYsIGNhY2hlLT5mYi5mb3JtYXQtPmZvcm1hdCwKLQkJCSAgICAgICBj YWNoZS0+cGxhbmUucm90YXRpb24pKSB7Ci0JCWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJyb3RhdGlv biB1bnN1cHBvcnRlZCI7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQlpZiAoIXRpbGluZ19pc192 YWxpZChkZXZfcHJpdiwgY2FjaGUtPmZiLm1vZGlmaWVyKSkgewotCQlmYmMtPm5vX2ZiY19yZWFz b24gPSAidGlsaW5nIHVuc3VwcG9ydGVkIjsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQotCWlmICgh c3RyaWRlX2lzX3ZhbGlkKGRldl9wcml2LCBjYWNoZS0+ZmIubW9kaWZpZXIsIGNhY2hlLT5mYi5z dHJpZGUpKSB7Ci0JCWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJmcmFtZWJ1ZmZlciBzdHJpZGUgbm90 IHN1cHBvcnRlZCI7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQlpZiAoY2FjaGUtPnBsYW5lLnBp eGVsX2JsZW5kX21vZGUgIT0gRFJNX01PREVfQkxFTkRfUElYRUxfTk9ORSAmJgotCSAgICBjYWNo ZS0+ZmIuZm9ybWF0LT5oYXNfYWxwaGEpIHsKLQkJZmJjLT5ub19mYmNfcmVhc29uID0gInBlci1w aXhlbCBhbHBoYSBibGVuZGluZyBpcyBpbmNvbXBhdGlibGUgd2l0aCBGQkMiOwotCQlyZXR1cm4g ZmFsc2U7Ci0JfQotCi0JLyogV2FGYmNFeGNlZWRDZENsb2NrVGhyZXNob2xkOmhzdyxiZHcgKi8K LQlpZiAoKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpICYm Ci0JICAgIGNhY2hlLT5jcnRjLmhzd19iZHdfcGl4ZWxfcmF0ZSA+PSBkZXZfcHJpdi0+Y2RjbGsu aHcuY2RjbGsgKiA5NSAvIDEwMCkgewotCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAicGl4ZWwgcmF0 ZSBpcyB0b28gYmlnIjsKKwkJZmJjLT5ub19mYmNfcmVhc29uID0gImZyYW1lYnVmZmVyIG5vdCBm ZW5jZWQiOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC05MDUsMzQgKzk3MSw2IEBAIHN0YXRp YyBib29sIGludGVsX2ZiY19jYW5fYWN0aXZhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJ CXJldHVybiBmYWxzZTsKIAl9CiAKLQkvKgotCSAqIFdvcmsgYXJvdW5kIGEgcHJvYmxlbSBvbiBH RU45KyBIVywgd2hlcmUgZW5hYmxpbmcgRkJDIG9uIGEgcGxhbmUKLQkgKiBoYXZpbmcgYSBZIG9m ZnNldCB0aGF0IGlzbid0IGRpdmlzaWJsZSBieSA0IGNhdXNlcyBGSUZPIHVuZGVycnVuCi0JICog YW5kIHNjcmVlbiBmbGlja2VyLgotCSAqLwotCWlmIChESVNQTEFZX1ZFUihkZXZfcHJpdikgPj0g OSAmJgotCSAgICAoZmJjLT5zdGF0ZV9jYWNoZS5wbGFuZS5hZGp1c3RlZF95ICYgMykpIHsKLQkJ ZmJjLT5ub19mYmNfcmVhc29uID0gInBsYW5lIFkgb2Zmc2V0IGlzIG1pc2FsaWduZWQiOwotCQly ZXR1cm4gZmFsc2U7Ci0JfQotCi0JLyogV2FfMjIwMTA3NTExNjY6IGljbCwgZWhsLCB0Z2wsIGRn MSwgcmtsICovCi0JaWYgKERJU1BMQVlfVkVSKGRldl9wcml2KSA+PSAxMSAmJgotCSAgICAoY2Fj aGUtPnBsYW5lLnNyY19oICsgY2FjaGUtPnBsYW5lLmFkanVzdGVkX3kpICUgNCkgewotCQlmYmMt Pm5vX2ZiY19yZWFzb24gPSAicGxhbmUgaGVpZ2h0ICsgb2Zmc2V0IGlzIG5vbi1tb2R1bG8gb2Yg NCI7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KLQkvKgotCSAqIFRpZ2VybGFrZSBpcyBub3Qgc3Vw cG9ydGluZyBGQkMgd2l0aCBQU1IyLgotCSAqIFJlY29tbWVuZGF0aW9uIGlzIHRvIGtlZXAgdGhp cyBjb21iaW5hdGlvbiBkaXNhYmxlZAotCSAqIEJzcGVjOiA1MDQyMiBIU0Q6IDE0MDEwMjYwMDAy Ci0JICovCi0JaWYgKGZiYy0+c3RhdGVfY2FjaGUucHNyMl9hY3RpdmUgJiYgSVNfVElHRVJMQUtF KGRldl9wcml2KSkgewotCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAibm90IHN1cHBvcnRlZCB3aXRo IFBTUjIiOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTk2 Myw4ICsxMDAxLDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX2dldF9yZWdfcGFyYW1zKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAogCXBhcmFtcy0+Y2ZiX3NpemUgPSBpbnRlbF9mYmNfY2FsY3Vs YXRlX2NmYl9zaXplKGRldl9wcml2LCBjYWNoZSk7CiAKIAlwYXJhbXMtPmdlbjlfd2FfY2ZiX3N0 cmlkZSA9IGNhY2hlLT5nZW45X3dhX2NmYl9zdHJpZGU7Ci0KLQlwYXJhbXMtPnBsYW5lX3Zpc2li bGUgPSBjYWNoZS0+cGxhbmUudmlzaWJsZTsKIH0KIAogc3RhdGljIGJvb2wgaW50ZWxfZmJjX2Nh bl9mbGlwX251a2UoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCkBA IC05NzgsNyArMTAxNCw3IEBAIHN0YXRpYyBib29sIGludGVsX2ZiY19jYW5fZmxpcF9udWtlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWlmIChkcm1fYXRvbWlj X2NydGNfbmVlZHNfbW9kZXNldCgmY3J0Y19zdGF0ZS0+dWFwaSkpCiAJCXJldHVybiBmYWxzZTsK IAotCWlmICghcGFyYW1zLT5wbGFuZV92aXNpYmxlKQorCWlmIChmYmMtPm5vX2ZiY19yZWFzb24p CiAJCXJldHVybiBmYWxzZTsKIAogCWlmICghaW50ZWxfZmJjX2Nhbl9hY3RpdmF0ZShjcnRjKSkK QEAgLTEwMTIsNyArMTA0OCw2IEBAIGJvb2wgaW50ZWxfZmJjX3ByZV91cGRhdGUoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCWludGVsX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0 YXRlKHN0YXRlLCBwbGFuZSk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVsX2ZiYyAqZmJjID0gJmRldl9w cml2LT5mYmM7Ci0JY29uc3QgY2hhciAqcmVhc29uID0gInVwZGF0ZSBwZW5kaW5nIjsKIAlib29s IG5lZWRfdmJsYW5rX3dhaXQgPSBmYWxzZTsKIAogCWlmICghcGxhbmUtPmhhc19mYmMgfHwgIXBs YW5lX3N0YXRlKQpAQCAtMTAyNyw3ICsxMDYyLDcgQEAgYm9vbCBpbnRlbF9mYmNfcHJlX3VwZGF0 ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAlmYmMtPmZsaXBfcGVuZGluZyA9 IHRydWU7CiAKIAlpZiAoIWludGVsX2ZiY19jYW5fZmxpcF9udWtlKGNydGNfc3RhdGUpKSB7Ci0J CWludGVsX2ZiY19kZWFjdGl2YXRlKGRldl9wcml2LCByZWFzb24pOworCQlpbnRlbF9mYmNfZGVh Y3RpdmF0ZShkZXZfcHJpdiwgInVwZGF0ZSBwZW5kaW5nIik7CiAKIAkJLyoKIAkJICogRGlzcGxh eSBXQSAjMTE5ODogZ2xrKwpAQCAtMTA2Myw2ICsxMDk4LDcgQEAgYm9vbCBpbnRlbF9mYmNfcHJl X3VwZGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIHN0YXRpYyB2b2lkIF9f aW50ZWxfZmJjX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewog CXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOworCXN0cnVjdCBpbnRlbF9m YmNfc3RhdGVfY2FjaGUgKmNhY2hlID0gJmZiYy0+c3RhdGVfY2FjaGU7CiAJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSBmYmMtPmNydGM7CiAKIAlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwg IW11dGV4X2lzX2xvY2tlZCgmZmJjLT5sb2NrKSk7CkBAIC0xMDc0LDYgKzExMTAsNyBAQCBzdGF0 aWMgdm9pZCBfX2ludGVsX2ZiY19kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAogCV9faW50ZWxfZmJjX2NsZWFudXBfY2ZiKGRldl9wcml2KTsKIAorCWZiYy0+bm9f ZmJjX3JlYXNvbiA9IGNhY2hlLT5ub19mYmNfcmVhc29uOwogCWZiYy0+Y3J0YyA9IE5VTEw7CiB9 CiAKQEAgLTEwODksMTMgKzExMjYsNiBAQCBzdGF0aWMgdm9pZCBfX2ludGVsX2ZiY19wb3N0X3Vw ZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAogCWZiYy0+ZmxpcF9wZW5kaW5nID0gZmFs c2U7CiAKLQlpZiAoIWRldl9wcml2LT5wYXJhbXMuZW5hYmxlX2ZiYykgewotCQlpbnRlbF9mYmNf ZGVhY3RpdmF0ZShkZXZfcHJpdiwgImRpc2FibGVkIGF0IHJ1bnRpbWUgcGVyIG1vZHVsZSBwYXJh bSIpOwotCQlfX2ludGVsX2ZiY19kaXNhYmxlKGRldl9wcml2KTsKLQotCQlyZXR1cm47Ci0JfQot CiAJaW50ZWxfZmJjX2dldF9yZWdfcGFyYW1zKGNydGMsICZmYmMtPnBhcmFtcyk7CiAKIAlpZiAo IWludGVsX2ZiY19jYW5fYWN0aXZhdGUoY3J0YykpCkBAIC0xMTg5LDc1ICsxMjE5LDIzIEBAIHZv aWQgaW50ZWxfZmJjX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlt dXRleF91bmxvY2soJmZiYy0+bG9jayk7CiB9CiAKLS8qKgotICogaW50ZWxfZmJjX2Nob29zZV9j cnRjIC0gc2VsZWN0IGEgQ1JUQyB0byBlbmFibGUgRkJDIG9uCi0gKiBAZGV2X3ByaXY6IGk5MTUg ZGV2aWNlIGluc3RhbmNlCi0gKiBAc3RhdGU6IHRoZSBhdG9taWMgc3RhdGUgc3RydWN0dXJlCi0g KgotICogVGhpcyBmdW5jdGlvbiBsb29rcyBhdCB0aGUgcHJvcG9zZWQgc3RhdGUgZm9yIENSVENz IGFuZCBwbGFuZXMsIHRoZW4gY2hvb3NlcwotICogd2hpY2ggcGlwZSBpcyBnb2luZyB0byBoYXZl IEZCQyBieSBzZXR0aW5nIGludGVsX2NydGNfc3RhdGUtPmVuYWJsZV9mYmMgdG8KLSAqIHRydWUu Ci0gKgotICogTGF0ZXIsIGludGVsX2ZiY19lbmFibGUgaXMgZ29pbmcgdG8gbG9vayBmb3Igc3Rh dGUtPmVuYWJsZV9mYmMgYW5kIHRoZW4gbWF5YmUKLSAqIGVuYWJsZSBGQkMgZm9yIHRoZSBjaG9z ZW4gQ1JUQy4gSWYgaXQgZG9lcywgaXQgd2lsbCBzZXQgZGV2X3ByaXYtPmZiYy5jcnRjLgotICov Ci12b2lkIGludGVsX2ZiY19jaG9vc2VfY3J0YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCi0JCQkgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKK2ludCBpbnRl bF9mYmNfYXRvbWljX2NoZWNrKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogewot CXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOwotCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmU7Ci0Jc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKLQli b29sIGNydGNfY2hvc2VuID0gZmFsc2U7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGU7CisJc3RydWN0IGludGVsX2NydGMgKmNydGM7CiAJaW50IGk7CiAKLQltdXRleF9sb2Nr KCZmYmMtPmxvY2spOworCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBj cnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJCWludCByZXQ7CiAKLQkvKiBEb2VzIHRoaXMgYXRvbWlj IGNvbW1pdCBpbnZvbHZlIHRoZSBDUlRDIGN1cnJlbnRseSB0aWVkIHRvIEZCQz8gKi8KLQlpZiAo ZmJjLT5jcnRjICYmCi0JICAgICFpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRl LCBmYmMtPmNydGMpKQotCQlnb3RvIG91dDsKLQotCWlmICghaW50ZWxfZmJjX2Nhbl9lbmFibGUo ZGV2X3ByaXYpKQotCQlnb3RvIG91dDsKLQotCS8qIFNpbXBseSBjaG9vc2UgdGhlIGZpcnN0IENS VEMgdGhhdCBpcyBjb21wYXRpYmxlIGFuZCBoYXMgYSB2aXNpYmxlCi0JICogcGxhbmUuIFdlIGNv dWxkIGdvIGZvciBmYW5jaWVyIHNjaGVtZXMgc3VjaCBhcyBjaGVja2luZyB0aGUgcGxhbmUKLQkg KiBzaXplLCBidXQgdGhpcyB3b3VsZCBqdXN0IGFmZmVjdCB0aGUgZmV3IHBsYXRmb3JtcyB0aGF0 IGRvbid0IHRpZSBGQkMKLQkgKiB0byBwaXBlIG9yIHBsYW5lIEEuICovCi0JZm9yX2VhY2hfbmV3 X2ludGVsX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKLQkJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0JCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhwbGFuZV9zdGF0ZS0+aHcuY3J0Yyk7Ci0KLQkJaWYgKCFw bGFuZS0+aGFzX2ZiYykKLQkJCWNvbnRpbnVlOwotCi0JCWlmICghcGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkKLQkJCWNvbnRpbnVlOwotCi0JCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0 X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKLQotCQljcnRjX3N0YXRlLT5lbmFibGVfZmJj ID0gdHJ1ZTsKLQkJY3J0Y19jaG9zZW4gPSB0cnVlOwotCQlicmVhazsKKwkJcmV0ID0gaW50ZWxf Y3J0Y19mYmNfY2hlY2soc3RhdGUsIGNydGMpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsK IAl9CiAKLQlpZiAoIWNydGNfY2hvc2VuKQotCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAibm8gc3Vp dGFibGUgQ1JUQyBmb3IgRkJDIjsKLQotb3V0OgotCW11dGV4X3VubG9jaygmZmJjLT5sb2NrKTsK KwlyZXR1cm4gMDsKIH0KIAotLyoqCi0gKiBpbnRlbF9mYmNfZW5hYmxlOiB0cmllcyB0byBlbmFi bGUgRkJDIG9uIHRoZSBDUlRDCi0gKiBAY3J0YzogdGhlIENSVEMKLSAqIEBzdGF0ZTogY29ycmVz cG9uZGluZyAmZHJtX2NydGNfc3RhdGUgZm9yIEBjcnRjCi0gKgotICogVGhpcyBmdW5jdGlvbiBj aGVja3MgaWYgdGhlIGdpdmVuIENSVEMgd2FzIGNob3NlbiBmb3IgRkJDLCB0aGVuIGVuYWJsZXMg aXQgaWYKLSAqIHBvc3NpYmxlLiBOb3RpY2UgdGhhdCBpdCBkb2Vzbid0IGFjdGl2YXRlIEZCQy4g SXQgaXMgdmFsaWQgdG8gY2FsbAotICogaW50ZWxfZmJjX2VuYWJsZSBtdWx0aXBsZSB0aW1lcyBm b3IgdGhlIHNhbWUgcGlwZSB3aXRob3V0IGFuCi0gKiBpbnRlbF9mYmNfZGlzYWJsZSBpbiB0aGUg bWlkZGxlLCBhcyBsb25nIGFzIGl0IGlzIGRlYWN0aXZhdGVkLgotICovCiBzdGF0aWMgdm9pZCBp bnRlbF9mYmNfZW5hYmxlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJICAg ICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIHsKQEAgLTEyODcsMTUgKzEyNjUsMTQgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZmJjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSwKIAlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgZmJjLT5hY3RpdmUpOwogCiAJaW50ZWxf ZmJjX3VwZGF0ZV9zdGF0ZV9jYWNoZShjcnRjLCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Ci0K LQkvKiBGSVhNRSBjcnRjX3N0YXRlLT5lbmFibGVfZmJjIGxpZXMgOiggKi8KLQlpZiAoIWNhY2hl LT5wbGFuZS52aXNpYmxlKQorCWlmIChjYWNoZS0+bm9fZmJjX3JlYXNvbikgeworCQlmYmMtPm5v X2ZiY19yZWFzb24gPSBjYWNoZS0+bm9fZmJjX3JlYXNvbjsKIAkJZ290byBvdXQ7CisJfQogCiAJ aWYgKGludGVsX2ZiY19hbGxvY19jZmIoZGV2X3ByaXYsCiAJCQkJaW50ZWxfZmJjX2NhbGN1bGF0 ZV9jZmJfc2l6ZShkZXZfcHJpdiwgY2FjaGUpLAogCQkJCXBsYW5lX3N0YXRlLT5ody5mYi0+Zm9y bWF0LT5jcHBbMF0pKSB7Ci0JCWNhY2hlLT5wbGFuZS52aXNpYmxlID0gZmFsc2U7CiAJCWZiYy0+ bm9fZmJjX3JlYXNvbiA9ICJub3QgZW5vdWdoIHN0b2xlbiBtZW1vcnkiOwogCQlnb3RvIG91dDsK IAl9CkBAIC0xMzQ4LDcgKzEzMjUsNyBAQCB2b2lkIGludGVsX2ZiY191cGRhdGUoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUgPQogCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBj cnRjKTsKIAotCWlmIChjcnRjX3N0YXRlLT51cGRhdGVfcGlwZSAmJiAhY3J0Y19zdGF0ZS0+ZW5h YmxlX2ZiYykKKwlpZiAoY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUgJiYgY3J0Y19zdGF0ZS0+bm9f ZmJjX3JlYXNvbikKIAkJaW50ZWxfZmJjX2Rpc2FibGUoY3J0Yyk7CiAJZWxzZQogCQlpbnRlbF9m YmNfZW5hYmxlKHN0YXRlLCBjcnRjKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZmJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2ZiYy5oCmluZGV4IGI5N2Q5MDg3MzhlNi4uYzY3OGI4M2Y3NTA5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmgKQEAgLTE2LDggKzE2LDcgQEAgc3RydWN0IGludGVs X2NydGM7CiBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZTsKIAotdm9pZCBpbnRlbF9mYmNfY2hvb3NlX2NydGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAotCQkJICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpOworaW50 IGludGVsX2ZiY19hdG9taWNfY2hlY2soc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUp OwogYm9vbCBpbnRlbF9mYmNfaXNfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiBib29sIGludGVsX2ZiY19wcmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlLAogCQkJICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAppbmRleCA2OWU0M2JmOTFhMTUuLmNiZTg4MDQ3N2VlMSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCkBAIC0zODUsMjUgKzM4NSw4IEBAIHN0cnVjdCBpbnRlbF9mYmMgewogCSAqLwog CXN0cnVjdCBpbnRlbF9mYmNfc3RhdGVfY2FjaGUgewogCQlzdHJ1Y3QgewotCQkJdW5zaWduZWQg aW50IG1vZGVfZmxhZ3M7Ci0JCQl1MzIgaHN3X2Jkd19waXhlbF9yYXRlOwotCQl9IGNydGM7Ci0K LQkJc3RydWN0IHsKLQkJCXVuc2lnbmVkIGludCByb3RhdGlvbjsKIAkJCWludCBzcmNfdzsKIAkJ CWludCBzcmNfaDsKLQkJCWJvb2wgdmlzaWJsZTsKLQkJCS8qCi0JCQkgKiBEaXNwbGF5IHN1cmZh Y2UgYmFzZSBhZGRyZXNzIGFkanVzdGVtZW50IGZvcgotCQkJICogcGFnZWZsaXBzLiBOb3RlIHRo YXQgb24gZ2VuNCsgdGhpcyBvbmx5IGFkanVzdHMgdXAKLQkJCSAqIHRvIGEgdGlsZSwgb2Zmc2V0 cyB3aXRoaW4gYSB0aWxlIGFyZSBoYW5kbGVkIGluCi0JCQkgKiB0aGUgaHcgaXRzZWxmICh3aXRo IHRoZSBUSUxFT0ZGIHJlZ2lzdGVyKS4KLQkJCSAqLwotCQkJaW50IGFkanVzdGVkX3g7Ci0JCQlp bnQgYWRqdXN0ZWRfeTsKLQotCQkJdTE2IHBpeGVsX2JsZW5kX21vZGU7CiAJCX0gcGxhbmU7CiAK IAkJc3RydWN0IHsKQEAgLTQxNiw3ICszOTksNyBAQCBzdHJ1Y3QgaW50ZWxfZmJjIHsKIAkJdTE2 IGdlbjlfd2FfY2ZiX3N0cmlkZTsKIAkJdTE2IGludGVydmFsOwogCQlzOCBmZW5jZV9pZDsKLQkJ Ym9vbCBwc3IyX2FjdGl2ZTsKKwkJY29uc3QgY2hhciAqbm9fZmJjX3JlYXNvbjsKIAl9IHN0YXRl X2NhY2hlOwogCiAJLyoKQEAgLTQ0Myw5ICs0MjYsNyBAQCBzdHJ1Y3QgaW50ZWxfZmJjIHsKIAkJ dTE2IGdlbjlfd2FfY2ZiX3N0cmlkZTsKIAkJdTE2IGludGVydmFsOwogCQlzOCBmZW5jZV9pZDsK LQkJYm9vbCBwbGFuZV92aXNpYmxlOwogCX0gcGFyYW1zOwotCiAJY29uc3QgY2hhciAqbm9fZmJj X3JlYXNvbjsKIH07CiAKLS0gCjIuMjYuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==