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 56A75C4743F for ; Mon, 7 Jun 2021 18:24:23 +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 263AC60FE4 for ; Mon, 7 Jun 2021 18:24:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 263AC60FE4 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 B91E36E9C3; Mon, 7 Jun 2021 18:24:11 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 605B06E9BD; Mon, 7 Jun 2021 18:24:08 +0000 (UTC) IronPort-SDR: tymO6UScbBsS1VbY9grVJJrqV3DKKM5dE26lHvVyDGOKeMU1KQpyWnI4e0RmI1nsqxHV/CmDut XDGWDPTDs4uA== X-IronPort-AV: E=McAfee;i="6200,9189,10008"; a="185051962" X-IronPort-AV: E=Sophos;i="5.83,255,1616482800"; d="scan'208";a="185051962" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 11:24:08 -0700 IronPort-SDR: z5GQayK54sbVPYYJPFV0QiT8hnXi+Xzo7RuhqBfJwD5pI9DOgAqUciqMJJ+R8F5IeP4HuW9H5Z ucyl4dH/CEFA== X-IronPort-AV: E=Sophos;i="5.83,255,1616482800"; d="scan'208";a="476295059" Received: from iwilsonx-mobl1.ger.corp.intel.com (HELO mwauld-desk1.intel.com) ([10.252.28.48]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 11:24:07 -0700 From: Matthew Auld To: intel-gfx@lists.freedesktop.org Date: Mon, 7 Jun 2021 19:22:09 +0100 Message-Id: <20210607182210.99036-6-matthew.auld@intel.com> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210607182210.99036-1-matthew.auld@intel.com> References: <20210607182210.99036-1-matthew.auld@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 5/6] drm/i915/ttm: switch over to ttm_buddy_man 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: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" TW92ZSBiYWNrIHRvIHRoZSBidWRkeSBhbGxvY2F0b3IgZm9yIG1hbmFnaW5nIGRldmljZSBsb2Nh bCBtZW1vcnksIGFuZApyZXN0b3JlIHRoZSBsb3N0IG1vY2sgc2VsZnRlc3RzLiBLZWVwIGFyb3Vu ZCB0aGUgcmFuZ2UgbWFuYWdlciByZWxhdGVkCmJpdHMsIHNpbmNlIHdlIGxpa2VseSBuZWVkIHRo aXMgZm9yIG1hbmFnaW5nIHN0b2xlbiBhdCBzb21lIHBvaW50LiBGb3IKc3RvbGVuIHdlIGFsc28g ZG9uJ3QgbmVlZCB0byByZXNlcnZlIGFueXRoaW5nIHNvIG5vIG5lZWQgdG8gc3VwcG9ydCBhCmdl bmVyaWMgcmVzZXJ2ZSBpbnRlcmZhY2UuCgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEF1bGQgPG1h dHRoZXcuYXVsZEBpbnRlbC5jb20+CkNjOiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxz dHJvbUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX3R0bS5jICAgICAgIHwgIDI2ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVt b3J5X3JlZ2lvbi5jICAgIHwgIDU1ICstLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bWVtb3J5X3JlZ2lvbi5oICAgIHwgIDE3IC0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y ZWdpb25fdHRtLmMgICAgICAgfCAxMDAgKysrLS0tLS0tLS0KIC4uLi9kcm0vaTkxNS9zZWxmdGVz dHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jICB8IDE3MCArKysrKysrKysrKystLS0tLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jICB8ICAxNSArLQogNiBmaWxl cyBjaGFuZ2VkLCAxNjggaW5zZXJ0aW9ucygrKSwgMjE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYwppbmRleCAwYjBmY2U0NDVlOWIuLjNmNTYyNGYz NmFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3R0bS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV90dG0uYwpAQCAtMTg1LDEx ICsxODUsNyBAQCBzdGF0aWMgYm9vbCBpOTE1X3R0bV9ldmljdGlvbl92YWx1YWJsZShzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKmJvLAogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSBpOTE1X3R0bV90b19nZW0oYm8pOwogCiAJLyogV2lsbCBkbyBmb3Igbm93LiBPdXIgcGlubmVk IG9iamVjdHMgYXJlIHN0aWxsIG9uIFRUTSdzIExSVSBsaXN0cyAqLwotCWlmICghaTkxNV9nZW1f b2JqZWN0X2V2aWN0YWJsZShvYmopKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQkvKiBUaGlzIGlzbid0 IHZhbGlkIHdpdGggYSBidWRkeSBhbGxvY2F0b3IgKi8KLQlyZXR1cm4gdHRtX2JvX2V2aWN0aW9u X3ZhbHVhYmxlKGJvLCBwbGFjZSk7CisJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9ldmljdGFibGUo b2JqKTsKIH0KIAogc3RhdGljIHZvaWQgaTkxNV90dG1fZXZpY3RfZmxhZ3Moc3RydWN0IHR0bV9i dWZmZXJfb2JqZWN0ICpibywKQEAgLTMzMiwxMSArMzI4LDE1IEBAIGk5MTVfdHRtX3Jlc291cmNl X2dldF9zdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXN0cnVjdCB0dG1fYnVm ZmVyX29iamVjdCAqYm8gPSBpOTE1X2dlbV90b190dG0ob2JqKTsKIAlzdHJ1Y3QgdHRtX3Jlc291 cmNlX21hbmFnZXIgKm1hbiA9CiAJCXR0bV9tYW5hZ2VyX3R5cGUoYm8tPmJkZXYsIHJlcy0+bWVt X3R5cGUpOworCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptciA9IG9iai0+bW0ucmVnaW9u OwogCiAJaWYgKG1hbi0+dXNlX3R0KQogCQlyZXR1cm4gaTkxNV90dG1fdHRfZ2V0X3N0KGJvLT50 dG0pOwogCi0JcmV0dXJuIGludGVsX3JlZ2lvbl90dG1fbm9kZV90b19zdChvYmotPm1tLnJlZ2lv biwgcmVzLT5tbV9ub2RlKTsKKwlpZiAobXItPmlzX3JhbmdlX21hbmFnZXIpCisJCXJldHVybiBp bnRlbF9yZWdpb25fdHRtX25vZGVfdG9fc3QobXIsIHJlcyk7CisJZWxzZQorCQlyZXR1cm4gaTkx NV9zZ19mcm9tX2J1ZGR5X3Jlc291cmNlKHJlcywgbXItPnJlZ2lvbi5zdGFydCk7CiB9CiAKIHN0 YXRpYyBpbnQgaTkxNV90dG1fbW92ZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBib29s IGV2aWN0LApAQCAtNjYxLDIwICs2NjEsOCBAQCBpbnQgX19pOTE1X2dlbV90dG1fb2JqZWN0X2lu aXQoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKIAlzdGF0aWMgc3RydWN0IGxvY2tf Y2xhc3Nfa2V5IGxvY2tfY2xhc3M7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBt ZW0tPmk5MTU7CiAJZW51bSB0dG1fYm9fdHlwZSBib190eXBlOwotCXNpemVfdCBhbGlnbm1lbnQg PSAwOwogCWludCByZXQ7CiAKLQkvKiBBZGp1c3QgYWxpZ25tZW50IHRvIEdQVS0gYW5kIENQVSBo dWdlIHBhZ2Ugc2l6ZXMuICovCi0KLQlpZiAobWVtLT5pc19yYW5nZV9tYW5hZ2VyKSB7Ci0JCWlm IChzaXplID49IFNaXzFHKQotCQkJYWxpZ25tZW50ID0gU1pfMUcgPj4gUEFHRV9TSElGVDsKLQkJ ZWxzZSBpZiAoc2l6ZSA+PSBTWl8yTSkKLQkJCWFsaWdubWVudCA9IFNaXzJNID4+IFBBR0VfU0hJ RlQ7Ci0JCWVsc2UgaWYgKHNpemUgPj0gU1pfNjRLKQotCQkJYWxpZ25tZW50ID0gU1pfNjRLID4+ IFBBR0VfU0hJRlQ7Ci0JfQotCiAJZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0KCZpOTE1LT5k cm0sICZvYmotPmJhc2UsIHNpemUpOwogCWk5MTVfZ2VtX29iamVjdF9pbml0KG9iaiwgJmk5MTVf Z2VtX3R0bV9vYmpfb3BzLCAmbG9ja19jbGFzcywgZmxhZ3MpOwogCWk5MTVfZ2VtX29iamVjdF9p bml0X21lbW9yeV9yZWdpb24ob2JqLCBtZW0pOwpAQCAtNjk2LDcgKzY4NCw3IEBAIGludCBfX2k5 MTVfZ2VtX3R0bV9vYmplY3RfaW5pdChzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAog CSAqLwogCW9iai0+YmFzZS52bWFfbm9kZS5kcml2ZXJfcHJpdmF0ZSA9IGk5MTVfZ2VtX3RvX3R0 bShvYmopOwogCXJldCA9IHR0bV9ib19pbml0KCZpOTE1LT5iZGV2LCBpOTE1X2dlbV90b190dG0o b2JqKSwgc2l6ZSwKLQkJCSAgYm9fdHlwZSwgJmk5MTVfc3lzX3BsYWNlbWVudCwgYWxpZ25tZW50 LAorCQkJICBib190eXBlLCAmaTkxNV9zeXNfcGxhY2VtZW50LCBQQUdFX1NJWkUsCiAJCQkgIHRy dWUsIE5VTEwsIE5VTEwsIGk5MTVfdHRtX2JvX2Rlc3Ryb3kpOwogCiAJaWYgKCFyZXQpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKaW5kZXggMTJmYjU0MjNmZDVl Li5kZjU5Zjg4NGQzN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21l bW9yeV9yZWdpb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVn aW9uLmMKQEAgLTUsNiArNSw3IEBACiAKICNpbmNsdWRlICJpbnRlbF9tZW1vcnlfcmVnaW9uLmgi CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X3R0bV9idWRkeV9tYW5hZ2Vy LmgiCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCXUxNiBjbGFzczsKQEAgLTI4LDExICsyOSw2 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogCX0sCiB9OwogCi1zdHJ1Y3QgaW50ZWxfcmVnaW9u X3Jlc2VydmUgewotCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKLQlzdHJ1Y3QgdHRtX3Jlc291cmNl ICpyZXM7Ci19OwotCiBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqCiBpbnRlbF9tZW1vcnlf cmVnaW9uX2xvb2t1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCSAgIHUxNiBj bGFzcywgdTE2IGluc3RhbmNlKQpAQCAtNjMsMjcgKzU5LDYgQEAgaW50ZWxfbWVtb3J5X3JlZ2lv bl9ieV90eXBlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCXJldHVybiBOVUxMOwog fQogCi0vKioKLSAqIGludGVsX21lbW9yeV9yZWdpb25fdW5yZXNlcnZlIC0gVW5yZXNlcnZlIGFs bCBwcmV2aW91c2x5IHJlc2VydmVkCi0gKiByYW5nZXMKLSAqIEBtZW06IFRoZSByZWdpb24gY29u dGFpbmluZyB0aGUgcmVzZXJ2ZWQgcmFuZ2VzLgotICovCi12b2lkIGludGVsX21lbW9yeV9yZWdp b25fdW5yZXNlcnZlKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0pCi17Ci0Jc3RydWN0 IGludGVsX3JlZ2lvbl9yZXNlcnZlICpyZXNlcnZlLCAqbmV4dDsKLQotCWlmICghbWVtLT5wcml2 X29wcyB8fCAhbWVtLT5wcml2X29wcy0+ZnJlZSkKLQkJcmV0dXJuOwotCi0JbXV0ZXhfbG9jaygm bWVtLT5tbV9sb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmVzZXJ2ZSwgbmV4dCwg Jm1lbS0+cmVzZXJ2ZWQsIGxpbmspIHsKLQkJbGlzdF9kZWwoJnJlc2VydmUtPmxpbmspOwotCQlt ZW0tPnByaXZfb3BzLT5mcmVlKG1lbSwgcmVzZXJ2ZS0+cmVzKTsKLQkJa2ZyZWUocmVzZXJ2ZSk7 Ci0JfQotCW11dGV4X3VubG9jaygmbWVtLT5tbV9sb2NrKTsKLX0KLQogLyoqCiAgKiBpbnRlbF9t ZW1vcnlfcmVnaW9uX3Jlc2VydmUgLSBSZXNlcnZlIGEgbWVtb3J5IHJhbmdlCiAgKiBAbWVtOiBU aGUgcmVnaW9uIGZvciB3aGljaCB3ZSB3YW50IHRvIHJlc2VydmUgYSByYW5nZS4KQEAgLTk2LDI4 ICs3MSwxMSBAQCBpbnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9yZXNlcnZlKHN0cnVjdCBpbnRlbF9t ZW1vcnlfcmVnaW9uICptZW0sCiAJCQkJcmVzb3VyY2Vfc2l6ZV90IG9mZnNldCwKIAkJCQlyZXNv dXJjZV9zaXplX3Qgc2l6ZSkKIHsKLQlpbnQgcmV0OwotCXN0cnVjdCBpbnRlbF9yZWdpb25fcmVz ZXJ2ZSAqcmVzZXJ2ZTsKLQotCWlmICghbWVtLT5wcml2X29wcyB8fCAhbWVtLT5wcml2X29wcy0+ cmVzZXJ2ZSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlyZXNlcnZlID0ga3phbGxvYyhzaXplb2Yo KnJlc2VydmUpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXJlc2VydmUpCi0JCXJldHVybiAtRU5PTUVN OworCXN0cnVjdCB0dG1fcmVzb3VyY2VfbWFuYWdlciAqbWFuID0gbWVtLT5yZWdpb25fcHJpdmF0 ZTsKIAotCXJlc2VydmUtPnJlcyA9IG1lbS0+cHJpdl9vcHMtPnJlc2VydmUobWVtLCBvZmZzZXQs IHNpemUpOwotCWlmIChJU19FUlIocmVzZXJ2ZS0+cmVzKSkgewotCQlyZXQgPSBQVFJfRVJSKHJl c2VydmUtPnJlcyk7Ci0JCWtmcmVlKHJlc2VydmUpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCW11 dGV4X2xvY2soJm1lbS0+bW1fbG9jayk7Ci0JbGlzdF9hZGRfdGFpbCgmcmVzZXJ2ZS0+bGluaywg Jm1lbS0+cmVzZXJ2ZWQpOwotCW11dGV4X3VubG9jaygmbWVtLT5tbV9sb2NrKTsKKwlHRU1fQlVH X09OKG1lbS0+aXNfcmFuZ2VfbWFuYWdlcik7CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4gaTkxNV90 dG1fYnVkZHlfbWFuX3Jlc2VydmUobWFuLCBvZmZzZXQsIHNpemUpOwogfQogCiBzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqCkBAIC0xNDksOSArMTA3LDYgQEAgaW50ZWxfbWVtb3J5X3JlZ2lv bl9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAKIAltdXRleF9pbml0KCZt ZW0tPm9iamVjdHMubG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJm1lbS0+b2JqZWN0cy5saXN0KTsK LQlJTklUX0xJU1RfSEVBRCgmbWVtLT5yZXNlcnZlZCk7Ci0KLQltdXRleF9pbml0KCZtZW0tPm1t X2xvY2spOwogCiAJaWYgKG9wcy0+aW5pdCkgewogCQllcnIgPSBvcHMtPmluaXQobWVtKTsKQEAg LTE4MiwxMSArMTM3LDkgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9tZW1vcnlfcmVnaW9uX2Rlc3Ry b3koc3RydWN0IGtyZWYgKmtyZWYpCiAJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSA9 CiAJCWNvbnRhaW5lcl9vZihrcmVmLCB0eXBlb2YoKm1lbSksIGtyZWYpOwogCi0JaW50ZWxfbWVt b3J5X3JlZ2lvbl91bnJlc2VydmUobWVtKTsKIAlpZiAobWVtLT5vcHMtPnJlbGVhc2UpCiAJCW1l bS0+b3BzLT5yZWxlYXNlKG1lbSk7CiAKLQltdXRleF9kZXN0cm95KCZtZW0tPm1tX2xvY2spOwog CW11dGV4X2Rlc3Ryb3koJm1lbS0+b2JqZWN0cy5sb2NrKTsKIAlrZnJlZShtZW0pOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oCmluZGV4IGM3ZTYzNWQ2MmUx YS4uYjA0ZmIyMjcyNmQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9t ZW1vcnlfcmVnaW9uLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbWVtb3J5X3Jl Z2lvbi5oCkBAIC01OSwxOSArNTksMTAgQEAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb25fb3Bz IHsKIAkJCSAgIHVuc2lnbmVkIGludCBmbGFncyk7CiB9OwogCi1zdHJ1Y3QgaW50ZWxfbWVtb3J5 X3JlZ2lvbl9wcml2YXRlX29wcyB7Ci0Jc3RydWN0IHR0bV9yZXNvdXJjZSAqKCpyZXNlcnZlKShz dHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAotCQkJCQlyZXNvdXJjZV9zaXplX3Qgb2Zm c2V0LAotCQkJCQlyZXNvdXJjZV9zaXplX3Qgc2l6ZSk7Ci0Jdm9pZCAoKmZyZWUpKHN0cnVjdCBp bnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCi0JCSAgICAgc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVz KTsKLX07Ci0KIHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNTsKIAogCWNvbnN0IHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uX29wcyAq b3BzOwotCWNvbnN0IHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uX3ByaXZhdGVfb3BzICpwcml2 X29wczsKIAogCXN0cnVjdCBpb19tYXBwaW5nIGlvbWFwOwogCXN0cnVjdCByZXNvdXJjZSByZWdp b247CkBAIC03OSw4ICs3MCw2IEBAIHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uIHsKIAkvKiBG b3IgZmFrZSBMTUVNICovCiAJc3RydWN0IGRybV9tbV9ub2RlIGZha2VfbWFwcGFibGU7CiAKLQlz dHJ1Y3QgbXV0ZXggbW1fbG9jazsKLQogCXN0cnVjdCBrcmVmIGtyZWY7CiAKIAlyZXNvdXJjZV9z aXplX3QgaW9fc3RhcnQ7CkBAIC05NCw4ICs4Myw2IEBAIHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVn aW9uIHsKIAljaGFyIG5hbWVbMTZdOwogCWJvb2wgcHJpdmF0ZTsgLyogbm90IGZvciB1c2Vyc3Bh Y2UgKi8KIAotCXN0cnVjdCBsaXN0X2hlYWQgcmVzZXJ2ZWQ7Ci0KIAlkbWFfYWRkcl90IHJlbWFw X2FkZHI7CiAKIAlzdHJ1Y3QgewpAQCAtMTAzLDggKzkwLDYgQEAgc3RydWN0IGludGVsX21lbW9y eV9yZWdpb24gewogCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CiAJfSBvYmplY3RzOwogCi0Jc2l6 ZV90IGNodW5rX3NpemU7Ci0JdW5zaWduZWQgaW50IG1heF9vcmRlcjsKIAlib29sIGlzX3Jhbmdl X21hbmFnZXI7CiAKIAl2b2lkICpyZWdpb25fcHJpdmF0ZTsKQEAgLTEzOCw4ICsxMjMsNiBAQCBf X3ByaW50ZigyLCAzKSB2b2lkCiBpbnRlbF9tZW1vcnlfcmVnaW9uX3NldF9uYW1lKHN0cnVjdCBp bnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCiAJCQkgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsK IAotdm9pZCBpbnRlbF9tZW1vcnlfcmVnaW9uX3VucmVzZXJ2ZShzdHJ1Y3QgaW50ZWxfbWVtb3J5 X3JlZ2lvbiAqbWVtKTsKLQogaW50IGludGVsX21lbW9yeV9yZWdpb25fcmVzZXJ2ZShzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAogCQkJCXJlc291cmNlX3NpemVfdCBvZmZzZXQsCiAJ CQkJcmVzb3VyY2Vfc2l6ZV90IHNpemUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmVnaW9uX3R0bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9u X3R0bS5jCmluZGV4IDVhNjY0ZjZjYzkzZi4uMjNhZjk5NWY3YjY3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fdHRtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmVnaW9uX3R0bS5jCkBAIC04LDYgKzgsNyBAQAogCiAjaW5jbHVkZSAiaTkx NV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3NjYXR0ZXJsaXN0LmgiCisjaW5jbHVkZSAiaTkxNV90 dG1fYnVkZHlfbWFuYWdlci5oIgogCiAjaW5jbHVkZSAiaW50ZWxfcmVnaW9uX3R0bS5oIgogCkBA IC02Nyw3MiArNjgsMTcgQEAgaW50IGludGVsX3JlZ2lvbl90b190dG1fdHlwZShjb25zdCBzdHJ1 Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtKQogCXJldHVybiB0eXBlOwogfQogCi1zdGF0aWMg c3RydWN0IHR0bV9yZXNvdXJjZSAqCi1pbnRlbF9yZWdpb25fdHRtX25vZGVfcmVzZXJ2ZShzdHJ1 Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAotCQkJICAgICAgcmVzb3VyY2Vfc2l6ZV90IG9m ZnNldCwKLQkJCSAgICAgIHJlc291cmNlX3NpemVfdCBzaXplKQotewotCXN0cnVjdCB0dG1fcmVz b3VyY2VfbWFuYWdlciAqbWFuID0gbWVtLT5yZWdpb25fcHJpdmF0ZTsKLQlzdHJ1Y3QgdHRtX3Bs YWNlIHBsYWNlID0ge307Ci0Jc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0IG1vY2tfYm8gPSB7fTsK LQlzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXM7Ci0JaW50IHJldDsKLQotCS8qCi0JICogSGF2aW5n IHRvIHVzZSBhIG1vY2tfYm8gaXMgdW5mb3J0dW5hdGUgYnV0IHN0ZW1zIGZyb20gc29tZQotCSAq IGRyaXZlcnMgaGF2aW5nIHByaXZhdGUgbWFuYWdlcnMgdGhhdCBpbnNpc3QgdG8ga25vdyB3aGF0 IHRoZQotCSAqIGFsbG9jYXRlIG1lbW9yeSBpcyBpbnRlbmRlZCBmb3IsIHVzaW5nIGl0IHRvIHNl bmQgcHJpdmF0ZQotCSAqIGRhdGEgdG8gdGhlIG1hbmFnZXIuIEFsc28gcmVjZW50bHkgdGhlIGJv IGhhcyBiZWVuIHVzZWQgdG8gc2VuZAotCSAqIGFsaWdubWVudCBpbmZvIHRvIHRoZSBtYW5hZ2Vy LiBBc3N1bWUgdGhhdCBhcGFydCBmcm9tIHRoZSBsYXR0ZXIsCi0JICogbm9uZSBvZiB0aGUgbWFu YWdlcnMgd2UgdXNlIHdpbGwgZXZlciBhY2Nlc3MgdGhlIGJ1ZmZlciBvYmplY3QKLQkgKiBtZW1i ZXJzLCBob3Bpbmcgd2UgY2FuIHBhc3MgdGhlIGFsaWdubWVudCBpbmZvIGluIHRoZQotCSAqIHN0 cnVjdCB0dG1fcGxhY2UgaW4gdGhlIGZ1dHVyZS4KLQkgKi8KLQotCXBsYWNlLmZwZm4gPSBvZmZz ZXQgPj4gUEFHRV9TSElGVDsKLQlwbGFjZS5scGZuID0gcGxhY2UuZnBmbiArIChzaXplID4+IFBB R0VfU0hJRlQpOwotCW1vY2tfYm8uYmFzZS5zaXplID0gc2l6ZTsKLQlyZXQgPSBtYW4tPmZ1bmMt PmFsbG9jKG1hbiwgJm1vY2tfYm8sICZwbGFjZSwgJnJlcyk7Ci0JaWYgKHJldCA9PSAtRU5PU1BD KQotCQlyZXQgPSAtRU5YSU87Ci0KLQlyZXR1cm4gcmV0ID8gRVJSX1BUUihyZXQpIDogcmVzOwot fQotCi0vKioKLSAqIGludGVsX3JlZ2lvbl90dG1fbm9kZV9mcmVlIC0gRnJlZSBhIG5vZGUgYWxs b2NhdGVkIGZyb20gYSByZXNvdXJjZSBtYW5hZ2VyCi0gKiBAbWVtOiBUaGUgcmVnaW9uIHRoZSBu b2RlIHdhcyBhbGxvY2F0ZWQgZnJvbS4KLSAqIEBub2RlOiBUaGUgb3BhcXVlIG5vZGUgcmVwcmVz ZW50aW5nIGFuIGFsbG9jYXRpb24uCi0gKi8KLXZvaWQgaW50ZWxfcmVnaW9uX3R0bV9ub2RlX2Zy ZWUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSwKLQkJCQlzdHJ1Y3QgdHRtX3Jlc291 cmNlICpyZXMpCi17Ci0Jc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4gPSBtZW0tPnJl Z2lvbl9wcml2YXRlOwotCi0JbWFuLT5mdW5jLT5mcmVlKG1hbiwgcmVzKTsKLX0KLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uX3ByaXZhdGVfb3BzIHByaXZfb3BzID0g ewotCS5yZXNlcnZlID0gaW50ZWxfcmVnaW9uX3R0bV9ub2RlX3Jlc2VydmUsCi0JLmZyZWUgPSBp bnRlbF9yZWdpb25fdHRtX25vZGVfZnJlZSwKLX07Ci0KIGludCBpbnRlbF9yZWdpb25fdHRtX2lu aXQoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSkKIHsKIAlzdHJ1Y3QgdHRtX2Rldmlj ZSAqYmRldiA9ICZtZW0tPmk5MTUtPmJkZXY7CiAJaW50IG1lbV90eXBlID0gaW50ZWxfcmVnaW9u X3RvX3R0bV90eXBlKG1lbSk7CiAJaW50IHJldDsKIAotCXJldCA9IHR0bV9yYW5nZV9tYW5faW5p dChiZGV2LCBtZW1fdHlwZSwgZmFsc2UsCi0JCQkJIHJlc291cmNlX3NpemUoJm1lbS0+cmVnaW9u KSA+PiBQQUdFX1NISUZUKTsKKwlyZXQgPSBpOTE1X3R0bV9idWRkeV9tYW5faW5pdChiZGV2LCBt ZW1fdHlwZSwgZmFsc2UsCisJCQkJICAgICAgcmVzb3VyY2Vfc2l6ZSgmbWVtLT5yZWdpb24pLCBQ QUdFX1NJWkUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQltZW0tPmNodW5rX3NpemUg PSBQQUdFX1NJWkU7Ci0JbWVtLT5tYXhfb3JkZXIgPQotCQlnZXRfb3JkZXIocm91bmRkb3duX3Bv d19vZl90d28ocmVzb3VyY2Vfc2l6ZSgmbWVtLT5yZWdpb24pKSk7Ci0JbWVtLT5pc19yYW5nZV9t YW5hZ2VyID0gdHJ1ZTsKLQltZW0tPnByaXZfb3BzID0gJnByaXZfb3BzOwogCW1lbS0+cmVnaW9u X3ByaXZhdGUgPSB0dG1fbWFuYWdlcl90eXBlKGJkZXYsIG1lbV90eXBlKTsKIAogCXJldHVybiAw OwpAQCAtMTUwLDggKzk2LDggQEAgdm9pZCBpbnRlbF9yZWdpb25fdHRtX2Zpbmkoc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb24gKm1lbSkKIHsKIAlpbnQgcmV0OwogCi0JcmV0ID0gdHRtX3Jhbmdl X21hbl9maW5pKCZtZW0tPmk5MTUtPmJkZXYsCi0JCQkJIGludGVsX3JlZ2lvbl90b190dG1fdHlw ZShtZW0pKTsKKwlyZXQgPSBpOTE1X3R0bV9idWRkeV9tYW5fZmluaSgmbWVtLT5pOTE1LT5iZGV2 LAorCQkJCSAgICAgIGludGVsX3JlZ2lvbl90b190dG1fdHlwZShtZW0pKTsKIAlHRU1fV0FSTl9P TihyZXQpOwogCW1lbS0+cmVnaW9uX3ByaXZhdGUgPSBOVUxMOwogfQpAQCAtMjA2LDI1ICsxNTIs MzMgQEAgaW50ZWxfcmVnaW9uX3R0bV9ub2RlX2FsbG9jKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVn aW9uICptZW0sCiAJc3RydWN0IHR0bV9yZXNvdXJjZSAqcmVzOwogCWludCByZXQ7CiAKLQkvKgot CSAqIFdlIGlnbm9yZSB0aGUgZmxhZ3MgZm9yIG5vdyBzaW5jZSB3ZSdyZSB1c2luZyB0aGUgcmFu Z2UKLQkgKiBtYW5hZ2VyIGFuZCBjb250aWdvdXMgYW5kIG1pbiBwYWdlIHNpemUgd291bGQgYmUg ZnVsZmlsbGVkCi0JICogYnkgZGVmYXVsdCBpZiBzaXplIGlzIG1pbiBwYWdlIHNpemUgYWxpZ25l ZC4KLQkgKi8KIAltb2NrX2JvLmJhc2Uuc2l6ZSA9IHNpemU7Ci0KLQlpZiAobWVtLT5pc19yYW5n ZV9tYW5hZ2VyKSB7Ci0JCWlmIChzaXplID49IFNaXzFHKQotCQkJbW9ja19iby5wYWdlX2FsaWdu bWVudCA9IFNaXzFHID4+IFBBR0VfU0hJRlQ7Ci0JCWVsc2UgaWYgKHNpemUgPj0gU1pfMk0pCi0J CQltb2NrX2JvLnBhZ2VfYWxpZ25tZW50ID0gU1pfMk0gPj4gUEFHRV9TSElGVDsKLQkJZWxzZSBp ZiAoc2l6ZSA+PSBTWl82NEspCi0JCQltb2NrX2JvLnBhZ2VfYWxpZ25tZW50ID0gU1pfNjRLID4+ IFBBR0VfU0hJRlQ7Ci0JfQorCW1vY2tfYm8ucGFnZV9hbGlnbm1lbnQgPSBQQUdFX1NJWkU7CisJ cGxhY2UuZmxhZ3MgPSBmbGFnczsKIAogCXJldCA9IG1hbi0+ZnVuYy0+YWxsb2MobWFuLCAmbW9j a19ibywgJnBsYWNlLCAmcmVzKTsKIAlpZiAocmV0ID09IC1FTk9TUEMpCiAJCXJldCA9IC1FTlhJ TzsKIAlyZXR1cm4gcmV0ID8gRVJSX1BUUihyZXQpIDogcmVzOwogfQorCiAjZW5kaWYKKworLyoq CisgKiBpbnRlbF9yZWdpb25fdHRtX2luaXQgLSBJbml0aWFsaXplIGEgbWVtb3J5IHJlZ2lvbiBm b3IgVFRNLgorICogQG1lbTogVGhlIHJlZ2lvbiB0byBpbml0aWFsaXplLgorICoKKyAqIFRoaXMg ZnVuY3Rpb24gaW5pdGlhbGl6ZXMgYSBzdWl0YWJsZSBUVE0gcmVzb3VyY2UgbWFuYWdlciBmb3Ig dGhlCisgKiByZWdpb24sIGFuZCBpZiBpdCdzIGEgTE1FTSByZWdpb24gdHlwZSwgYXR0YWNoZXMg aXQgdG8gdGhlIFRUTQorICogZGV2aWNlLiBNT0NLIHJlZ2lvbnMgYXJlIE5PVCBhdHRhY2hlZCB0 byB0aGUgVFRNIGRldmljZSwgc2luY2Ugd2UgZG9uJ3QKKyAqIGhhdmUgb25lIGZvciB0aGUgbW9j ayBzZWxmdGVzdHMuCisgKgorICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9y IGNvZGUgb24gZmFpbHVyZS4KKyAqLwordm9pZCBpbnRlbF9yZWdpb25fdHRtX25vZGVfZnJlZShz dHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAorCQkJCXN0cnVjdCB0dG1fcmVzb3VyY2Ug KnJlcykKK3sKKwlzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKm1hbiA9IG1lbS0+cmVnaW9u X3ByaXZhdGU7CisKKwltYW4tPmZ1bmMtPmZyZWUobWFuLCByZXMpOworfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKaW5kZXgg Yzg1ZDUxNmI4NWNkLi5kYzIzZDY5OWVjYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYwpAQCAtMjAsNyArMjAsOSBAQAog I2luY2x1ZGUgImdlbS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZ3QvaW50 ZWxfZW5naW5lX3VzZXIuaCIKICNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgorI2luY2x1ZGUgImk5 MTVfYnVkZHkuaCIKICNpbmNsdWRlICJpOTE1X21lbWNweS5oIgorI2luY2x1ZGUgImk5MTVfdHRt X2J1ZGR5X21hbmFnZXIuaCIKICNpbmNsdWRlICJzZWxmdGVzdHMvaWd0X2ZsdXNoX3Rlc3QuaCIK ICNpbmNsdWRlICJzZWxmdGVzdHMvaTkxNV9yYW5kb20uaCIKIApAQCAtNTcsMTAgKzU5LDkgQEAg c3RhdGljIGludCBpZ3RfbW9ja19maWxsKHZvaWQgKmFyZykKIAlMSVNUX0hFQUQob2JqZWN0cyk7 CiAJaW50IGVyciA9IDA7CiAKLQlwYWdlX3NpemUgPSBtZW0tPmNodW5rX3NpemU7CisJcGFnZV9z aXplID0gUEFHRV9TSVpFOworCW1heF9wYWdlcyA9IGRpdjY0X3U2NCh0b3RhbCwgcGFnZV9zaXpl KTsKIAlyZW0gPSB0b3RhbDsKLXJldHJ5OgotCW1heF9wYWdlcyA9IGRpdjY0X3U2NChyZW0sIHBh Z2Vfc2l6ZSk7CiAKIAlmb3JfZWFjaF9wcmltZV9udW1iZXJfZnJvbShwYWdlX251bSwgMSwgbWF4 X3BhZ2VzKSB7CiAJCXJlc291cmNlX3NpemVfdCBzaXplID0gcGFnZV9udW0gKiBwYWdlX3NpemU7 CkBAIC04NiwxMSArODcsNiBAQCBzdGF0aWMgaW50IGlndF9tb2NrX2ZpbGwodm9pZCAqYXJnKQog CQllcnIgPSAwOwogCWlmIChlcnIgPT0gLUVOWElPKSB7CiAJCWlmIChwYWdlX251bSAqIHBhZ2Vf c2l6ZSA8PSByZW0pIHsKLQkJCWlmIChtZW0tPmlzX3JhbmdlX21hbmFnZXIgJiYgbWF4X3BhZ2Vz ID4gMSkgewotCQkJCW1heF9wYWdlcyA+Pj0gMTsKLQkJCQlnb3RvIHJldHJ5OwotCQkJfQotCiAJ CQlwcl9lcnIoIiVzIGZhaWxlZCwgc3BhY2Ugc3RpbGwgbGVmdCBpbiByZWdpb25cbiIsCiAJCQkg ICAgICAgX19mdW5jX18pOwogCQkJZXJyID0gLUVJTlZBTDsKQEAgLTE1Nyw2ICsxNTMsNyBAQCBz dGF0aWMgYm9vbCBpc19jb250aWd1b3VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop CiBzdGF0aWMgaW50IGlndF9tb2NrX3Jlc2VydmUodm9pZCAqYXJnKQogewogCXN0cnVjdCBpbnRl bF9tZW1vcnlfcmVnaW9uICptZW0gPSBhcmc7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBtZW0tPmk5MTU7CiAJcmVzb3VyY2Vfc2l6ZV90IGF2YWlsID0gcmVzb3VyY2Vfc2l6ZSgm bWVtLT5yZWdpb24pOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJY29uc3Qg dTMyIGNodW5rX3NpemUgPSBTWl8zMk07CkBAIC0xNjYsMTYgKzE2MywxOCBAQCBzdGF0aWMgaW50 IGlndF9tb2NrX3Jlc2VydmUodm9pZCAqYXJnKQogCUxJU1RfSEVBRChvYmplY3RzKTsKIAlpbnQg ZXJyID0gMDsKIAotCWlmICghbGlzdF9lbXB0eSgmbWVtLT5yZXNlcnZlZCkpIHsKLQkJcHJfZXJy KCIlcyByZWdpb24gcmVzZXJ2ZWQgbGlzdCBpcyBub3QgZW1wdHlcbiIsIF9fZnVuY19fKTsKLQkJ cmV0dXJuIC1FSU5WQUw7Ci0JfQotCiAJY291bnQgPSBhdmFpbCAvIGNodW5rX3NpemU7CiAJb3Jk ZXIgPSBpOTE1X3JhbmRvbV9vcmRlcihjb3VudCwgJnBybmcpOwogCWlmICghb3JkZXIpCiAJCXJl dHVybiAwOwogCisJbWVtID0gbW9ja19yZWdpb25fY3JlYXRlKGk5MTUsIDAsIFNaXzJHLCBJOTE1 X0dUVF9QQUdFX1NJWkVfNEssIDApOworCWlmIChJU19FUlIobWVtKSkgeworCQlwcl9lcnIoImZh aWxlZCB0byBjcmVhdGUgbWVtb3J5IHJlZ2lvblxuIik7CisJCWVyciA9IFBUUl9FUlIobWVtKTsK KwkJZ290byBvdXRfY2xvc2U7CisJfQorCiAJLyogUmVzZXJ2ZSBhIGJ1bmNoIG9mIHJhbmdlcyB3 aXRoaW4gdGhlIHJlZ2lvbiAqLwogCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAJCXU2 NCBzdGFydCA9IG9yZGVyW2ldICogY2h1bmtfc2l6ZTsKQEAgLTIwNSwxOCArMjA0LDEyIEBAIHN0 YXRpYyBpbnQgaWd0X21vY2tfcmVzZXJ2ZSh2b2lkICphcmcpCiAJZG8gewogCQl1MzIgc2l6ZSA9 IGk5MTVfcHJhbmRvbV91MzJfbWF4X3N0YXRlKGN1cl9hdmFpbCwgJnBybmcpOwogCi1yZXRyeToK IAkJc2l6ZSA9IG1heF90KHUzMiwgcm91bmRfdXAoc2l6ZSwgUEFHRV9TSVpFKSwgUEFHRV9TSVpF KTsKIAkJb2JqID0gaWd0X29iamVjdF9jcmVhdGUobWVtLCAmb2JqZWN0cywgc2l6ZSwgMCk7CiAJ CWlmIChJU19FUlIob2JqKSkgewotCQkJaWYgKFBUUl9FUlIob2JqKSA9PSAtRU5YSU8pIHsKLQkJ CQlpZiAobWVtLT5pc19yYW5nZV9tYW5hZ2VyICYmCi0JCQkJICAgIHNpemUgPiBtZW0tPmNodW5r X3NpemUpIHsKLQkJCQkJc2l6ZSA+Pj0gMTsKLQkJCQkJZ290byByZXRyeTsKLQkJCQl9CisJCQlp ZiAoUFRSX0VSUihvYmopID09IC1FTlhJTykKIAkJCQlicmVhazsKLQkJCX0KKwogCQkJZXJyID0g UFRSX0VSUihvYmopOwogCQkJZ290byBvdXRfY2xvc2U7CiAJCX0KQEAgLTIzMiw3ICsyMjUsNyBA QCBzdGF0aWMgaW50IGlndF9tb2NrX3Jlc2VydmUodm9pZCAqYXJnKQogb3V0X2Nsb3NlOgogCWtm cmVlKG9yZGVyKTsKIAljbG9zZV9vYmplY3RzKG1lbSwgJm9iamVjdHMpOwotCWludGVsX21lbW9y eV9yZWdpb25fdW5yZXNlcnZlKG1lbSk7CisJaW50ZWxfbWVtb3J5X3JlZ2lvbl9wdXQobWVtKTsK IAlyZXR1cm4gZXJyOwogfQogCkBAIC0yNTIsNyArMjQ1LDcgQEAgc3RhdGljIGludCBpZ3RfbW9j a19jb250aWd1b3VzKHZvaWQgKmFyZykKIAl0b3RhbCA9IHJlc291cmNlX3NpemUoJm1lbS0+cmVn aW9uKTsKIAogCS8qIE1pbiBzaXplICovCi0Jb2JqID0gaWd0X29iamVjdF9jcmVhdGUobWVtLCAm b2JqZWN0cywgbWVtLT5jaHVua19zaXplLAorCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwg Jm9iamVjdHMsIFBBR0VfU0laRSwKIAkJCQlJOTE1X0JPX0FMTE9DX0NPTlRJR1VPVVMpOwogCWlm IChJU19FUlIob2JqKSkKIAkJcmV0dXJuIFBUUl9FUlIob2JqKTsKQEAgLTMzMywxNyArMzI2LDE1 IEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfY29udGlndW91cyh2b2lkICphcmcpCiAJbWluID0gdGFy Z2V0OwogCXRhcmdldCA9IHRvdGFsID4+IDE7CiAKLQlpZiAoIW1lbS0+aXNfcmFuZ2VfbWFuYWdl cikgewotCQkvKiBNYWtlIHN1cmUgd2UgY2FuIHN0aWxsIGFsbG9jYXRlIGFsbCB0aGUgZnJhZ21l bnRlZCBzcGFjZSAqLwotCQlvYmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCB0 YXJnZXQsIDApOwotCQlpZiAoSVNfRVJSKG9iaikpIHsKLQkJCWVyciA9IFBUUl9FUlIob2JqKTsK LQkJCWdvdG8gZXJyX2Nsb3NlX29iamVjdHM7Ci0JCX0KLQotCQlpZ3Rfb2JqZWN0X3JlbGVhc2Uo b2JqKTsKKwkvKiBNYWtlIHN1cmUgd2UgY2FuIHN0aWxsIGFsbG9jYXRlIGFsbCB0aGUgZnJhZ21l bnRlZCBzcGFjZSAqLworCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwgJm9iamVjdHMsIHRh cmdldCwgMCk7CisJaWYgKElTX0VSUihvYmopKSB7CisJCWVyciA9IFBUUl9FUlIob2JqKTsKKwkJ Z290byBlcnJfY2xvc2Vfb2JqZWN0czsKIAl9CiAKKwlpZ3Rfb2JqZWN0X3JlbGVhc2Uob2JqKTsK KwogCS8qCiAJICogRXZlbiB0aG91Z2ggd2UgaGF2ZSBlbm91Z2ggZnJlZSBzcGFjZSwgd2UgZG9u J3QgaGF2ZSBhIGJpZyBlbm91Z2gKIAkgKiBjb250aWd1b3VzIGJsb2NrLiBNYWtlIHN1cmUgdGhh dCBob2xkcyB0cnVlLgpAQCAtMzYyLDcgKzM1Myw3IEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfY29u dGlndW91cyh2b2lkICphcmcpCiAJCX0KIAogCQl0YXJnZXQgPj49IDE7Ci0JfSB3aGlsZSAodGFy Z2V0ID49IG1lbS0+Y2h1bmtfc2l6ZSk7CisJfSB3aGlsZSAodGFyZ2V0ID49IFBBR0VfU0laRSk7 CiAKIGVycl9jbG9zZV9vYmplY3RzOgogCWxpc3Rfc3BsaWNlX3RhaWwoJmhvbGVzLCAmb2JqZWN0 cyk7CkBAIC0zNzQsNyArMzY1LDkgQEAgc3RhdGljIGludCBpZ3RfbW9ja19zcGxpbnRlcmVkX3Jl Z2lvbih2b2lkICphcmcpCiB7CiAJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSA9IGFy ZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG1lbS0+aTkxNTsKKwlzdHJ1Y3Qg aTkxNV90dG1fYnVkZHlfcmVzb3VyY2UgKnJlczsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOworCXN0cnVjdCBpOTE1X2J1ZGR5X21tICptbTsKIAl1bnNpZ25lZCBpbnQgZXhwZWN0 ZWRfb3JkZXI7CiAJTElTVF9IRUFEKG9iamVjdHMpOwogCXU2NCBzaXplOwpAQCAtMzgyLDcgKzM3 NSw3IEBAIHN0YXRpYyBpbnQgaWd0X21vY2tfc3BsaW50ZXJlZF9yZWdpb24odm9pZCAqYXJnKQog CiAJLyoKIAkgKiBTYW5pdHkgY2hlY2sgd2UgY2FuIHN0aWxsIGFsbG9jYXRlIGV2ZXJ5dGhpbmcg ZXZlbiBpZiB0aGUKLQkgKiBtYXhfb3JkZXIgIT0gbW0uc2l6ZS4gaS5lIG91ciBzdGFydGluZyBh ZGRyZXNzIHNwYWNlIHNpemUgaXMgbm90IGEKKwkgKiBtbS5tYXhfb3JkZXIgIT0gbW0uc2l6ZS4g aS5lIG91ciBzdGFydGluZyBhZGRyZXNzIHNwYWNlIHNpemUgaXMgbm90IGEKIAkgKiBwb3dlci1v Zi10d28uCiAJICovCiAKQEAgLTM5MSwyMCArMzg0LDI5IEBAIHN0YXRpYyBpbnQgaWd0X21vY2tf c3BsaW50ZXJlZF9yZWdpb24odm9pZCAqYXJnKQogCWlmIChJU19FUlIobWVtKSkKIAkJcmV0dXJu IFBUUl9FUlIobWVtKTsKIAotCWV4cGVjdGVkX29yZGVyID0gZ2V0X29yZGVyKHJvdW5kZG93bl9w b3dfb2ZfdHdvKHNpemUpKTsKLQlpZiAobWVtLT5tYXhfb3JkZXIgIT0gZXhwZWN0ZWRfb3JkZXIp IHsKLQkJcHJfZXJyKCIlcyBvcmRlciBtaXNtYXRjaCgldSAhPSAldSlcbiIsCi0JCSAgICAgICBf X2Z1bmNfXywgbWVtLT5tYXhfb3JkZXIsIGV4cGVjdGVkX29yZGVyKTsKLQkJZXJyID0gLUVJTlZB TDsKLQkJZ290byBvdXRfcHV0OwotCX0KLQogCW9iaiA9IGlndF9vYmplY3RfY3JlYXRlKG1lbSwg Jm9iamVjdHMsIHNpemUsIDApOwogCWlmIChJU19FUlIob2JqKSkgewogCQllcnIgPSBQVFJfRVJS KG9iaik7CiAJCWdvdG8gb3V0X2Nsb3NlOwogCX0KIAorCXJlcyA9IHRvX3R0bV9idWRkeV9yZXNv dXJjZShvYmotPm1tLnN0X21tX25vZGUpOworCW1tID0gcmVzLT5tbTsKKwlpZiAobW0tPnNpemUg IT0gc2l6ZSkgeworCQlwcl9lcnIoIiVzIHNpemUgbWlzbWF0Y2goJWxsdSAhPSAlbGx1KVxuIiwK KwkJICAgICAgIF9fZnVuY19fLCBtbS0+c2l6ZSwgc2l6ZSk7CisJCWVyciA9IC1FSU5WQUw7CisJ CWdvdG8gb3V0X3B1dDsKKwl9CisKKwlleHBlY3RlZF9vcmRlciA9IGdldF9vcmRlcihyb3VuZGRv d25fcG93X29mX3R3byhzaXplKSk7CisJaWYgKG1tLT5tYXhfb3JkZXIgIT0gZXhwZWN0ZWRfb3Jk ZXIpIHsKKwkJcHJfZXJyKCIlcyBvcmRlciBtaXNtYXRjaCgldSAhPSAldSlcbiIsCisJCSAgICAg ICBfX2Z1bmNfXywgbW0tPm1heF9vcmRlciwgZXhwZWN0ZWRfb3JkZXIpOworCQllcnIgPSAtRUlO VkFMOworCQlnb3RvIG91dF9wdXQ7CisJfQorCiAJY2xvc2Vfb2JqZWN0cyhtZW0sICZvYmplY3Rz KTsKIAogCS8qCkBAIC00MTUsMTUgKzQxNywxMiBAQCBzdGF0aWMgaW50IGlndF9tb2NrX3NwbGlu dGVyZWRfcmVnaW9uKHZvaWQgKmFyZykKIAkgKiBzdXJlIHRoYXQgZG9lcyBpbmRlZWQgaG9sZCB0 cnVlLgogCSAqLwogCi0JaWYgKCFtZW0tPmlzX3JhbmdlX21hbmFnZXIpIHsKLQkJb2JqID0gaWd0 X29iamVjdF9jcmVhdGUobWVtLCAmb2JqZWN0cywgc2l6ZSwKLQkJCQkJSTkxNV9CT19BTExPQ19D T05USUdVT1VTKTsKLQkJaWYgKCFJU19FUlIob2JqKSkgewotCQkJcHJfZXJyKCIlcyB0b28gbGFy Z2UgY29udGlndW91cyBhbGxvY2F0aW9uIHdhcyBub3QgcmVqZWN0ZWRcbiIsCi0JCQkgICAgICAg X19mdW5jX18pOwotCQkJZXJyID0gLUVJTlZBTDsKLQkJCWdvdG8gb3V0X2Nsb3NlOwotCQl9CisJ b2JqID0gaWd0X29iamVjdF9jcmVhdGUobWVtLCAmb2JqZWN0cywgc2l6ZSwgSTkxNV9CT19BTExP Q19DT05USUdVT1VTKTsKKwlpZiAoIUlTX0VSUihvYmopKSB7CisJCXByX2VycigiJXMgdG9vIGxh cmdlIGNvbnRpZ3VvdXMgYWxsb2NhdGlvbiB3YXMgbm90IHJlamVjdGVkXG4iLAorCQkgICAgICAg X19mdW5jX18pOworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIG91dF9jbG9zZTsKIAl9CiAKIAlv YmogPSBpZ3Rfb2JqZWN0X2NyZWF0ZShtZW0sICZvYmplY3RzLCByb3VuZGRvd25fcG93X29mX3R3 byhzaXplKSwKQEAgLTQ0Miw2ICs0NDEsNzQgQEAgc3RhdGljIGludCBpZ3RfbW9ja19zcGxpbnRl cmVkX3JlZ2lvbih2b2lkICphcmcpCiAJcmV0dXJuIGVycjsKIH0KIAorI2lmbmRlZiBTWl84Rwor I2RlZmluZSBTWl84RyBCSVRfVUxMKDMzKQorI2VuZGlmCisKK3N0YXRpYyBpbnQgaWd0X21vY2tf bWF4X3NlZ21lbnQodm9pZCAqYXJnKQoreworCWNvbnN0IHVuc2lnbmVkIGludCBtYXhfc2VnbWVu dCA9IGk5MTVfc2dfc2VnbWVudF9zaXplKCk7CisJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24g Km1lbSA9IGFyZzsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG1lbS0+aTkxNTsK KwlzdHJ1Y3QgaTkxNV90dG1fYnVkZHlfcmVzb3VyY2UgKnJlczsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBpOTE1X2J1ZGR5X2Jsb2NrICpibG9jazsKKwlzdHJ1 Y3QgaTkxNV9idWRkeV9tbSAqbW07CisJc3RydWN0IGxpc3RfaGVhZCAqYmxvY2tzOworCXN0cnVj dCBzY2F0dGVybGlzdCAqc2c7CisJTElTVF9IRUFEKG9iamVjdHMpOworCXU2NCBzaXplOworCWlu dCBlcnIgPSAwOworCisJLyoKKwkgKiBXaGlsZSB3ZSBtYXkgY3JlYXRlIHZlcnkgbGFyZ2UgY29u dGlndW91cyBibG9ja3MsIHdlIG1heSBuZWVkCisJICogdG8gYnJlYWsgdGhvc2UgZG93biBmb3Ig Y29uc3VtcHRpb24gZWxzZXdoZXJlLiBJbiBwYXJ0aWN1bGFyLAorCSAqIGRtYS1tYXBwaW5nIHdp dGggc2NhdHRlcmxpc3QgZWxlbWVudHMgaGF2ZSBhbiBpbXBsaWNpdCBsaW1pdCBvZgorCSAqIFVJ TlRfTUFYIG9uIGVhY2ggZWxlbWVudC4KKwkgKi8KKworCXNpemUgPSBTWl84RzsKKwltZW0gPSBt b2NrX3JlZ2lvbl9jcmVhdGUoaTkxNSwgMCwgc2l6ZSwgUEFHRV9TSVpFLCAwKTsKKwlpZiAoSVNf RVJSKG1lbSkpCisJCXJldHVybiBQVFJfRVJSKG1lbSk7CisKKwlvYmogPSBpZ3Rfb2JqZWN0X2Ny ZWF0ZShtZW0sICZvYmplY3RzLCBzaXplLCAwKTsKKwlpZiAoSVNfRVJSKG9iaikpIHsKKwkJZXJy ID0gUFRSX0VSUihvYmopOworCQlnb3RvIG91dF9wdXQ7CisJfQorCisJcmVzID0gdG9fdHRtX2J1 ZGR5X3Jlc291cmNlKG9iai0+bW0uc3RfbW1fbm9kZSk7CisJYmxvY2tzID0gJnJlcy0+YmxvY2tz OworCW1tID0gcmVzLT5tbTsKKwlzaXplID0gMDsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsb2Nr LCBibG9ja3MsIGxpbmspIHsKKwkJaWYgKGk5MTVfYnVkZHlfYmxvY2tfc2l6ZShtbSwgYmxvY2sp ID4gc2l6ZSkKKwkJCXNpemUgPSBpOTE1X2J1ZGR5X2Jsb2NrX3NpemUobW0sIGJsb2NrKTsKKwl9 CisJaWYgKHNpemUgPCBtYXhfc2VnbWVudCkgeworCQlwcl9lcnIoIiVzOiBGYWlsZWQgdG8gY3Jl YXRlIGEgaHVnZSBjb250aWd1b3VzIGJsb2NrIFs+ICV1XSwgbGFyZ2VzdCBibG9jayAlbGxkXG4i LAorCQkgICAgICAgX19mdW5jX18sIG1heF9zZWdtZW50LCBzaXplKTsKKwkJZXJyID0gLUVJTlZB TDsKKwkJZ290byBvdXRfY2xvc2U7CisJfQorCisJZm9yIChzZyA9IG9iai0+bW0ucGFnZXMtPnNn bDsgc2c7IHNnID0gc2dfbmV4dChzZykpIHsKKwkJaWYgKHNnLT5sZW5ndGggPiBtYXhfc2VnbWVu dCkgeworCQkJcHJfZXJyKCIlczogQ3JlYXRlZCBhbiBvdmVyc2l6ZWQgc2NhdHRlcmxpc3QgZW50 cnksICV1ID4gJXVcbiIsCisJCQkgICAgICAgX19mdW5jX18sIHNnLT5sZW5ndGgsIG1heF9zZWdt ZW50KTsKKwkJCWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIG91dF9jbG9zZTsKKwkJfQorCX0KKwor b3V0X2Nsb3NlOgorCWNsb3NlX29iamVjdHMobWVtLCAmb2JqZWN0cyk7CitvdXRfcHV0OgorCWlu dGVsX21lbW9yeV9yZWdpb25fcHV0KG1lbSk7CisJcmV0dXJuIGVycjsKK30KKwogc3RhdGljIGlu dCBpZ3RfZ3B1X3dyaXRlX2R3KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJCSAgICBzdHJ1 Y3QgaTkxNV92bWEgKnZtYSwKIAkJCSAgICB1MzIgZHdvcmQsCkBAIC0xMDQ2LDYgKzExMTMsNyBA QCBpbnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQogCQlTVUJURVNU KGlndF9tb2NrX2ZpbGwpLAogCQlTVUJURVNUKGlndF9tb2NrX2NvbnRpZ3VvdXMpLAogCQlTVUJU RVNUKGlndF9tb2NrX3NwbGludGVyZWRfcmVnaW9uKSwKKwkJU1VCVEVTVChpZ3RfbW9ja19tYXhf c2VnbWVudCksCiAJfTsKIAlzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtOwogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL21vY2tfcmVnaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19yZWdpb24uYwppbmRleCBlYWZjNWEwNDk3NWMuLmQzZTRlNjU3M2NiOSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVnaW9uLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVnaW9uLmMKQEAgLTMsNiArMyw3 IEBACiAgKiBDb3B5cmlnaHQgwqkgMjAxOS0yMDIxIEludGVsIENvcnBvcmF0aW9uCiAgKi8KIAor I2luY2x1ZGUgPGRybS90dG0vdHRtX3BsYWNlbWVudC5oPgogI2luY2x1ZGUgPGxpbnV4L3NjYXR0 ZXJsaXN0Lmg+CiAKICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9wbGFjZW1lbnQuaD4KQEAgLTI1LDEw ICsyNiwxMSBAQCBzdGF0aWMgaW50IG1vY2tfcmVnaW9uX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQogewogCXVuc2lnbmVkIGludCBmbGFnczsKIAlzdHJ1Y3Qgc2df dGFibGUgKnBhZ2VzOworCWludCBlcnI7CiAKIAlmbGFncyA9IEk5MTVfQUxMT0NfTUlOX1BBR0Vf U0laRTsKIAlpZiAob2JqLT5mbGFncyAmIEk5MTVfQk9fQUxMT0NfQ09OVElHVU9VUykKLQkJZmxh Z3MgfD0gSTkxNV9BTExPQ19DT05USUdVT1VTOworCQlmbGFncyB8PSBUVE1fUExfRkxBR19DT05U SUdVT1VTOwogCiAJb2JqLT5tbS5zdF9tbV9ub2RlID0gaW50ZWxfcmVnaW9uX3R0bV9ub2RlX2Fs bG9jKG9iai0+bW0ucmVnaW9uLAogCQkJCQkJCSBvYmotPmJhc2Uuc2l6ZSwKQEAgLTM2LDE1ICsz OCwyMCBAQCBzdGF0aWMgaW50IG1vY2tfcmVnaW9uX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQogCWlmIChJU19FUlIob2JqLT5tbS5zdF9tbV9ub2RlKSkKIAkJcmV0 dXJuIFBUUl9FUlIob2JqLT5tbS5zdF9tbV9ub2RlKTsKIAotCXBhZ2VzID0gaW50ZWxfcmVnaW9u X3R0bV9ub2RlX3RvX3N0KG9iai0+bW0ucmVnaW9uLCBvYmotPm1tLnN0X21tX25vZGUpOworCXBh Z2VzID0gaTkxNV9zZ19mcm9tX2J1ZGR5X3Jlc291cmNlKG9iai0+bW0uc3RfbW1fbm9kZSwKKwkJ CQkJICAgIG9iai0+bW0ucmVnaW9uLT5yZWdpb24uc3RhcnQpOwogCWlmIChJU19FUlIocGFnZXMp KSB7Ci0JCWludGVsX3JlZ2lvbl90dG1fbm9kZV9mcmVlKG9iai0+bW0ucmVnaW9uLCBvYmotPm1t LnN0X21tX25vZGUpOwotCQlyZXR1cm4gUFRSX0VSUihwYWdlcyk7CisJCWVyciA9IFBUUl9FUlIo cGFnZXMpOworCQlnb3RvIGVycl9mcmVlX21tX25vZGU7CiAJfQogCiAJX19pOTE1X2dlbV9vYmpl Y3Rfc2V0X3BhZ2VzKG9iaiwgcGFnZXMsIGk5MTVfc2dfZG1hX3NpemVzKHBhZ2VzLT5zZ2wpKTsK IAogCXJldHVybiAwOworCitlcnJfZnJlZV9tbV9ub2RlOgorCWludGVsX3JlZ2lvbl90dG1fbm9k ZV9mcmVlKG9iai0+bW0ucmVnaW9uLCBvYmotPm1tLnN0X21tX25vZGUpOworCXJldHVybiBlcnI7 CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgbW9ja19y ZWdpb25fb2JqX29wcyA9IHsKLS0gCjIuMjYuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==