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.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,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 BD75FC64E7C for ; Fri, 27 Nov 2020 12:12:11 +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 6B42B21D93 for ; Fri, 27 Nov 2020 12:12:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6B42B21D93 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A38516ECBB; Fri, 27 Nov 2020 12:10:22 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3CF816ECB8; Fri, 27 Nov 2020 12:10:18 +0000 (UTC) IronPort-SDR: 1I7rR3YKux2Ub0Ws8JX9PHNGFxgGBBO6DCRq59Mih7lX/eGENjaZUccJPsf2EHxOwtbJu49cIQ L+m9KnGtEumQ== X-IronPort-AV: E=McAfee;i="6000,8403,9817"; a="172540792" X-IronPort-AV: E=Sophos;i="5.78,374,1599548400"; d="scan'208";a="172540792" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2020 04:10:18 -0800 IronPort-SDR: a7nyVV87G3JJESQvGIyj3cIL+o6gHnmQYQ4UejxTbYdTa+FyCBAE+wWz4YlBzhdLXOeeYH0PkX Z/B28Y1s1VOg== X-IronPort-AV: E=Sophos;i="5.78,374,1599548400"; d="scan'208";a="548029318" Received: from mjgleeso-mobl.ger.corp.intel.com (HELO mwauld-desk1.ger.corp.intel.com) ([10.251.85.2]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2020 04:10:16 -0800 From: Matthew Auld To: intel-gfx@lists.freedesktop.org Subject: [RFC PATCH 092/162] drm/i915/uapi: introduce drm_i915_gem_create_ext Date: Fri, 27 Nov 2020 12:06:08 +0000 Message-Id: <20201127120718.454037-93-matthew.auld@intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201127120718.454037-1-matthew.auld@intel.com> References: <20201127120718.454037-1-matthew.auld@intel.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: CQ Tang , dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" U2FtZSBvbGQgZ2VtX2NyZWF0ZSBidXQgd2l0aCBub3cgd2l0aCBleHRlbnNpb25zIHN1cHBvcnQu IFRoaXMgaXMgbmVlZGVkCnRvIHN1cHBvcnQgdmFyaW91cyB1cGNvbWluZyB1c2VjYXNlcy4gRm9y IG5vdyB3ZSB1c2UgdGhlIGV4dGVuc2lvbnMKbWVjaGFuaXNtIHRvIHN1cHBvcnQgc2V0dGluZyBh biBpbW11dGFibGUtcHJpb3JpdHktbGlzdCBvZiBwb3RlbnRpYWwKcGxhY2VtZW50cywgYXQgY3Jl YXRpb24gdGltZS4KCklmIHdlIHdpc2ggdG8gc2V0IHRoZSBwbGFjZW1lbnRzL3JlZ2lvbnMgd2Ug Y2FuIHNpbXBseSBkbzoKCnN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X3BhcmFtIHJlZ2lvbl9w YXJhbSA9IHsg4oCmIH07IC8qIFVuY2hhbmdlZCAqLwpzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0 ZV9leHRfc2V0cGFyYW0gc2V0cGFyYW1fcmVnaW9uID0gewogICAgLmJhc2UgPSB7IC5uYW1lID0g STkxNV9HRU1fQ1JFQVRFX0VYVF9TRVRQQVJBTSB9LAogICAgLnBhcmFtID0gcmVnaW9uX3BhcmFt LAp9CgpzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZV9leHQgY3JlYXRlX2V4dCA9IHsKCS5zaXpl ID0gMTYgKiBQQUdFX1NJWkUsCgkuZXh0ZW5zaW9ucyA9ICh1aW50cHRyX3QpJnNldHBhcmFtX3Jl Z2lvbiwKfTsKaW50IGVyciA9IGlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fQ1JFQVRFX0VY VCwgJmNyZWF0ZV9leHQpOwppZiAoZXJyKSAuLi4KCklmIHdlIHVzZSB0aGUgbm9ybWFsIGdlbV9j cmVhdGUgb3IgZ2VtX2NyZWF0ZV9leHQgd2l0aG91dCB0aGUKZXh0ZW5zaW9ucy9wbGFjZW1lbnRz IHRoZW4gd2Ugc3RpbGwgZ2V0IHRoZSBvbGQgYmVoYXZpb3VyIHdpdGggb25seQpwbGFjaW5nIHRo ZSBvYmplY3QgaW4gc3lzdGVtIG1lbW9yeS4KCk9uZSBpbXBvcnRhbnQgY2hhbmdlIGhlcmUgaXMg dGhlIHJldHVybmVkIHNpemUgd2lsbCBub3cgYmUgcm91bmRlZCB1cCB0bwp0aGUgY29ycmVjdCBz aXplLCBkZXBlbmRpbmcgb24gdGhlIGxpc3Qgb2YgcGxhY2VtZW50cywgd2hlcmUgd2UgbWlnaHQK aGF2ZSBtaW5pbXVtIHBhZ2Utc2l6ZSByZXN0cmljdGlvbnMgb24gc29tZSBwbGF0Zm9ybXMgd2hl biBkZWFsaW5nIHdpdGgKZGV2aWNlIGxvY2FsLW1lbW9yeS4KCkFsc28sIHdlIHN0aWxsIGtlZXAg YXJvdW5kIHRoZSBpOTE1X2dlbV9vYmplY3Rfc2V0cGFyYW0gaW9jdGwsIGFsdGhvdWdoCnRoYXQg aXMgbm93IHJlc3RyaWN0ZWQgYnkgdGhlIHBsYWNlbWVudCBsaXN0KGkuZSB3ZSBhcmUgbm90IGFs bG93ZWQgdG8KYWRkIG5ldyBwbGFjZW1lbnRzKSwgYW5kIGxvbmdlciB0ZXJtIHRoYXQgd2lsbCBi ZSBnb2luZyBhd2F5IHdydCBzZXR0aW5nCnBsYWNlbWVudHMsIHNpbmNlIGl0IHdhcyBkZWVtZWQg dGhhdCB0aGUga2VybmVsIGRvZXNuJ3QgbmVlZCB0byBzdXBwb3J0CmEgZHluYW1pYyBsaXN0IG9m IHBsYWNlbWVudHMsIHdoaWNoIGlzIG5vdyBzb2xpZGlmaWVkIGJ5IHRoaXMgdWFwaQpjaGFuZ2Uu CgpUZXN0Y2FzZTogaWd0L2dlbV9jcmVhdGUvY3JlYXRlLWV4dC1wbGFjZW1lbnQtc2FuaXR5LWNo ZWNrClRlc3RjYXNlOiBpZ3QvZ2VtX2NyZWF0ZS9jcmVhdGUtZXh0LXBsYWNlbWVudC1lYWNoClRl c3RjYXNlOiBpZ3QvZ2VtX2NyZWF0ZS9jcmVhdGUtZXh0LXBsYWNlbWVudC1hbGwKU2lnbmVkLW9m Zi1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBDUSBUYW5nIDxjcS50YW5nQGludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFz LmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2NyZWF0ZS5jICAgIHwgMzk4ICsrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdC5jICAgIHwgICAyICsKIC4uLi9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oICB8ICAgOSArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fcmVnaW9uLmMgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAxMDMgKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX21lbW9yeV9yZWdpb24uYyAgICB8ICAyMCArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9tZW1vcnlfcmVnaW9uLmggICAgfCAgIDQgKwogaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oICAgICAgICAgICAgICAgICAgIHwgIDYwICsrKwogMTAgZmlsZXMgY2hhbmdlZCwgNTAw IGluc2VydGlvbnMoKyksIDEwMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY3JlYXRlLmMKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl CmluZGV4IGVjMzYxZDYxMjMwYi4uMzk1NTEzNGZlY2E3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpA QCAtMTM0LDYgKzEzNCw3IEBAIGdlbS15ICs9IFwKIAlnZW0vaTkxNV9nZW1fY2xmbHVzaC5vIFwK IAlnZW0vaTkxNV9nZW1fY2xpZW50X2JsdC5vIFwKIAlnZW0vaTkxNV9nZW1fY29udGV4dC5vIFwK KwlnZW0vaTkxNV9nZW1fY3JlYXRlLm8gXAogCWdlbS9pOTE1X2dlbV9kbWFidWYubyBcCiAJZ2Vt L2k5MTVfZ2VtX2RvbWFpbi5vIFwKIAlnZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5vIFwKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jcmVhdGUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jcmVhdGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjZmNmRkNGYxY2U3ZQotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jcmVhdGUuYwpAQCAtMCwwICsxLDM5OCBA QAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAy MDIwIEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9pb2N0 bHMuaCIKKyNpbmNsdWRlICJnZW0vaTkxNV9nZW1fbG1lbS5oIgorI2luY2x1ZGUgImdlbS9pOTE1 X2dlbV9vYmplY3RfYmx0LmgiCisjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5oIgorCisj aW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X3VzZXJfZXh0ZW5zaW9ucy5oIgor CitzdGF0aWMgdTMyIG1heF9wYWdlX3NpemUoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKipw bGFjZW1lbnRzLAorCQkJIGludCBuX3BsYWNlbWVudHMpCit7CisJdTMyIG1heF9wYWdlX3NpemUg PSAwOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IG5fcGxhY2VtZW50czsgKytpKSB7CisJ CW1heF9wYWdlX3NpemUgPSBtYXhfdCh1MzIsIG1heF9wYWdlX3NpemUsCisJCQkJICAgICAgcGxh Y2VtZW50c1tpXS0+bWluX3BhZ2Vfc2l6ZSk7CisJfQorCisJR0VNX0JVR19PTighbWF4X3BhZ2Vf c2l6ZSk7CisJcmV0dXJuIG1heF9wYWdlX3NpemU7Cit9CisKK3N0YXRpYyBpbnQKK2k5MTVfZ2Vt X2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCisJCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVn aW9uICoqcGxhY2VtZW50cywKKwkJaW50IG5fcGxhY2VtZW50cywKKwkJdTY0ICpzaXplX3AsCisJ CXUzMiAqaGFuZGxlX3ApCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwl1 MzIgaGFuZGxlOworCXU2NCBzaXplOworCWludCByZXQ7CisKKwlzaXplID0gcm91bmRfdXAoKnNp emVfcCwgbWF4X3BhZ2Vfc2l6ZShwbGFjZW1lbnRzLCBuX3BsYWNlbWVudHMpKTsKKwlpZiAoc2l6 ZSA9PSAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIEZvciBtb3N0IG9mIHRoZSBBQkkgKGUu Zy4gbW1hcCkgd2UgdGhpbmsgaW4gc3lzdGVtIHBhZ2VzICovCisJR0VNX0JVR19PTighSVNfQUxJ R05FRChzaXplLCBQQUdFX1NJWkUpKTsKKworCS8qIEFsbG9jYXRlIHRoZSBuZXcgb2JqZWN0ICov CisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9yZWdpb24ocGxhY2VtZW50c1swXSwgc2l6 ZSwgMCk7CisJaWYgKElTX0VSUihvYmopKQorCQlyZXR1cm4gUFRSX0VSUihvYmopOworCisJaWYg KGk5MTVfZ2VtX29iamVjdF9pc19sbWVtKG9iaikpIHsKKwkJc3RydWN0IGludGVsX2d0ICpndCA9 IG9iai0+bW0ucmVnaW9uLT5ndDsKKwkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gZ3QtPmVu Z2luZVtCQ1MwXS0+YmxpdHRlcl9jb250ZXh0OworCisJCS8qCisJCSAqIFhYWDogV2UgcmVhbGx5 IHdhbnQgdG8gbW92ZSB0aGlzIHRvIGdldF9wYWdlcygpLCBidXQgd2UKKwkJICogcmVxdWlyZSBn cmFiYmluZyB0aGUgQktMIGZvciB0aGUgYmxpdHRpbmcgb3BlcmF0aW9uIHdoaWNoIGlzCisJCSAq IGFubm95aW5nLiBJbiB0aGUgcGlwZWxpbmUgaXMgc3VwcG9ydCBmb3IgYXN5bmMgZ2V0X3BhZ2Vz KCkKKwkJICogd2hpY2ggc2hvdWxkIGZpdCBuaWNlbHkgZm9yIHRoaXMuIEFsc28gbm90ZSB0aGF0 IHRoZSBhY3R1YWwKKwkJICogY2xlYXIgc2hvdWxkIGJlIGRvbmUgYXN5bmMod2UgY3VycmVudGx5 IGRvIGFuIG9iamVjdF93YWl0CisJCSAqIHdoaWNoIGlzIHB1cmUgZ2FyYmFnZSksIHdlIGp1c3Qg bmVlZCB0byB0YWtlIGNhcmUgaWYKKwkJICogdXNlcnNwYWNlIG9wdHMgb2YgaW1wbGljaXQgc3lu YyBmb3IgdGhlIGV4ZWNidWYsIHRvIGF2b2lkIGFueQorCQkgKiBwb3RlbnRpYWwgaW5mbyBsZWFr LgorCQkgKi8KKworcmV0cnk6CisJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9maWxsX2JsdChvYmos IGNlLCAwKTsKKwkJaWYgKHJldCA9PSAtRUlOVFIpCisJCQlnb3RvIHJldHJ5OworCQlpZiAocmV0 KSB7CisJCQkvKgorCQkJICogWFhYOiBQb3N0IHRoZSBlcnJvciB0byB3aGVyZSB3ZSB3b3VsZCBu b3JtYWxseSBnYXRoZXIKKwkJCSAqIGFuZCBjbGVhciB0aGUgcGFnZXMuIFRoaXMgYmV0dGVyIHJl ZmxlY3RzIHRoZSBmaW5hbAorCQkJICogdWFwaSBiZWhhdmlvdXIsIG9uY2Ugd2UgYXJlIGF0IHRo ZSBwb2ludCB3aGVyZSB3ZSBjYW4KKwkJCSAqIG1vdmUgdGhlIGNsZWFyIHdvcmtlciB0byBnZXRf cGFnZXMoKS4KKwkJCSAqLworCQkJaTkxNV9nZW1fb2JqZWN0X3VuYmluZChvYmosIEk5MTVfR0VN X09CSkVDVF9VTkJJTkRfQUNUSVZFKTsKKwkJCWk5MTVfZ2VtX29iamVjdF9sb2NrKG9iaiwgTlVM TCk7CisJCQlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsKKwkJCWk5MTVfZ2VtX29i amVjdF91bmxvY2sob2JqKTsKKwkJCW9iai0+bW0uZ2VtX2NyZWF0ZV9wb3N0ZWRfZXJyID0gcmV0 OworCQkJZ290byBoYW5kbGVfY3JlYXRlOworCQl9CisKKwkJLyoKKwkJICogWFhYOiBPY2Nhc2lv bmFsbHkgaTkxNV9nZW1fb2JqZWN0X3dhaXQoKSBjYWxsZWQgaW5zaWRlCisJCSAqIGk5MTVfZ2Vt X29iamVjdF9zZXRfdG9fY3B1X2RvbWFpbigpIGdldCBpbnRlcnJ1cHRlZAorCQkgKiBhbmQgcmV0 dXJuIC1FUkVTVEFSVFNZUywgdGhpcyB3aWxsIGNhdXNlIGdvIGNsZWFyaW5nCisJCSAqIGNvZGUg YmVsb3cgYW5kIGFsc28gc2V0IHRoZSBnZW1fY3JlYXRlX3Bvc3RlZF9lcnIuCisJCSAqIG1vcmVv dmVyLCB0aGUgY2xlYXJpbmcgc29tZXRpbWVzIGZhaWxzIGJlY2F1c2UgdGhlCisJCSAqIG9iamVj dCBpcyBzdGlsbCBwaW5uZWQgYnkgdGhlIGJsaXR0ZXIgY2xlYXJpbmcgY29kZS4KKwkJICogdGhp cyBtYWtlcyB1cyB0byBoYXZlIGFuIG9iamVjdCB3aXRoIG9yIHdpdGhvdXQgbG1lbQorCQkgKiBw YWdlcywgYW5kIHdpdGggZ2VtX2NyZWF0ZV9wb3N0ZWRfZXJyID0gLUVSRVNUQVJUU1lTLgorCQkg KiBVbmRlciBsbWVtIHByZXNzdXJlLCBpZiB0aGUgb2JqZWN0IGhhcyBwYWdlcywgd2UgbWlnaHQK KwkJICogc3dhcCBvdXQgdGhpcyBvYmplY3QgdG8gc21lbS4gTmV4dCB3aGVuIHVzZXIgc3BhY2UK KwkJICogY29kZSB1c2UgdGhpcyBvYmplY3QgaW4gZ2VtX2V4ZWNidWYoKSBjYWxsLCBnZXRfcGFn ZXMoKQorCQkgKiBvcGVyYXRpb24gd2lsbCByZXR1cm4gLUVSRVNUQVJUU1lTIGVycm9yIGNvZGUs IHdoaWNoCisJCSAqIGNhdXNlcyB1c2VyIHNwYWNlIGNvZGUgdG8gZmFpbC4KKwkJICoKKwkJICog VG8gYXZvaWQgdGhpcyBwcm9ibGVtLCB3ZSBhZGQgYSBub24taW50ZXJydXB0aWJsZQorCQkgKiB3 YWl0IGJlZm9yZSBzZXR0aW5nIG9iamVjdCB0byBjcHUgZG9tYWluLgorCQkgKi8KKwkJaTkxNV9n ZW1fb2JqZWN0X2xvY2sob2JqLCBOVUxMKTsKKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3dhaXQo b2JqLCAwLCBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisJCWlmICghcmV0KQorCQkJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgZmFsc2UpOworCQlpZiAocmV0KSB7 CisJCQlpOTE1X2dlbV9vYmplY3RfdW5iaW5kKG9iaiwgSTkxNV9HRU1fT0JKRUNUX1VOQklORF9B Q1RJVkUpOworCQkJX19pOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7CisJCQlvYmotPm1t LmdlbV9jcmVhdGVfcG9zdGVkX2VyciA9IHJldDsKKwkJCWk5MTVfZ2VtX29iamVjdF91bmxvY2so b2JqKTsKKwkJCWdvdG8gaGFuZGxlX2NyZWF0ZTsKKwkJfQorCQlpOTE1X2dlbV9vYmplY3RfdW5s b2NrKG9iaik7CisJfQorCitoYW5kbGVfY3JlYXRlOgorCXJldCA9IGRybV9nZW1faGFuZGxlX2Ny ZWF0ZShmaWxlLCAmb2JqLT5iYXNlLCAmaGFuZGxlKTsKKwkvKiBkcm9wIHJlZmVyZW5jZSBmcm9t IGFsbG9jYXRlIC0gaGFuZGxlIGhvbGRzIGl0IG5vdyAqLworCWk5MTVfZ2VtX29iamVjdF9wdXQo b2JqKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJb2JqLT5tbS5wbGFjZW1lbnRzID0g cGxhY2VtZW50czsKKwlvYmotPm1tLm5fcGxhY2VtZW50cyA9IG5fcGxhY2VtZW50czsKKworCSpo YW5kbGVfcCA9IGhhbmRsZTsKKwkqc2l6ZV9wID0gc2l6ZTsKKwlyZXR1cm4gMDsKK30KKworaW50 CitpOTE1X2dlbV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCisJCSAgICAgc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKKwkJICAgICBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIg KmFyZ3MpCit7CisJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKipwbGFjZW1lbnRzOworCWVu dW0gaW50ZWxfbWVtb3J5X3R5cGUgbWVtX3R5cGU7CisJaW50IGNwcCA9IERJVl9ST1VORF9VUChh cmdzLT5icHAsIDgpOworCXUzMiBmb3JtYXQ7CisJaW50IHJldDsKKworCXN3aXRjaCAoY3BwKSB7 CisJY2FzZSAxOgorCQlmb3JtYXQgPSBEUk1fRk9STUFUX0M4OworCQlicmVhazsKKwljYXNlIDI6 CisJCWZvcm1hdCA9IERSTV9GT1JNQVRfUkdCNTY1OworCQlicmVhazsKKwljYXNlIDQ6CisJCWZv cm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4ODg7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVy biAtRUlOVkFMOworCX0KKworCS8qIGhhdmUgdG8gd29yayBvdXQgc2l6ZS9waXRjaCBhbmQgcmV0 dXJuIHRoZW0gKi8KKwlhcmdzLT5waXRjaCA9IEFMSUdOKGFyZ3MtPndpZHRoICogY3BwLCA2NCk7 CisKKwkvKiBhbGlnbiBzdHJpZGUgdG8gcGFnZSBzaXplIHNvIHRoYXQgd2UgY2FuIHJlbWFwICov CisJaWYgKGFyZ3MtPnBpdGNoID4gaW50ZWxfcGxhbmVfZmJfbWF4X3N0cmlkZSh0b19pOTE1KGRl diksIGZvcm1hdCwKKwkJCQkJCSAgICBEUk1fRk9STUFUX01PRF9MSU5FQVIpKQorCQlhcmdzLT5w aXRjaCA9IEFMSUdOKGFyZ3MtPnBpdGNoLCA0MDk2KTsKKworCWlmIChhcmdzLT5waXRjaCA8IGFy Z3MtPndpZHRoKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWFyZ3MtPnNpemUgPSBtdWxfdTMyX3Uz MihhcmdzLT5waXRjaCwgYXJncy0+aGVpZ2h0KTsKKworCW1lbV90eXBlID0gSU5URUxfTUVNT1JZ X1NZU1RFTTsKKwlpZiAoSEFTX0xNRU0odG9faTkxNShkZXYpKSkKKwkJbWVtX3R5cGUgPSBJTlRF TF9NRU1PUllfTE9DQUw7CisKKwlwbGFjZW1lbnRzID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IGlu dGVsX21lbW9yeV9yZWdpb24gKiksIEdGUF9LRVJORUwpOworCWlmICghcGxhY2VtZW50cykKKwkJ cmV0dXJuIC1FTk9NRU07CisKKwlwbGFjZW1lbnRzWzBdID0gaW50ZWxfbWVtb3J5X3JlZ2lvbl9i eV90eXBlKHRvX2k5MTUoZGV2KSwgbWVtX3R5cGUpOworCisJcmV0ID0gaTkxNV9nZW1fY3JlYXRl KGZpbGUsCisJCQkgICAgICBwbGFjZW1lbnRzLCAxLAorCQkJICAgICAgJmFyZ3MtPnNpemUsICZh cmdzLT5oYW5kbGUpOworCWlmIChyZXQpCisJCWtmcmVlKHBsYWNlbWVudHMpOworCisJcmV0dXJu IHJldDsKK30KKworc3RydWN0IGNyZWF0ZV9leHQgeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1OworCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICoqcGxhY2VtZW50czsKKwlpbnQg bl9wbGFjZW1lbnRzOworfTsKKworc3RhdGljIHZvaWQgcmVwcl9wbGFjZW1lbnRzKGNoYXIgKmJ1 Ziwgc2l6ZV90IHNpemUsCisJCQkgICAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKipwbGFj ZW1lbnRzLAorCQkJICAgIGludCBuX3BsYWNlbWVudHMpCit7CisJaW50IGk7CisKKwlidWZbMF0g PSAnXDAnOworCisJZm9yIChpID0gMDsgaSA8IG5fcGxhY2VtZW50czsgaSsrKSB7CisJCXN0cnVj dCBpbnRlbF9tZW1vcnlfcmVnaW9uICptciA9IHBsYWNlbWVudHNbaV07CisJCWludCByOworCisJ CXIgPSBzbnByaW50ZihidWYsIHNpemUsICJcbiAgJXMgLT4geyBjbGFzczogJWQsIGluc3Q6ICVk IH0iLAorCQkJICAgICBtci0+bmFtZSwgbXItPnR5cGUsIG1yLT5pbnN0YW5jZSk7CisJCWlmIChy ID49IHNpemUpCisJCQlyZXR1cm47CisKKwkJYnVmICs9IHI7CisJCXNpemUgLT0gcjsKKwl9Cit9 CisKK3N0YXRpYyBpbnQgc2V0X3BsYWNlbWVudHMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rf cGFyYW0gKmFyZ3MsCisJCQkgIHN0cnVjdCBjcmVhdGVfZXh0ICpleHRfZGF0YSkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGV4dF9kYXRhLT5pOTE1OworCXN0cnVjdCBkcm1f aTkxNV9nZW1fbWVtb3J5X2NsYXNzX2luc3RhbmNlIF9fdXNlciAqdXJlZ2lvbnMgPQorCQl1NjRf dG9fdXNlcl9wdHIoYXJncy0+ZGF0YSk7CisJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKipw bGFjZW1lbnRzOworCXUzMiBtYXNrOworCWludCBpLCByZXQgPSAwOworCisJaWYgKGFyZ3MtPmhh bmRsZSkgeworCQlEUk1fREVCVUcoIkhhbmRsZSBzaG91bGQgYmUgemVyb1xuIik7CisJCXJldCA9 IC1FSU5WQUw7CisJfQorCisJaWYgKCFhcmdzLT5zaXplKSB7CisJCURSTV9ERUJVRygiU2l6ZSBp cyB6ZXJvXG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwl9CisKKwlpZiAoYXJncy0+c2l6ZSA+IEFS UkFZX1NJWkUoaTkxNS0+bW0ucmVnaW9ucykpIHsKKwkJRFJNX0RFQlVHKCJUb28gbWFueSBwbGFj ZW1lbnRzXG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwl9CisKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJcGxhY2VtZW50cyA9IGttYWxsb2NfYXJyYXkoYXJncy0+c2l6ZSwKKwkJCQkgICBz aXplb2Yoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKiksCisJCQkJICAgR0ZQX0tFUk5FTCk7 CisJaWYgKCFwbGFjZW1lbnRzKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1hc2sgPSAwOworCWZv ciAoaSA9IDA7IGkgPCBhcmdzLT5zaXplOyBpKyspIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9t ZW1vcnlfY2xhc3NfaW5zdGFuY2UgcmVnaW9uOworCQlzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biAqbXI7CisKKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZyZWdpb24sIHVyZWdpb25zLCBzaXplb2Yo cmVnaW9uKSkpIHsKKwkJCXJldCA9IC1FRkFVTFQ7CisJCQlnb3RvIG91dF9mcmVlOworCQl9CisK KwkJbXIgPSBpbnRlbF9tZW1vcnlfcmVnaW9uX2xvb2t1cChpOTE1LAorCQkJCQkJcmVnaW9uLm1l bW9yeV9jbGFzcywKKwkJCQkJCXJlZ2lvbi5tZW1vcnlfaW5zdGFuY2UpOworCQlpZiAoIW1yKSB7 CisJCQlEUk1fREVCVUcoIkRldmljZSBpcyBtaXNzaW5nIHJlZ2lvbiB7IGNsYXNzOiAlZCwgaW5z dDogJWQgfSBhdCBpbmRleCA9ICVkXG4iLAorCQkJCSAgcmVnaW9uLm1lbW9yeV9jbGFzcywgcmVn aW9uLm1lbW9yeV9pbnN0YW5jZSwgaSk7CisJCQlyZXQgPSAtRUlOVkFMOworCQkJZ290byBvdXRf ZHVtcDsKKwkJfQorCisJCWlmIChtYXNrICYgQklUKG1yLT5pZCkpIHsKKwkJCURSTV9ERUJVRygi Rm91bmQgZHVwbGljYXRlIHBsYWNlbWVudCAlcyAtPiB7IGNsYXNzOiAlZCwgaW5zdDogJWQgfSBh dCBpbmRleCA9ICVkXG4iLAorCQkJCSAgbXItPm5hbWUsIHJlZ2lvbi5tZW1vcnlfY2xhc3MsCisJ CQkJICByZWdpb24ubWVtb3J5X2luc3RhbmNlLCBpKTsKKwkJCXJldCA9IC1FSU5WQUw7CisJCQln b3RvIG91dF9kdW1wOworCQl9CisKKwkJcGxhY2VtZW50c1tpXSA9IG1yOworCQltYXNrIHw9IEJJ VChtci0+aWQpOworCisJCSsrdXJlZ2lvbnM7CisJfQorCisJaWYgKGV4dF9kYXRhLT5wbGFjZW1l bnRzKSB7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0X2R1bXA7CisJfQorCisJZXh0X2Rh dGEtPnBsYWNlbWVudHMgPSBwbGFjZW1lbnRzOworCWV4dF9kYXRhLT5uX3BsYWNlbWVudHMgPSBh cmdzLT5zaXplOworCisJcmV0dXJuIDA7CisKK291dF9kdW1wOgorCWlmICgxKSB7CisJCWNoYXIg YnVmWzI1Nl07CisKKwkJaWYgKGV4dF9kYXRhLT5wbGFjZW1lbnRzKSB7CisJCQlyZXByX3BsYWNl bWVudHMoYnVmLAorCQkJCQlzaXplb2YoYnVmKSwKKwkJCQkJZXh0X2RhdGEtPnBsYWNlbWVudHMs CisJCQkJCWV4dF9kYXRhLT5uX3BsYWNlbWVudHMpOworCQkJRFJNX0RFQlVHKCJQbGFjZW1lbnRz IHdlcmUgYWxyZWFkeSBzZXQgaW4gcHJldmlvdXMgU0VUUEFSQU0uIEV4aXN0aW5nIHBsYWNlbWVu dHM6ICVzXG4iLAorCQkJCSAgYnVmKTsKKwkJfQorCisJCXJlcHJfcGxhY2VtZW50cyhidWYsIHNp emVvZihidWYpLCBwbGFjZW1lbnRzLCBpKTsKKwkJRFJNX0RFQlVHKCJOZXcgcGxhY2VtZW50cyhz byBmYXIgdmFsaWRhdGVkKTogJXNcbiIsIGJ1Zik7CisJfQorCitvdXRfZnJlZToKKwlrZnJlZShw bGFjZW1lbnRzKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IF9fY3JlYXRlX3NldHBh cmFtKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X3BhcmFtICphcmdzLAorCQkJICAgICBzdHJ1 Y3QgY3JlYXRlX2V4dCAqZXh0X2RhdGEpCit7CisJaWYgKCEoYXJncy0+cGFyYW0gJiBJOTE1X09C SkVDVF9QQVJBTSkpIHsKKwkJRFJNX0RFQlVHKCJNaXNzaW5nIEk5MTVfT0JKRUNUX1BBUkFNIG5h bWVzcGFjZVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXN3aXRjaCAobG93ZXJfMzJf Yml0cyhhcmdzLT5wYXJhbSkpIHsKKwljYXNlIEk5MTVfUEFSQU1fTUVNT1JZX1JFR0lPTlM6CisJ CXJldHVybiBzZXRfcGxhY2VtZW50cyhhcmdzLCBleHRfZGF0YSk7CisJfQorCisJcmV0dXJuIC1F SU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgY3JlYXRlX3NldHBhcmFtKHN0cnVjdCBpOTE1X3VzZXJf ZXh0ZW5zaW9uIF9fdXNlciAqYmFzZSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NyZWF0ZV9leHRfc2V0cGFyYW0gZXh0OworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZleHQs IGJhc2UsIHNpemVvZihleHQpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlyZXR1cm4gX19jcmVh dGVfc2V0cGFyYW0oJmV4dC5wYXJhbSwgZGF0YSk7Cit9CisKK3N0YXRpYyBjb25zdCBpOTE1X3Vz ZXJfZXh0ZW5zaW9uX2ZuIGNyZWF0ZV9leHRlbnNpb25zW10gPSB7CisJW0k5MTVfR0VNX0NSRUFU RV9FWFRfU0VUUEFSQU1dID0gY3JlYXRlX3NldHBhcmFtLAorfTsKKworLyoqCisgKiBDcmVhdGVz IGEgbmV3IG1tIG9iamVjdCBhbmQgcmV0dXJucyBhIGhhbmRsZSB0byBpdC4KKyAqIEBkZXY6IGRy bSBkZXZpY2UgcG9pbnRlcgorICogQGRhdGE6IGlvY3RsIGRhdGEgYmxvYgorICogQGZpbGU6IGRy bSBmaWxlIHBvaW50ZXIKKyAqLworaW50CitpOTE1X2dlbV9jcmVhdGVfaW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxl KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOworCXN0 cnVjdCBjcmVhdGVfZXh0IGV4dF9kYXRhID0geyAuaTkxNSA9IGk5MTUgfTsKKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NyZWF0ZV9leHQgKmFyZ3MgPSBkYXRhOworCWludCByZXQ7CisKKwlpOTE1X2dl bV9mbHVzaF9mcmVlX29iamVjdHMoaTkxNSk7CisKKwlyZXQgPSBpOTE1X3VzZXJfZXh0ZW5zaW9u cyh1NjRfdG9fdXNlcl9wdHIoYXJncy0+ZXh0ZW5zaW9ucyksCisJCQkJICAgY3JlYXRlX2V4dGVu c2lvbnMsCisJCQkJICAgQVJSQVlfU0laRShjcmVhdGVfZXh0ZW5zaW9ucyksCisJCQkJICAgJmV4 dF9kYXRhKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9mcmVlOworCisJaWYgKCFleHRfZGF0YS5w bGFjZW1lbnRzKSB7CisJCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICoqcGxhY2VtZW50czsK KwkJZW51bSBpbnRlbF9tZW1vcnlfdHlwZSBtZW1fdHlwZSA9IElOVEVMX01FTU9SWV9TWVNURU07 CisKKwkJcGxhY2VtZW50cyA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVn aW9uICopLAorCQkJCSAgICAgR0ZQX0tFUk5FTCk7CisJCWlmICghcGxhY2VtZW50cykKKwkJCXJl dHVybiAtRU5PTUVNOworCisJCXBsYWNlbWVudHNbMF0gPSBpbnRlbF9tZW1vcnlfcmVnaW9uX2J5 X3R5cGUoaTkxNSwgbWVtX3R5cGUpOworCisJCWV4dF9kYXRhLnBsYWNlbWVudHMgPSBwbGFjZW1l bnRzOworCQlleHRfZGF0YS5uX3BsYWNlbWVudHMgPSAxOworCX0KKworCXJldCA9IGk5MTVfZ2Vt X2NyZWF0ZShmaWxlLAorCQkJICAgICAgZXh0X2RhdGEucGxhY2VtZW50cywKKwkJCSAgICAgIGV4 dF9kYXRhLm5fcGxhY2VtZW50cywKKwkJCSAgICAgICZhcmdzLT5zaXplLCAmYXJncy0+aGFuZGxl KTsKKwlpZiAoIXJldCkKKwkJcmV0dXJuIDA7CisKK2Vycl9mcmVlOgorCWtmcmVlKGV4dF9kYXRh LnBsYWNlbWVudHMpOworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0LmMKaW5kZXggNDk5MzUyNDVhNGE4Li44OWI1MzA4NDExMjYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMKQEAgLTI1NCw2ICsyNTQs OCBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwKIAkJaWYgKG9iai0+b3BzLT5yZWxlYXNlKQogCQkJb2JqLT5vcHMtPnJl bGVhc2Uob2JqKTsKIAorCQlrZnJlZShvYmotPm1tLnBsYWNlbWVudHMpOworCiAJCS8qIEJ1dCBr ZWVwIHRoZSBwb2ludGVyIGFsaXZlIGZvciBSQ1UtcHJvdGVjdGVkIGxvb2t1cHMgKi8KIAkJY2Fs bF9yY3UoJm9iai0+cmN1LCBfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0X3JjdSk7CiAJCWNvbmRfcmVz Y2hlZCgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29i amVjdF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90 eXBlcy5oCmluZGV4IDZkMTAxMjc1YmM5ZC4uMTE1YWQzMmMzMDNmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCkBAIC0yMTIsNiArMjEy LDE1IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKIAkJYXRvbWljX3QgcGFnZXNfcGlu X2NvdW50OwogCQlhdG9taWNfdCBzaHJpbmtfcGluOwogCisJCS8qKgorCQkgKiBQcmlvcml0eSBs aXN0IG9mIHBvdGVudGlhbCBwbGFjZW1lbnRzIGZvciB0aGlzIG9iamVjdC4KKwkJICovCisJCXN0 cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICoqcGxhY2VtZW50czsKKwkJaW50IG5fcGxhY2VtZW50 czsKKworCQkvKiBYWFg6IE5hc3R5IGhhY2ssIHNlZSBnZW1fY3JlYXRlICovCisJCWludCBnZW1f Y3JlYXRlX3Bvc3RlZF9lcnI7CisKIAkJLyoqCiAJCSAqIE1lbW9yeSByZWdpb24gZm9yIHRoaXMg b2JqZWN0LgogCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9yZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9yZWdpb24u YwppbmRleCA1OGJmNWY5ZTMxOTkuLjhmMzUyYmE2MjAyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3JlZ2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9yZWdpb24uYwpAQCAtMzMsNiArMzMsMTAgQEAgaTkxNV9nZW1fb2Jq ZWN0X2dldF9wYWdlc19idWRkeShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXVu c2lnbmVkIGludCBzZ19wYWdlX3NpemVzOwogCWludCByZXQ7CiAKKwkvKiBYWFg6IENoZWNrIGlm IHdlIGhhdmUgYW55IHBvc3QuIFRoaXMgaXMgbmFzdHkgaGFjaywgc2VlIGdlbV9jcmVhdGUgKi8K KwlpZiAob2JqLT5tbS5nZW1fY3JlYXRlX3Bvc3RlZF9lcnIpCisJCXJldHVybiBvYmotPm1tLmdl bV9jcmVhdGVfcG9zdGVkX2VycjsKKwogCXN0ID0ga21hbGxvYyhzaXplb2YoKnN0KSwgR0ZQX0tF Uk5FTCk7CiAJaWYgKCFzdCkKIAkJcmV0dXJuIC1FTk9NRU07CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YwppbmRleCAwN2IzYTg5ZWMwOWUuLmY0NTQwYzA0OGNkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jCkBAIC0xNzI5LDcgKzE3MjksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9k ZXNjIGk5MTVfaW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9HRU1fVEhST1RU TEUsIGk5MTVfZ2VtX3Rocm90dGxlX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9D VExfREVGX0RSVihJOTE1X0dFTV9FTlRFUlZULCBkcm1fbm9vcCwgRFJNX0FVVEh8RFJNX01BU1RF UnxEUk1fUk9PVF9PTkxZKSwKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9MRUFWRVZULCBk cm1fbm9vcCwgRFJNX0FVVEh8RFJNX01BU1RFUnxEUk1fUk9PVF9PTkxZKSwKLQlEUk1fSU9DVExf REVGX0RSVihJOTE1X0dFTV9DUkVBVEUsIGk5MTVfZ2VtX2NyZWF0ZV9pb2N0bCwgRFJNX1JFTkRF Ul9BTExPVyksCisJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9HRU1fQ1JFQVRFX0VYVCwgaTkxNV9n ZW1fY3JlYXRlX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihJ OTE1X0dFTV9QUkVBRCwgaTkxNV9nZW1fcHJlYWRfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAog CURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX1BXUklURSwgaTkxNV9nZW1fcHdyaXRlX2lvY3Rs LCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9NTUFQLCBp OTE1X2dlbV9tbWFwX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCmluZGV4IGVmMjEyNGMxN2E3Zi4uYmY2N2YzMjNhMWFlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fY2xmbHVzaC5o IgogI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9jb250ZXh0LmgiCiAjaW5jbHVkZSAiZ2VtL2k5MTVf Z2VtX2lvY3Rscy5oIgorI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9sbWVtLmgiCiAjaW5jbHVkZSAi Z2VtL2k5MTVfZ2VtX21tYW4uaCIKICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fcmVnaW9uLmgiCiAj aW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3VzZXIuaCIKQEAgLTE3OSwxMDggKzE4MCw2IEBAIGlu dCBpOTE1X2dlbV9vYmplY3RfdW5iaW5kKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludAotaTkxNV9nZW1fY3JlYXRlKHN0cnVjdCBk cm1fZmlsZSAqZmlsZSwKLQkJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1yLAotCQl1NjQg KnNpemVfcCwKLQkJdTMyICpoYW5kbGVfcCkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwotCXUzMiBoYW5kbGU7Ci0JdTY0IHNpemU7Ci0JaW50IHJldDsKLQotCUdFTV9CVUdf T04oIWlzX3Bvd2VyX29mXzIobXItPm1pbl9wYWdlX3NpemUpKTsKLQlzaXplID0gcm91bmRfdXAo KnNpemVfcCwgbXItPm1pbl9wYWdlX3NpemUpOwotCWlmIChzaXplID09IDApCi0JCXJldHVybiAt RUlOVkFMOwotCi0JLyogRm9yIG1vc3Qgb2YgdGhlIEFCSSAoZS5nLiBtbWFwKSB3ZSB0aGluayBp biBzeXN0ZW0gcGFnZXMgKi8KLQlHRU1fQlVHX09OKCFJU19BTElHTkVEKHNpemUsIFBBR0VfU0la RSkpOwotCi0JLyogQWxsb2NhdGUgdGhlIG5ldyBvYmplY3QgKi8KLQlvYmogPSBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX3JlZ2lvbihtciwgc2l6ZSwgMCk7Ci0JaWYgKElTX0VSUihvYmopKQotCQly ZXR1cm4gUFRSX0VSUihvYmopOwotCi0JcmV0ID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbGUs ICZvYmotPmJhc2UsICZoYW5kbGUpOwotCS8qIGRyb3AgcmVmZXJlbmNlIGZyb20gYWxsb2NhdGUg LSBoYW5kbGUgaG9sZHMgaXQgbm93ICovCi0JaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwotCWlm IChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQkqaGFuZGxlX3AgPSBoYW5kbGU7Ci0JKnNpemVfcCA9 IHNpemU7Ci0JcmV0dXJuIDA7Ci19Ci0KLWludAotaTkxNV9nZW1fZHVtYl9jcmVhdGUoc3RydWN0 IGRybV9maWxlICpmaWxlLAotCQkgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCSAgICAg c3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKQotewotCWVudW0gaW50ZWxfbWVtb3J5 X3R5cGUgbWVtX3R5cGU7Ci0JaW50IGNwcCA9IERJVl9ST1VORF9VUChhcmdzLT5icHAsIDgpOwot CXUzMiBmb3JtYXQ7Ci0KLQlzd2l0Y2ggKGNwcCkgewotCWNhc2UgMToKLQkJZm9ybWF0ID0gRFJN X0ZPUk1BVF9DODsKLQkJYnJlYWs7Ci0JY2FzZSAyOgotCQlmb3JtYXQgPSBEUk1fRk9STUFUX1JH QjU2NTsKLQkJYnJlYWs7Ci0JY2FzZSA0OgotCQlmb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4 OwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQkvKiBoYXZl IHRvIHdvcmsgb3V0IHNpemUvcGl0Y2ggYW5kIHJldHVybiB0aGVtICovCi0JYXJncy0+cGl0Y2gg PSBBTElHTihhcmdzLT53aWR0aCAqIGNwcCwgNjQpOwotCi0JLyogYWxpZ24gc3RyaWRlIHRvIHBh Z2Ugc2l6ZSBzbyB0aGF0IHdlIGNhbiByZW1hcCAqLwotCWlmIChhcmdzLT5waXRjaCA+IGludGVs X3BsYW5lX2ZiX21heF9zdHJpZGUodG9faTkxNShkZXYpLCBmb3JtYXQsCi0JCQkJCQkgICAgRFJN X0ZPUk1BVF9NT0RfTElORUFSKSkKLQkJYXJncy0+cGl0Y2ggPSBBTElHTihhcmdzLT5waXRjaCwg NDA5Nik7Ci0KLQlpZiAoYXJncy0+cGl0Y2ggPCBhcmdzLT53aWR0aCkKLQkJcmV0dXJuIC1FSU5W QUw7Ci0KLQlhcmdzLT5zaXplID0gbXVsX3UzMl91MzIoYXJncy0+cGl0Y2gsIGFyZ3MtPmhlaWdo dCk7Ci0KLQltZW1fdHlwZSA9IElOVEVMX01FTU9SWV9TWVNURU07Ci0JaWYgKEhBU19MTUVNKHRv X2k5MTUoZGV2KSkpCi0JCW1lbV90eXBlID0gSU5URUxfTUVNT1JZX0xPQ0FMOwotCi0JcmV0dXJu IGk5MTVfZ2VtX2NyZWF0ZShmaWxlLAotCQkJICAgICAgIGludGVsX21lbW9yeV9yZWdpb25fYnlf dHlwZSh0b19pOTE1KGRldiksCi0JCQkJCQkJICAgbWVtX3R5cGUpLAotCQkJICAgICAgICZhcmdz LT5zaXplLCAmYXJncy0+aGFuZGxlKTsKLX0KLQotLyoqCi0gKiBDcmVhdGVzIGEgbmV3IG1tIG9i amVjdCBhbmQgcmV0dXJucyBhIGhhbmRsZSB0byBpdC4KLSAqIEBkZXY6IGRybSBkZXZpY2UgcG9p bnRlcgotICogQGRhdGE6IGlvY3RsIGRhdGEgYmxvYgotICogQGZpbGU6IGRybSBmaWxlIHBvaW50 ZXIKLSAqLwotaW50Ci1pOTE1X2dlbV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKLQkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQotewotCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBkcm1faTkx NV9nZW1fY3JlYXRlICphcmdzID0gZGF0YTsKLQotCWk5MTVfZ2VtX2ZsdXNoX2ZyZWVfb2JqZWN0 cyhpOTE1KTsKLQotCXJldHVybiBpOTE1X2dlbV9jcmVhdGUoZmlsZSwKLQkJCSAgICAgICBpbnRl bF9tZW1vcnlfcmVnaW9uX2J5X3R5cGUoaTkxNSwKLQkJCQkJCQkgICBJTlRFTF9NRU1PUllfU1lT VEVNKSwKLQkJCSAgICAgICAmYXJncy0+c2l6ZSwgJmFyZ3MtPmhhbmRsZSk7Ci19Ci0KIHN0YXRp YyBpbnQKIHNobWVtX3ByZWFkKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb2Zmc2V0LCBpbnQgbGVu LCBjaGFyIF9fdXNlciAqdXNlcl9kYXRhLAogCSAgICBib29sIG5lZWRzX2NsZmx1c2gpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKaW5kZXggNmY0MDc0ODkwMWRh Li42NzI0MGJkZGYyY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21l bW9yeV9yZWdpb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVn aW9uLmMKQEAgLTIxLDYgKzIxLDI2IEBAIGNvbnN0IHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9u X2luZm8gaW50ZWxfcmVnaW9uX21hcFtdID0gewogICAgICAgIH0sCiB9OwogCitzdHJ1Y3QgaW50 ZWxfbWVtb3J5X3JlZ2lvbiAqCitpbnRlbF9tZW1vcnlfcmVnaW9uX2xvb2t1cChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCSAgIHUxNiBjbGFzcywgdTE2IGluc3RhbmNlKQorewor CWludCBpOworCisJLyogWFhYOiBjb25zaWRlciBtYXliZSBjb252ZXJ0aW5nIHRvIGFuIHJiIHRy ZWUgYXQgc29tZSBwb2ludCAqLworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGk5MTUtPm1t LnJlZ2lvbnMpOyArK2kpIHsKKwkJc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKnJlZ2lvbiA9 IGk5MTUtPm1tLnJlZ2lvbnNbaV07CisKKwkJaWYgKCFyZWdpb24pCisJCQljb250aW51ZTsKKwor CQlpZiAocmVnaW9uLT50eXBlID09IGNsYXNzICYmIHJlZ2lvbi0+aW5zdGFuY2UgPT0gaW5zdGFu Y2UpCisJCQlyZXR1cm4gcmVnaW9uOworCX0KKworCXJldHVybiBOVUxMOworfQorCiBzdHJ1Y3Qg aW50ZWxfbWVtb3J5X3JlZ2lvbiAqCiBpbnRlbF9tZW1vcnlfcmVnaW9uX2J5X3R5cGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCQkgICAgZW51bSBpbnRlbF9tZW1vcnlfdHlwZSBt ZW1fdHlwZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9y ZWdpb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uaAppbmRl eCAxNWRjYjU3YjRiNWEuLjIwNDMxZDNjZTQ5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbWVtb3J5X3JlZ2lvbi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX21lbW9yeV9yZWdpb24uaApAQCAtMTAyLDYgKzEwMiwxMCBAQCBzdHJ1Y3QgaW50ZWxfbWVt b3J5X3JlZ2lvbiB7CiAJfSBvYmplY3RzOwogfTsKIAorc3RydWN0IGludGVsX21lbW9yeV9yZWdp b24gKgoraW50ZWxfbWVtb3J5X3JlZ2lvbl9sb29rdXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCisJCQkgICB1MTYgY2xhc3MsIHUxNiBpbnN0YW5jZSk7CisKIGludCBpbnRlbF9tZW1v cnlfcmVnaW9uX2luaXRfYnVkZHkoc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSk7CiB2 b2lkIGludGVsX21lbW9yeV9yZWdpb25fcmVsZWFzZV9idWRkeShzdHJ1Y3QgaW50ZWxfbWVtb3J5 X3JlZ2lvbiAqbWVtKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o IGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IDQxODQ1MjAzMjUwZC4uZjZlM2Ew NDYyNDE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5j bHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC0zOTEsNiArMzkxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0VOVEVSVlQJ RFJNX0lPKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fRU5URVJWVCkKICNkZWZpbmUg RFJNX0lPQ1RMX0k5MTVfR0VNX0xFQVZFVlQJRFJNX0lPKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f STkxNV9HRU1fTEVBVkVWVCkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0NSRUFURQlEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0NSRUFURSwgc3RydWN0IGRybV9p OTE1X2dlbV9jcmVhdGUpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DUkVBVEVfRVhUCURS TV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ1JFQVRFLCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NyZWF0ZV9leHQpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9QUkVBRAlE Uk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1BSRUFELCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3ByZWFkKQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fUFdSSVRFCURSTV9J T1cgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fUFdSSVRFLCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3B3cml0ZSkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVAJCURSTV9JT1dS KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fTU1BUCwgc3RydWN0IGRybV9pOTE1X2dl bV9tbWFwKQpAQCAtNzI4LDYgKzcyOSwyNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSB7 CiAJX191MzIgcGFkOwogfTsKIAorc3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGVfZXh0IHsKKwor CS8qKgorCSAqIFJlcXVlc3RlZCBzaXplIGZvciB0aGUgb2JqZWN0LgorCSAqCisJICogVGhlIChw YWdlLWFsaWduZWQpIGFsbG9jYXRlZCBzaXplIGZvciB0aGUgb2JqZWN0IHdpbGwgYmUgcmV0dXJu ZWQuCisJICovCisJX191NjQgc2l6ZTsKKwkvKioKKwkgKiBSZXR1cm5lZCBoYW5kbGUgZm9yIHRo ZSBvYmplY3QuCisJICoKKwkgKiBPYmplY3QgaGFuZGxlcyBhcmUgbm9uemVyby4KKwkgKi8KKwlf X3UzMiBoYW5kbGU7CisJX191MzIgcGFkOworI2RlZmluZSBJOTE1X0dFTV9DUkVBVEVfRVhUX1NF VFBBUkFNICgxdSA8PCAwKQorI2RlZmluZSBJOTE1X0dFTV9DUkVBVEVfRVhUX0ZMQUdTX1VOS05P V04gXAorCSgtKEk5MTVfR0VNX0NSRUFURV9FWFRfU0VUUEFSQU0gPDwgMSkpCisJX191NjQgZXh0 ZW5zaW9uczsKK307CisKIHN0cnVjdCBkcm1faTkxNV9nZW1fcHJlYWQgewogCS8qKiBIYW5kbGUg Zm9yIHRoZSBvYmplY3QgYmVpbmcgcmVhZC4gKi8KIAlfX3UzMiBoYW5kbGU7CkBAIC0xNjk4LDYg KzE3MjAsNDQgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKIAlfX3U2NCB2 YWx1ZTsKIH07CiAKK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X3BhcmFtIHsKKwkvKiBPYmpl Y3QgaGFuZGxlICgwIGZvciBJOTE1X0dFTV9DUkVBVEVfRVhUX1NFVFBBUkFNKSAqLworCV9fdTMy IGhhbmRsZTsKKworCS8qIERhdGEgcG9pbnRlciBzaXplICovCisJX191MzIgc2l6ZTsKKworLyoK KyAqIEk5MTVfT0JKRUNUX1BBUkFNOgorICoKKyAqIFNlbGVjdCBvYmplY3QgbmFtZXNwYWNlIGZv ciB0aGUgcGFyYW0uCisgKi8KKyNkZWZpbmUgSTkxNV9PQkpFQ1RfUEFSQU0gICgxdWxsPDwzMikK KworLyoKKyAqIEk5MTVfUEFSQU1fTUVNT1JZX1JFR0lPTlM6CisgKgorICogU2V0IHRoZSBkYXRh IHBvaW50ZXIgd2l0aCB0aGUgZGVzaXJlZCBzZXQgb2YgcGxhY2VtZW50cyBpbiBwcmlvcml0eQor ICogb3JkZXIoZWFjaCBlbnRyeSBtdXN0IGJlIHVuaXF1ZSBhbmQgc3VwcG9ydGVkIGJ5IHRoZSBk ZXZpY2UpLCBhcyBhbiBhcnJheSBvZgorICogZHJtX2k5MTVfZ2VtX21lbW9yeV9jbGFzc19pbnN0 YW5jZSwgb3IgYW4gZXF1aXZhbGVudCBsYXlvdXQgb2YgY2xhc3M6aW5zdGFuY2UKKyAqIHBhaXIg ZW5jb2RpbmdzLiBTZWUgRFJNX0k5MTVfUVVFUllfTUVNT1JZX1JFR0lPTlMgZm9yIGhvdyB0byBx dWVyeSB0aGUKKyAqIHN1cHBvcnRlZCByZWdpb25zLgorICoKKyAqIE5vdGUgdGhhdCB0aGlzIHJl cXVpcmVzIHRoZSBJOTE1X09CSkVDVF9QQVJBTSBuYW1lc3BhY2U6CisgKgkucGFyYW0gPSBJOTE1 X09CSkVDVF9QQVJBTSB8IEk5MTVfUEFSQU1fTUVNT1JZX1JFR0lPTlMKKyAqLworI2RlZmluZSBJ OTE1X1BBUkFNX01FTU9SWV9SRUdJT05TIDB4MQorCV9fdTY0IHBhcmFtOworCisJLyogRGF0YSB2 YWx1ZSBvciBwb2ludGVyICovCisJX191NjQgZGF0YTsKK307CisKK3N0cnVjdCBkcm1faTkxNV9n ZW1fY3JlYXRlX2V4dF9zZXRwYXJhbSB7CisJc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gYmFz ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9wYXJhbSBwYXJhbTsKK307CisKIC8qKgog ICogQ29udGV4dCBTU0VVIHByb2dyYW1taW5nCiAgKgotLSAKMi4yNi4yCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK