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=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 B8DB6C34056 for ; Wed, 19 Feb 2020 19:30:35 +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 938B8208E4 for ; Wed, 19 Feb 2020 19:30:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 938B8208E4 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 473836EC8C; Wed, 19 Feb 2020 19:30:35 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5B2A06EC8C for ; Wed, 19 Feb 2020 19:30:34 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Feb 2020 11:30:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,461,1574150400"; d="scan'208";a="315489171" Received: from aquilante.fi.intel.com (HELO teofilatto.example.org) ([10.237.72.158]) by orsmga001.jf.intel.com with ESMTP; 19 Feb 2020 11:30:27 -0800 From: Andi Shyti To: Intel GFX Date: Wed, 19 Feb 2020 21:30:20 +0200 Message-Id: <20200219193020.17673-1-andi.shyti@intel.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200219190223.16972-1-andi.shyti@intel.com> References: <20200219190223.16972-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v5] drm/i915/gt: make a gt sysfs group and move power management files 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" VGhlIEdUIGhhcyBpdHMgb3duIHByb3BlcnRpZXMgYW5kIGluIHN5c2ZzIHRoZXkgc2hvdWxkIGJl IGdyb3VwZWQKaW4gdGhlICdndC8nIGRpcmVjdG9yeS4KCkNyZWF0ZSB0aGUgJ2d0LycgZGlyZWN0 b3J5IGluIHN5c2ZzIGFuZCBtb3ZlIHRoZSBwb3dlciBtYW5hZ2VtZW50CnJlbGF0ZWQgZmlsZXMu CgpUaGUgbmV3IGludGVyZmFjZXMgYXJlOgoKZ3QvZ3RfYWN0X2ZyZXFfbWh6Cmd0L2d0X2Jvb3N0 X2ZyZXFfbWh6Cmd0L2d0X2N1cl9mcmVxX21oegpndC9ndF9pbmZvCmd0L2d0X21heF9mcmVxX21o egpndC9ndF9taW5fZnJlcV9taHoKZ3QvZ3RfUlAwX2ZyZXFfbWh6Cmd0L2d0X1JQMV9mcmVxX21o egpndC9ndF9SUG5fZnJlcV9taHoKZ3QvcmM2X2VuYWJsZQpndC9yYzZfcmVzaWRlbmN5X21zCgpU aGUgb25jZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgd2lsbCBiZSBtYXJrZWQgYXMgZGVwcmVjYXRl ZCwgaWYKYWNjZXNzZWQgYSB3YXJuaW5nIG1lc3NhZ2UgaXMgcHJpbnRlZC4KClNpZ25lZC1vZmYt Ynk6IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgotLS0KdjQgLT4gdjU6CiAgLSBy ZW1vdmVkIHNwdXJpb3VzIGdob3N0ICd2dnYnIGZpbGUgdGhhdCB3YXMgbmV2ZXIgbWVhbnQgdG8g YmUKICAgIHRoZXJlLi4uIHNvcnJ5IGZvciBzcGFtbWluZy4KdjMgLT4gdjQ6CiAgLSBmaXhlZCBU dnJ0a28ncyBjb21tZW50czoKICAgICAgICAtIHNvbWUgcmVuYW1pbmcKICAgICAgICAtIHNvbWUg Y2x1bXN5IHVuYmFsYW5jZWQga29iamVjdF9wdXQvZ2V0CiAgICAgICAgLSB0aGUgd2FybmluZyBw cmludCBpcyBtb3JlIGRlc2NyaXB0aXZlIGFuZCBwcmludGVkIHdpdGgKICAgICAgICAgIGxpbWl0 ZWQgcmF0ZQogICAgICAgIC0gVE9ETzogZHJtX3ByaW50IGRvZXNuJ3QgaGF2ZSBhIGRybV93YXJu X3VubGltaXRlZCwgdG8KICAgICAgICAgIGJlIGFkZGVkCnYyIC0+IHYzOgogIC0gZml4IHNvbWUg Y2xlYW51cHMgdGhhdCBJIGZvcmdvdCBpbiB0aGUgcHJldmlvdXMgcGF0Y2gKICAtIGZpeCByZWZl cmVuY2UgcG9pbnRlcnMgdG8gdGhlIGd0IHN0cnVjdHVyZQogIC0gYW5kIG1hbnkgb3RoZXIgc21h bGwgY2hhbmdlcyBoZXJlIGFuZCB0aGVyZS4KdjEgLT4gdjI6CiAgLSBrZWVwIHRoZSBleGlzdGlu ZyBmaWxlcyBhcyB0aGV5IGFyZQogIC0gdXNlICJpbnRlbF9ndF8qIiBhcyBwcmVmaXggaW5zdGVh ZCBvZiAic3lzZnNfKiIKCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAg IHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jICAgICAgIHwgICAz ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmggfCAgIDEgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuYyAgICAgICB8ICA3OSArKysrKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuaCAgICAgICB8ICAyMiArKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uYyAgICB8IDQzMiArKysrKysrKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uaCAgICB8ICAxNyArCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgICAgIHwgMzc1ICstLS0tLS0tLS0tLS0t LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmggICAgICAgIHwgICAzICsK IDkgZmlsZXMgY2hhbmdlZCwgNTYxIGluc2VydGlvbnMoKyksIDM3NSBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0X3BtLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5oCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQppbmRleCBiMzE0ZDQ0ZGVkNWUuLmZmOWUxN2M5N2RjMiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKQEAgLTEwNyw3ICsxMDcsOSBAQCBndC15ICs9IFwKIAlndC9pbnRlbF9ycHMu byBcCiAJZ3QvaW50ZWxfc3NldS5vIFwKIAlndC9pbnRlbF90aW1lbGluZS5vIFwKLQlndC9pbnRl bF93b3JrYXJvdW5kcy5vCisJZ3QvaW50ZWxfd29ya2Fyb3VuZHMubyBcCisJZ3Qvc3lzZnNfZ3Qu byBcCisJZ3Qvc3lzZnNfZ3RfcG0ubwogIyBhdXRvZ2VuZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRl CiBndC15ICs9IFwKIAlndC9nZW42X3JlbmRlcnN0YXRlLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0LmMKaW5kZXggZjFmMWIzMDZlMGFmLi5lNzk0ZDA1ZDY5YTEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZ3QuYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImludGVsX3Jwcy5o IgogI2luY2x1ZGUgImludGVsX3VuY29yZS5oIgogI2luY2x1ZGUgImludGVsX3BtLmgiCisjaW5j bHVkZSAic3lzZnNfZ3QuaCIKIAogdm9pZCBpbnRlbF9ndF9pbml0X2Vhcmx5KHN0cnVjdCBpbnRl bF9ndCAqZ3QsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewpAQCAtMzIxLDYgKzMy Miw3IEBAIHZvaWQgaW50ZWxfZ3RfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3Qp CiAJaW50ZWxfcnBzX2RyaXZlcl9yZWdpc3RlcigmZ3QtPnJwcyk7CiAKIAlkZWJ1Z2ZzX2d0X3Jl Z2lzdGVyKGd0KTsKKwlpbnRlbF9ndF9zeXNmc19yZWdpc3RlcihndCk7CiB9CiAKIHN0YXRpYyBp bnQgaW50ZWxfZ3RfaW5pdF9zY3JhdGNoKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHVuc2lnbmVkIGlu dCBzaXplKQpAQCAtNjQxLDYgKzY0Myw3IEBAIHZvaWQgaW50ZWxfZ3RfZHJpdmVyX3JlbW92ZShz dHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiB2b2lkIGludGVsX2d0X2RyaXZlcl91bnJlZ2lzdGVyKHN0 cnVjdCBpbnRlbF9ndCAqZ3QpCiB7CisJaW50ZWxfZ3Rfc3lzZnNfdW5yZWdpc3RlcihndCk7CiAJ aW50ZWxfcnBzX2RyaXZlcl91bnJlZ2lzdGVyKCZndC0+cnBzKTsKIH0KIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKaW5kZXggOTY4OTBkZDEyYjVmLi43ZjBiNGY4ZDll MjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaApAQCAtMzIsNiAr MzIsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3QgewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 OwogCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZTsKIAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0 OworCXN0cnVjdCBrb2JqZWN0IHN5c2ZzX3Jvb3Q7CiAKIAlzdHJ1Y3QgaW50ZWxfdWMgdWM7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uOTMzNWE5MmQ1MjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuYwpAQCAtMCwwICsxLDc5IEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUCisKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3Jh dGlvbgorICovCisKKyNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPgorI2luY2x1ZGUgPGRybS9kcm1f ZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgva29iamVjdC5oPgorI2luY2x1ZGUgPGxpbnV4L3By aW50ay5oPgorCisjaW5jbHVkZSAiLi4vaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpbnRlbF9ndC5o IgorI2luY2x1ZGUgImludGVsX2d0X3R5cGVzLmgiCisjaW5jbHVkZSAiaW50ZWxfcmM2LmgiCisK KyNpbmNsdWRlICJzeXNmc19ndC5oIgorI2luY2x1ZGUgInN5c2ZzX2d0X3BtLmgiCisKK3N0YXRp YyBpbmxpbmUgc3RydWN0IGtvYmplY3QgKmd0X2dldF9wYXJlbnRfb2JqKHN0cnVjdCBpbnRlbF9n dCAqZ3QpCit7CisJcmV0dXJuICZndC0+aTkxNS0+ZHJtLnByaW1hcnktPmtkZXYtPmtvYmo7Cit9 CisKK3N0YXRpYyBzc2l6ZV90IGd0X2luZm9fc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkg ICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICAgY2hhciAqYnVmZikKK3sK KwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiMFxuIik7Cit9CisKK3N0YXRpYyBE RVZJQ0VfQVRUUl9STyhndF9pbmZvKTsKKworc3RhdGljIHN0cnVjdCBrb2JqX3R5cGUgc3lzZnNf Z3Rfa3R5cGUgPSB7CisJLnN5c2ZzX29wcyA9ICZrb2JqX3N5c2ZzX29wcywKK307CisKK3ZvaWQg aW50ZWxfZ3Rfc3lzZnNfcmVnaXN0ZXIoc3RydWN0IGludGVsX2d0ICpndCkKK3sKKwlzdHJ1Y3Qg a29iamVjdCAqcGFyZW50ID0ga29iamVjdF9nZXQoZ3RfZ2V0X3BhcmVudF9vYmooZ3QpKTsKKwlp bnQgcmV0OworCisJcmV0ID0ga29iamVjdF9pbml0X2FuZF9hZGQoJmd0LT5zeXNmc19yb290LAor CQkJCSAgICZzeXNmc19ndF9rdHlwZSwKKwkJCQkgICBwYXJlbnQsICJndCIpOworCWlmIChyZXQp IHsKKwkJZHJtX2VycigmZ3QtPmk5MTUtPmRybSwgImZhaWxlZCB0byBpbml0aWFsaXplIHN5c2Zz IGZpbGVcbiIpOworCQlrb2JqZWN0X3B1dCgmZ3QtPnN5c2ZzX3Jvb3QpOworCQlnb3RvIHBhcmVu dF9maWxlczsKKwl9CisKKwlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZSgmZ3QtPnN5c2ZzX3Jvb3Qs ICZkZXZfYXR0cl9ndF9pbmZvLmF0dHIpOworCWlmIChyZXQpCisJCWRybV9lcnIoJmd0LT5pOTE1 LT5kcm0sICJmYWlsZWQgdG8gY3JlYXRlIHN5c2ZzIGd0IGluZm8gZmlsZXNcbiIpOworCisJaW50 ZWxfZ3Rfc3lzZnNfcG1faW5pdChndCwgJmd0LT5zeXNmc19yb290KTsKKworcGFyZW50X2ZpbGVz OgorCS8qCisJICogd2UgbmVlZCB0byBtYWtlIHRoaW5ncyByaWdodCB3aXRoIHRoZQorCSAqIEFC SSBjb21wYXRpYmlsaXR5LiBUaGUgZmlsZXMgd2VyZSBvcmlnaW5hbGx5CisJICogZ2VuZXJhdGVk IHVuZGVyIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorCSAqLworCWludGVsX2d0X3N5c2ZzX3BtX2lu aXQoZ3QsIHBhcmVudCk7Cit9CisKK3ZvaWQgaW50ZWxfZ3Rfc3lzZnNfdW5yZWdpc3RlcihzdHJ1 Y3QgaW50ZWxfZ3QgKmd0KQoreworCXN0cnVjdCBrb2JqZWN0ICpwYXJlbnQgPSBndF9nZXRfcGFy ZW50X29iaihndCk7CisKKwkvKgorCSAqIHRoZSBuYW1lIGd0IHRlbGxzIHVzIHdldGhlciBzeXNm c19yb290CisJICogb2JqZWN0IHdhcyBpbml0aWFsaXplZCBwcm9wZXJseQorCSAqLworCWlmICgh c3RyY21wKGd0LT5zeXNmc19yb290Lm5hbWUsICJndCIpKQorCQlrb2JqZWN0X3B1dCgmZ3QtPnN5 c2ZzX3Jvb3QpOworCisJa29iamVjdF9wdXQocGFyZW50KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z eXNmc19ndC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmU0Nzlh YTkwMmU1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNf Z3QuaApAQCAtMCwwICsxLDIyIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICov CisKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNp Zm5kZWYgU1lTRlNfR1RfSAorI2RlZmluZSBTWVNGU19HVF9ICisKKyNpbmNsdWRlICJpbnRlbF9n dF90eXBlcy5oIgorCitzdHJ1Y3QgaW50ZWxfZ3Q7CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGlu dGVsX2d0ICprb2JqX3RvX2d0KHN0cnVjdCBrb2JqZWN0ICprb2JqKQoreworCXJldHVybiBjb250 YWluZXJfb2Yoa29iaiwgc3RydWN0IGludGVsX2d0LCBzeXNmc19yb290KTsKK30KKwordm9pZCBp bnRlbF9ndF9zeXNmc19yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKK3ZvaWQgaW50ZWxf Z3Rfc3lzZnNfdW5yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KTsKKworI2VuZGlmIC8qIFNZ U0ZTX0dUX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0 X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzU0OGViODUxYTcwCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uYwpAQCAtMCwwICsxLDQz MiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorCisvKgorICogQ29weXJpZ2h0 IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybV9kZXZp Y2UuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNmcy5oPgorI2luY2x1ZGUgPGxpbnV4L3ByaW50ay5o PgorCisjaW5jbHVkZSAiLi4vaTkxNV9kcnYuaCIKKyNpbmNsdWRlICIuLi9pOTE1X3N5c2ZzLmgi CisjaW5jbHVkZSAiaW50ZWxfZ3QuaCIKKyNpbmNsdWRlICJpbnRlbF9yYzYuaCIKKyNpbmNsdWRl ICJpbnRlbF9ycHMuaCIKKyNpbmNsdWRlICJzeXNmc19ndC5oIgorI2luY2x1ZGUgInN5c2ZzX2d0 X3BtLmgiCisKK3N0cnVjdCBpbnRlbF9ndCAqaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoc3Ry dWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBrb2JqZWN0ICprb2JqID0gJmRldi0+a29iajsK KwkvKgorCSAqIFdlIGFyZSBpbnRlcmVzdGVkIGF0IGtub3dpbmcgZnJvbSB3aGVyZSB0aGUgaW50 ZXJmYWNlCisJICogaGFzIGJlZW4gY2FsbGVkLCB3aGV0aGVyIGl0J3MgY2FsbGVkIGZyb20gZ3Qv IG9yIGZyb20KKwkgKiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KKwkgKiBGcm9tIHRoZSBpbnRlcmZh Y2UgcG9zaXRpb24gaXQgZGVwZW5kcyBhbHNvIHRoZSB2YWx1ZSBvZgorCSAqIHRoZSBwcml2YXRl IGRhdGEuCisJICogSWYgdGhlIGludGVyZmFjZSBpcyBjYWxsZWQgZnJvbSBndC8gdGhlbiBwcml2 YXRlIGRhdGEgaXMKKwkgKiBvZiB0aGUgInN0cnVjdCBpbnRlbF9ndCAqIiB0eXBlLCBvdGhlcndp c2UgaXQncyAqIGEKKwkgKiAic3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKiIgdHlwZS4KKwkgKi8K KwlpZiAoc3RyY21wKGRldi0+a29iai5uYW1lLCAiZ3QiKSkgeworCQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGtkZXZfbWlub3JfdG9faTkxNShkZXYpOworCisJCXByX3dhcm5fcmF0 ZWxpbWl0ZWQoREVQUkVDQVRFRAorCQkJIiglcywgJWQpIHRyeWluZyB0byBhY2Nlc3MgZGVwcmVj YXRlZCBpbnRlcmZhY2UsICIKKwkJCSJ1c2UgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIGlu IGd0L1xuIiwKKwkJCWN1cnJlbnQtPmNvbW0sIHRhc2tfcGlkX25yKGN1cnJlbnQpKTsKKwkJcmV0 dXJuICZpOTE1LT5ndDsKKwl9CisKKwlyZXR1cm4ga29ial90b19ndChrb2JqKTsKK30KKworI2lm ZGVmIENPTkZJR19QTQorc3RhdGljIHUzMiBnZXRfcmVzaWRlbmN5KHN0cnVjdCBpbnRlbF9ndCAq Z3QsIGk5MTVfcmVnX3QgcmVnKQoreworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCXU2NCBy ZXMgPSAwOworCisJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGd0LT51bmNvcmUtPnJwbSwgd2FrZXJl ZikKKwkJcmVzID0gaW50ZWxfcmM2X3Jlc2lkZW5jeV91cygmZ3QtPnJjNiwgcmVnKTsKKworCXJl dHVybiBESVZfUk9VTkRfQ0xPU0VTVF9VTEwocmVzLCAxMDAwKTsKK30KKworc3RhdGljIHNzaXpl X3QgcmM2X2VuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCSAgICAgICBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICAgICBjaGFyICpidWZmKQoreworCXN0cnVj dCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCXU4IG1h c2sgPSAwOworCisJaWYgKEhBU19SQzYoZ3QtPmk5MTUpKQorCQltYXNrIHw9IEJJVCgwKTsKKwlp ZiAoSEFTX1JDNnAoZ3QtPmk5MTUpKQorCQltYXNrIHw9IEJJVCgxKTsKKwlpZiAoSEFTX1JDNnBw KGd0LT5pOTE1KSkKKwkJbWFzayB8PSBCSVQoMik7CisKKwlyZXR1cm4gc25wcmludGYoYnVmZiwg UEFHRV9TSVpFLCAiJXhcbiIsIG1hc2spOworfQorCitzdGF0aWMgc3NpemVfdCByYzZfcmVzaWRl bmN5X21zX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgICAgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsCisJCQkJICAgICBjaGFyICpidWZmKQoreworCXN0cnVjdCBpbnRlbF9n dCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCXUzMiByYzZfcmVzaWRl bmN5ID0gZ2V0X3Jlc2lkZW5jeShndCwgR0VONl9HVF9HRlhfUkM2KTsKKworCXJldHVybiBzbnBy aW50ZihidWZmLCBQQUdFX1NJWkUsICIldVxuIiwgcmM2X3Jlc2lkZW5jeSk7Cit9CisKK3N0YXRp YyBzc2l6ZV90IHJjNnBfcmVzaWRlbmN5X21zX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJ CSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCSAgICAgIGNoYXIgKmJ1 ZmYpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRh KGRldik7CisJdTMyIHJjNnBfcmVzaWRlbmN5ID0gZ2V0X3Jlc2lkZW5jeShndCwgR0VONl9HVF9H RlhfUkM2cCk7CisKKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJj NnBfcmVzaWRlbmN5KTsKK30KKworc3RhdGljIHNzaXplX3QgcmM2cHBfcmVzaWRlbmN5X21zX3No b3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwKKwkJCQkgICAgICAgY2hhciAqYnVmZikKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0 ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwl1MzIgcmM2cHBfcmVzaWRlbmN5 ID0gZ2V0X3Jlc2lkZW5jeShndCwgR0VONl9HVF9HRlhfUkM2cHApOworCisJcmV0dXJuIHNucHJp bnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiV1XG4iLCByYzZwcF9yZXNpZGVuY3kpOworfQorCitzdGF0 aWMgc3NpemVfdCBtZWRpYV9yYzZfcmVzaWRlbmN5X21zX3Nob3coc3RydWN0IGRldmljZSAqZGV2 LAorCQkJCQkgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkJICAgY2hhciAq YnVmZikKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRh dGEoZGV2KTsKKwl1MzIgcmM2X3Jlc2lkZW5jeSA9IGdldF9yZXNpZGVuY3koZ3QsIFZMVl9HVF9N RURJQV9SQzYpOworCisJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiV1XG4iLCBy YzZfcmVzaWRlbmN5KTsKK30KKworc3RhdGljIERFVklDRV9BVFRSX1JPKHJjNl9lbmFibGUpOwor c3RhdGljIERFVklDRV9BVFRSX1JPKHJjNl9yZXNpZGVuY3lfbXMpOworc3RhdGljIERFVklDRV9B VFRSX1JPKHJjNnBfcmVzaWRlbmN5X21zKTsKK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhyYzZwcF9y ZXNpZGVuY3lfbXMpOworc3RhdGljIERFVklDRV9BVFRSX1JPKG1lZGlhX3JjNl9yZXNpZGVuY3lf bXMpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqcmM2X2F0dHJzW10gPSB7CisJ JmRldl9hdHRyX3JjNl9lbmFibGUuYXR0ciwKKwkmZGV2X2F0dHJfcmM2X3Jlc2lkZW5jeV9tcy5h dHRyLAorCU5VTEwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICpyYzZwX2F0 dHJzW10gPSB7CisJJmRldl9hdHRyX3JjNnBfcmVzaWRlbmN5X21zLmF0dHIsCisJJmRldl9hdHRy X3JjNnBwX3Jlc2lkZW5jeV9tcy5hdHRyLAorCU5VTEwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgYXR0cmlidXRlICptZWRpYV9yYzZfYXR0cnNbXSA9IHsKKwkmZGV2X2F0dHJfbWVkaWFfcmM2 X3Jlc2lkZW5jeV9tcy5hdHRyLAorCU5VTEwKK307CisKK3N0YXRpYyB2b2lkIGludGVsX3N5c2Zz X3JjNl9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQorewor CWludCByZXQgPSAwOworCisJaWYgKEhBU19SQzYoZ3QtPmk5MTUpKSB7CisJCXJldCA9IHN5c2Zz X2NyZWF0ZV9maWxlcyhrb2JqLCByYzZfYXR0cnMpOworCQlpZiAocmV0KQorCQkJZHJtX2Vycigm Z3QtPmk5MTUtPmRybSwKKwkJCQkiZmFpbGVkIHRvIGNyZWF0ZSBSQzYgc3lzZnMgZmlsZXNcbiIp OworCX0KKworCWlmIChIQVNfUkM2cChndC0+aTkxNSkpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRl X2ZpbGVzKGtvYmosIHJjNnBfYXR0cnMpOworCQlpZiAocmV0KQorCQkJZHJtX2VycigmZ3QtPmk5 MTUtPmRybSwKKwkJCQkiZmFpbGVkIHRvIGNyZWF0ZSBSQzZwIHN5c2ZzIGZpbGVzXG4iKTsKKwl9 CisKKwlpZiAoSVNfVkFMTEVZVklFVyhndC0+aTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhndC0+aTkx NSkpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGVzKGtvYmosIG1lZGlhX3JjNl9hdHRycyk7 CisJCWlmIChyZXQpCisJCQlkcm1fZXJyKCZndC0+aTkxNS0+ZHJtLAorCQkJCSJmYWlsZWQgdG8g Y3JlYXRlIG1lZGlhIFJDNiBzeXNmcyBmaWxlc1xuIik7CisJfQorfQorI2Vsc2UKK3N0YXRpYyB2 b2lkIGludGVsX3N5c2ZzX3JjNl9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBrb2Jq ZWN0ICprb2JqKQoreworCXJldHVybiAwOworfQorI2VuZGlmIC8qIENPTkZJR19QTSAqLworCitz dGF0aWMgc3NpemVfdCBndF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJ CQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWZmKQoreworCXN0 cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCisJ cmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4iLAorCQkJaW50ZWxfcnBzX3Jl YWRfYWN0dWFsX2ZyZXF1ZW5jeSgmZ3QtPnJwcykpOworfQorCitzdGF0aWMgc3NpemVfdCBndF9j dXJfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWZmKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3Qg PSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF9ycHMgKnJw cyA9ICZndC0+cnBzOworCisJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4i LAorCQkJaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPmN1cl9mcmVxKSk7Cit9CisKK3N0YXRpYyBz c2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAg ICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCSAgICAgIGNoYXIgKmJ1ZmYp Cit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRl dik7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisKKwlyZXR1cm4gc25wcmlu dGYoYnVmZiwgUEFHRV9TSVpFLCAiJWRcbiIsCisJCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+ Ym9vc3RfZnJlcSkpOworfQorCitzdGF0aWMgc3NpemVfdCBndF9ib29zdF9mcmVxX21oel9zdG9y ZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpidWZmLCBzaXplX3QgY291bnQpCit7CisJ c3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7CisJ c3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisJYm9vbCBib29zdCA9IGZhbHNlOwor CXNzaXplX3QgcmV0OworCXUzMiB2YWw7CisKKwlyZXQgPSBrc3RydG91MzIoYnVmZiwgMCwgJnZh bCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIFZhbGlkYXRlIGFnYWluc3QgKHN0 YXRpYykgaGFyZHdhcmUgbGltaXRzICovCisJdmFsID0gaW50ZWxfZnJlcV9vcGNvZGUocnBzLCB2 YWwpOworCWlmICh2YWwgPCBycHMtPm1pbl9mcmVxIHx8IHZhbCA+IHJwcy0+bWF4X2ZyZXEpCisJ CXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmcnBzLT5sb2NrKTsKKwlpZiAodmFsICE9 IHJwcy0+Ym9vc3RfZnJlcSkgeworCQlycHMtPmJvb3N0X2ZyZXEgPSB2YWw7CisJCWJvb3N0ID0g YXRvbWljX3JlYWQoJnJwcy0+bnVtX3dhaXRlcnMpOworCX0KKwltdXRleF91bmxvY2soJnJwcy0+ bG9jayk7CisJaWYgKGJvb3N0KQorCQlzY2hlZHVsZV93b3JrKCZycHMtPndvcmspOworCisJcmV0 dXJuIGNvdW50OworfQorCitzdGF0aWMgc3NpemVfdCB2bHZfcnBlX2ZyZXFfbWh6X3Nob3coc3Ry dWN0IGRldmljZSAqZGV2LAorCQkJCSAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZmYpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dl dF9kcnZkYXRhKGRldik7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisKKwly ZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJWRcbiIsCisJCQlpbnRlbF9ncHVfZnJl cShycHMsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsKK30KKworc3RhdGljIHNzaXplX3QgZ3RfbWF4 X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgICBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkgICAgY2hhciAqYnVmZikKK3sKKwlzdHJ1Y3QgaW50ZWxf Z3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxf cnBzICpycHMgPSAmZ3QtPnJwczsKKworCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUs ICIlZFxuIiwKKwkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQp KTsKK30KKworc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZp Y2UgKmRldiwKKwkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCSAg ICAgY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBpbnRlbF9ndCAq Z3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF9ycHMg KnJwcyA9ICZndC0+cnBzOworCXNzaXplX3QgcmV0OworCXUzMiB2YWw7CisKKwlyZXQgPSBrc3Ry dG91MzIoYnVmZiwgMCwgJnZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCW11dGV4 X2xvY2soJnJwcy0+bG9jayk7CisKKwl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7 CisJaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwKKwkgICAgdmFsID4gcnBzLT5tYXhfZnJlcSB8 fAorCSAgICB2YWwgPCBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCkgeworCQlyZXQgPSAtRUlOVkFM OworCQlnb3RvIHVubG9jazsKKwl9CisKKwlpZiAodmFsID4gcnBzLT5ycDBfZnJlcSkKKwkJRFJN X0RFQlVHKCJVc2VyIHJlcXVlc3RlZCBvdmVyY2xvY2tpbmcgdG8gJWRcbiIsCisJCQkgIGludGVs X2dwdV9mcmVxKHJwcywgdmFsKSk7CisKKwlycHMtPm1heF9mcmVxX3NvZnRsaW1pdCA9IHZhbDsK KworCXZhbCA9IGNsYW1wX3QoaW50LCBycHMtPmN1cl9mcmVxLAorCQkgICAgICBycHMtPm1pbl9m cmVxX3NvZnRsaW1pdCwKKwkJICAgICAgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpOworCisJLyoK KwkgKiBXZSBzdGlsbCBuZWVkICpfc2V0X3JwcyB0byBwcm9jZXNzIHRoZSBuZXcgbWF4X2RlbGF5 IGFuZAorCSAqIHVwZGF0ZSB0aGUgaW50ZXJydXB0IGxpbWl0cyBhbmQgUE1JTlRSTVNLIGV2ZW4g dGhvdWdoCisJICogZnJlcXVlbmN5IHJlcXVlc3QgbWF5IGJlIHVuY2hhbmdlZC4KKwkgKi8KKwlp bnRlbF9ycHNfc2V0KHJwcywgdmFsKTsKKwordW5sb2NrOgorCW11dGV4X3VubG9jaygmcnBzLT5s b2NrKTsKKworCXJldHVybiByZXQgPzogY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGd0X21p bl9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgICAgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJICAgIGNoYXIgKmJ1ZmYpCit7CisJc3RydWN0IGludGVs X2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGludGVs X3JwcyAqcnBzID0gJmd0LT5ycHM7CisKKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpF LCAiJWRcbiIsCisJCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0 KSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2 aWNlICpkZXYsCisJCQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkg ICAgIGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfcnBz ICpycHMgPSAmZ3QtPnJwczsKKwlzc2l6ZV90IHJldDsKKwl1MzIgdmFsOworCisJcmV0ID0ga3N0 cnRvdTMyKGJ1ZmYsIDAsICZ2YWwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwltdXRl eF9sb2NrKCZycHMtPmxvY2spOworCisJdmFsID0gaW50ZWxfZnJlcV9vcGNvZGUocnBzLCB2YWwp OworCWlmICh2YWwgPCBycHMtPm1pbl9mcmVxIHx8CisJICAgIHZhbCA+IHJwcy0+bWF4X2ZyZXEg fHwKKwkgICAgdmFsID4gcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpIHsKKwkJcmV0ID0gLUVJTlZB TDsKKwkJZ290byB1bmxvY2s7CisJfQorCisJcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQgPSB2YWw7 CisKKwl2YWwgPSBjbGFtcF90KGludCwgcnBzLT5jdXJfZnJlcSwKKwkJICAgICAgcnBzLT5taW5f ZnJlcV9zb2Z0bGltaXQsCisJCSAgICAgIHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KTsKKworCS8q CisJICogV2Ugc3RpbGwgbmVlZCAqX3NldF9ycHMgdG8gcHJvY2VzcyB0aGUgbmV3IG1pbl9kZWxh eSBhbmQKKwkgKiB1cGRhdGUgdGhlIGludGVycnVwdCBsaW1pdHMgYW5kIFBNSU5UUk1TSyBldmVu IHRob3VnaAorCSAqIGZyZXF1ZW5jeSByZXF1ZXN0IG1heSBiZSB1bmNoYW5nZWQuCisJICovCisJ aW50ZWxfcnBzX3NldChycHMsIHZhbCk7CisKK3VubG9jazoKKwltdXRleF91bmxvY2soJnJwcy0+ bG9jayk7CisKKwlyZXR1cm4gcmV0ID86IGNvdW50OworfQorCitzdGF0aWMgREVWSUNFX0FUVFJf Uk8oZ3RfYWN0X2ZyZXFfbWh6KTsKK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhndF9jdXJfZnJlcV9t aHopOworc3RhdGljIERFVklDRV9BVFRSX1JXKGd0X2Jvb3N0X2ZyZXFfbWh6KTsKK3N0YXRpYyBE RVZJQ0VfQVRUUl9SVyhndF9tYXhfZnJlcV9taHopOworc3RhdGljIERFVklDRV9BVFRSX1JXKGd0 X21pbl9mcmVxX21oeik7CisKK3N0YXRpYyBERVZJQ0VfQVRUUl9STyh2bHZfcnBlX2ZyZXFfbWh6 KTsKKworc3RhdGljIHNzaXplX3QgZ3RfcnBfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAor CQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICAgICBjaGFyICpi dWZmKTsKKworc3RhdGljIERFVklDRV9BVFRSKGd0X1JQMF9mcmVxX21oeiwgMDQ0NCwgZ3RfcnBf bWh6X3Nob3csIE5VTEwpOworc3RhdGljIERFVklDRV9BVFRSKGd0X1JQMV9mcmVxX21oeiwgMDQ0 NCwgZ3RfcnBfbWh6X3Nob3csIE5VTEwpOworc3RhdGljIERFVklDRV9BVFRSKGd0X1JQbl9mcmVx X21oeiwgMDQ0NCwgZ3RfcnBfbWh6X3Nob3csIE5VTEwpOworCisvKiBGb3Igbm93IHdlIGhhdmUg YSBzdGF0aWMgbnVtYmVyIG9mIFJQIHN0YXRlcyAqLworc3RhdGljIHNzaXplX3QgZ3RfcnBfbWh6 X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsCisJCQkgICAgICBjaGFyICpidWZmKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3Qg PSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF9ycHMgKnJw cyA9ICZndC0+cnBzOworCXUzMiB2YWw7CisKKwlpZiAoYXR0ciA9PSAmZGV2X2F0dHJfZ3RfUlAw X2ZyZXFfbWh6KQorCQl2YWwgPSBpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+cnAwX2ZyZXEpOwor CWVsc2UgaWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQMV9mcmVxX21oeikKKwkJdmFsID0gaW50 ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPnJwMV9mcmVxKTsKKwllbHNlIGlmIChhdHRyID09ICZkZXZf YXR0cl9ndF9SUG5fZnJlcV9taHopCisJCXZhbCA9IGludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5t aW5fZnJlcSk7CisJZWxzZQorCQlCVUcoKTsKKworCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdF X1NJWkUsICIlZFxuIiwgdmFsKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUg KiBjb25zdCBnZW42X2F0dHJzW10gPSB7CisJJmRldl9hdHRyX2d0X2FjdF9mcmVxX21oei5hdHRy LAorCSZkZXZfYXR0cl9ndF9jdXJfZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfZ3RfYm9vc3Rf ZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfZ3RfbWF4X2ZyZXFfbWh6LmF0dHIsCisJJmRldl9h dHRyX2d0X21pbl9mcmVxX21oei5hdHRyLAorCSZkZXZfYXR0cl9ndF9SUDBfZnJlcV9taHouYXR0 ciwKKwkmZGV2X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6LmF0dHIsCisJJmRldl9hdHRyX2d0X1JQbl9m cmVxX21oei5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0 ZSAqIGNvbnN0IHZsdl9hdHRyc1tdID0geworCSZkZXZfYXR0cl9ndF9hY3RfZnJlcV9taHouYXR0 ciwKKwkmZGV2X2F0dHJfZ3RfY3VyX2ZyZXFfbWh6LmF0dHIsCisJJmRldl9hdHRyX2d0X2Jvb3N0 X2ZyZXFfbWh6LmF0dHIsCisJJmRldl9hdHRyX2d0X21heF9mcmVxX21oei5hdHRyLAorCSZkZXZf YXR0cl9ndF9taW5fZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfZ3RfUlAwX2ZyZXFfbWh6LmF0 dHIsCisJJmRldl9hdHRyX2d0X1JQMV9mcmVxX21oei5hdHRyLAorCSZkZXZfYXR0cl9ndF9SUG5f ZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfdmx2X3JwZV9mcmVxX21oei5hdHRyLAorCU5VTEws Cit9OworCitzdGF0aWMgaW50IGludGVsX3N5c2ZzX3Jwc19pbml0KHN0cnVjdCBpbnRlbF9ndCAq Z3QsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQoreworCWlmIChJU19WQUxMRVlWSUVXKGd0LT5pOTE1 KSB8fCBJU19DSEVSUllWSUVXKGd0LT5pOTE1KSkKKwkJcmV0dXJuIHN5c2ZzX2NyZWF0ZV9maWxl cyhrb2JqLCB2bHZfYXR0cnMpOworCisJaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gNikKKwkJ cmV0dXJuIHN5c2ZzX2NyZWF0ZV9maWxlcyhrb2JqLCBnZW42X2F0dHJzKTsKKworCXJldHVybiAw OworfQorCit2b2lkIGludGVsX2d0X3N5c2ZzX3BtX2luaXQoc3RydWN0IGludGVsX2d0ICpndCwg c3RydWN0IGtvYmplY3QgKmtvYmopCit7CisJaW50IHJldDsKKworCWludGVsX3N5c2ZzX3JjNl9p bml0KGd0LCBrb2JqKTsKKworCXJldCA9IGludGVsX3N5c2ZzX3Jwc19pbml0KGd0LCBrb2JqKTsK KwlpZiAocmV0KQorCQlkcm1fZXJyKCZndC0+aTkxNS0+ZHJtLCAiZmFpbGVkIHRvIGNyZWF0ZSBS UFMgc3lzZnMgZmlsZXMiKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3N5c2ZzX2d0X3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzU4ZDBjM2NiOTk4Ci0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uaApAQCAt MCwwICsxLDE3IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUICovCisKKy8qCisg KiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgU1lT RlNfUkM2X0gKKyNkZWZpbmUgU1lTRlNfUkM2X0gKKworI2luY2x1ZGUgPGxpbnV4L2tvYmplY3Qu aD4KKworI2luY2x1ZGUgImludGVsX2d0X3R5cGVzLmgiCisKK3ZvaWQgaW50ZWxfZ3Rfc3lzZnNf cG1faW5pdChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3Qga29iamVjdCAqa29iaik7Cit2b2lk IGludGVsX2d0X3N5c2ZzX3BtX3JlbW92ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3Qga29i amVjdCAqa29iaik7CisKKyNlbmRpZiAvKiBTWVNGU19SQzZfSCAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zeXNmcy5jCmluZGV4IGMxNGQ3NjJiZDY1Mi4uMTI5ODk3N2ZjMDhiIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zeXNmcy5jCkBAIC0zOCwxMTMgKzM4LDEyIEBACiAjaW5jbHVkZSAiaW50ZWxfcG0u aCIKICNpbmNsdWRlICJpbnRlbF9zaWRlYmFuZC5oIgogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICprZGV2X21pbm9yX3RvX2k5MTUoc3RydWN0IGRldmljZSAqa2RldikK K3N0cnVjdCBkcm1faTkxNV9wcml2YXRlICprZGV2X21pbm9yX3RvX2k5MTUoc3RydWN0IGRldmlj ZSAqa2RldikKIHsKIAlzdHJ1Y3QgZHJtX21pbm9yICptaW5vciA9IGRldl9nZXRfZHJ2ZGF0YShr ZGV2KTsKIAlyZXR1cm4gdG9faTkxNShtaW5vci0+ZGV2KTsKIH0KIAotI2lmZGVmIENPTkZJR19Q TQotc3RhdGljIHUzMiBjYWxjX3Jlc2lkZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCi0JCQkgIGk5MTVfcmVnX3QgcmVnKQotewotCWludGVsX3dha2VyZWZfdCB3YWtlcmVm OwotCXU2NCByZXMgPSAwOwotCi0Jd2l0aF9pbnRlbF9ydW50aW1lX3BtKCZkZXZfcHJpdi0+cnVu dGltZV9wbSwgd2FrZXJlZikKLQkJcmVzID0gaW50ZWxfcmM2X3Jlc2lkZW5jeV91cygmZGV2X3By aXYtPmd0LnJjNiwgcmVnKTsKLQotCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVF9VTEwocmVzLCAx MDAwKTsKLX0KLQotc3RhdGljIHNzaXplX3QKLXNob3dfcmM2X21hc2soc3RydWN0IGRldmljZSAq a2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7 Ci0JdW5zaWduZWQgaW50IG1hc2s7Ci0KLQltYXNrID0gMDsKLQlpZiAoSEFTX1JDNihkZXZfcHJp dikpCi0JCW1hc2sgfD0gQklUKDApOwotCWlmIChIQVNfUkM2cChkZXZfcHJpdikpCi0JCW1hc2sg fD0gQklUKDEpOwotCWlmIChIQVNfUkM2cHAoZGV2X3ByaXYpKQotCQltYXNrIHw9IEJJVCgyKTsK LQotCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiV4XG4iLCBtYXNrKTsKLX0KLQot c3RhdGljIHNzaXplX3QKLXNob3dfcmM2X21zKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwotCXUzMiByYzZfcmVz aWRlbmN5ID0gY2FsY19yZXNpZGVuY3koZGV2X3ByaXYsIEdFTjZfR1RfR0ZYX1JDNik7Ci0JcmV0 dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNl9yZXNpZGVuY3kpOwotfQot Ci1zdGF0aWMgc3NpemVfdAotc2hvd19yYzZwX21zKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwotCXUzMiByYzZw X3Jlc2lkZW5jeSA9IGNhbGNfcmVzaWRlbmN5KGRldl9wcml2LCBHRU42X0dUX0dGWF9SQzZwKTsK LQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIldVxuIiwgcmM2cF9yZXNpZGVuY3kp OwotfQotCi1zdGF0aWMgc3NpemVfdAotc2hvd19yYzZwcF9tcyhzdHJ1Y3QgZGV2aWNlICprZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKLQl1 MzIgcmM2cHBfcmVzaWRlbmN5ID0gY2FsY19yZXNpZGVuY3koZGV2X3ByaXYsIEdFTjZfR1RfR0ZY X1JDNnBwKTsKLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIldVxuIiwgcmM2cHBf cmVzaWRlbmN5KTsKLX0KLQotc3RhdGljIHNzaXplX3QKLXNob3dfbWVkaWFfcmM2X21zKHN0cnVj dCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYp Ci17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19p OTE1KGtkZXYpOwotCXUzMiByYzZfcmVzaWRlbmN5ID0gY2FsY19yZXNpZGVuY3koZGV2X3ByaXYs IFZMVl9HVF9NRURJQV9SQzYpOwotCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiV1 XG4iLCByYzZfcmVzaWRlbmN5KTsKLX0KLQotc3RhdGljIERFVklDRV9BVFRSKHJjNl9lbmFibGUs IFNfSVJVR08sIHNob3dfcmM2X21hc2ssIE5VTEwpOwotc3RhdGljIERFVklDRV9BVFRSKHJjNl9y ZXNpZGVuY3lfbXMsIFNfSVJVR08sIHNob3dfcmM2X21zLCBOVUxMKTsKLXN0YXRpYyBERVZJQ0Vf QVRUUihyYzZwX3Jlc2lkZW5jeV9tcywgU19JUlVHTywgc2hvd19yYzZwX21zLCBOVUxMKTsKLXN0 YXRpYyBERVZJQ0VfQVRUUihyYzZwcF9yZXNpZGVuY3lfbXMsIFNfSVJVR08sIHNob3dfcmM2cHBf bXMsIE5VTEwpOwotc3RhdGljIERFVklDRV9BVFRSKG1lZGlhX3JjNl9yZXNpZGVuY3lfbXMsIFNf SVJVR08sIHNob3dfbWVkaWFfcmM2X21zLCBOVUxMKTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1 dGUgKnJjNl9hdHRyc1tdID0gewotCSZkZXZfYXR0cl9yYzZfZW5hYmxlLmF0dHIsCi0JJmRldl9h dHRyX3JjNl9yZXNpZGVuY3lfbXMuYXR0ciwKLQlOVUxMCi19OwotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGF0dHJpYnV0ZV9ncm91cCByYzZfYXR0cl9ncm91cCA9IHsKLQkubmFtZSA9IHBvd2VyX2dy b3VwX25hbWUsCi0JLmF0dHJzID0gIHJjNl9hdHRycwotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGUgKnJjNnBfYXR0cnNbXSA9IHsKLQkmZGV2X2F0dHJfcmM2cF9yZXNpZGVuY3lfbXMuYXR0 ciwKLQkmZGV2X2F0dHJfcmM2cHBfcmVzaWRlbmN5X21zLmF0dHIsCi0JTlVMTAotfTsKLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcmM2cF9hdHRyX2dyb3VwID0gewotCS5u YW1lID0gcG93ZXJfZ3JvdXBfbmFtZSwKLQkuYXR0cnMgPSAgcmM2cF9hdHRycwotfTsKLQotc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGUgKm1lZGlhX3JjNl9hdHRyc1tdID0gewotCSZkZXZfYXR0cl9t ZWRpYV9yYzZfcmVzaWRlbmN5X21zLmF0dHIsCi0JTlVMTAotfTsKLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbWVkaWFfcmM2X2F0dHJfZ3JvdXAgPSB7Ci0JLm5hbWUgPSBw b3dlcl9ncm91cF9uYW1lLAotCS5hdHRycyA9ICBtZWRpYV9yYzZfYXR0cnMKLX07Ci0jZW5kaWYK LQogc3RhdGljIGludCBsM19hY2Nlc3NfdmFsaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIGxvZmZfdCBvZmZzZXQpCiB7CiAJaWYgKCFIQVNfTDNfRFBGKGk5MTUpKQpAQCAtMjU2LDIz OSArMTU1LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiaW5fYXR0cmlidXRlIGRwZl9hdHRyc18x ID0gewogCS5wcml2YXRlID0gKHZvaWQgKikxCiB9OwogCi1zdGF0aWMgc3NpemVfdCBndF9hY3Rf ZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAotCQkJCSAgICBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwotCXN0cnVjdCBpbnRlbF9ycHMgKnJw cyA9ICZpOTE1LT5ndC5ycHM7Ci0KLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIl ZFxuIiwKLQkJCWludGVsX3Jwc19yZWFkX2FjdHVhbF9mcmVxdWVuY3kocnBzKSk7Ci19Ci0KLXN0 YXRpYyBzc2l6ZV90IGd0X2N1cl9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCi0J CQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Ci0J c3RydWN0IGludGVsX3JwcyAqcnBzID0gJmk5MTUtPmd0LnJwczsKLQotCXJldHVybiBzbnByaW50 ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAotCQkJaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPmN1 cl9mcmVxKSk7Ci19Ci0KLXN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3Nob3coc3Ry dWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGtkZXZfbWlub3JfdG9faTkx NShrZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmaTkxNS0+Z3QucnBzOwotCi0JcmV0 dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCi0JCQlpbnRlbF9ncHVfZnJlcShy cHMsIHJwcy0+Ym9vc3RfZnJlcSkpOwotfQotCi1zdGF0aWMgc3NpemVfdCBndF9ib29zdF9mcmVx X21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2LAotCQkJCSAgICAgICBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwKLQkJCQkgICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291 bnQpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90 b19pOTE1KGtkZXYpOwotCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3QucnBz OwotCWJvb2wgYm9vc3QgPSBmYWxzZTsKLQlzc2l6ZV90IHJldDsKLQl1MzIgdmFsOwotCi0JcmV0 ID0ga3N0cnRvdTMyKGJ1ZiwgMCwgJnZhbCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQot CS8qIFZhbGlkYXRlIGFnYWluc3QgKHN0YXRpYykgaGFyZHdhcmUgbGltaXRzICovCi0JdmFsID0g aW50ZWxfZnJlcV9vcGNvZGUocnBzLCB2YWwpOwotCWlmICh2YWwgPCBycHMtPm1pbl9mcmVxIHx8 IHZhbCA+IHJwcy0+bWF4X2ZyZXEpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JbXV0ZXhfbG9jaygm cnBzLT5sb2NrKTsKLQlpZiAodmFsICE9IHJwcy0+Ym9vc3RfZnJlcSkgewotCQlycHMtPmJvb3N0 X2ZyZXEgPSB2YWw7Ci0JCWJvb3N0ID0gYXRvbWljX3JlYWQoJnJwcy0+bnVtX3dhaXRlcnMpOwot CX0KLQltdXRleF91bmxvY2soJnJwcy0+bG9jayk7Ci0JaWYgKGJvb3N0KQotCQlzY2hlZHVsZV93 b3JrKCZycHMtPndvcmspOwotCi0JcmV0dXJuIGNvdW50OwotfQotCi1zdGF0aWMgc3NpemVfdCB2 bHZfcnBlX2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2RldiwKLQkJCQkgICAgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwotCXN0cnVjdCBp bnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3QucnBzOwotCi0JcmV0dXJuIHNucHJpbnRmKGJ1 ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCi0JCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+ZWZmaWNp ZW50X2ZyZXEpKTsKLX0KLQotc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3Nob3coc3Ry dWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3Rv X2k5MTUoa2Rldik7Ci0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndC5ycHM7 Ci0KLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwKLQkJCWludGVsX2dw dV9mcmVxKHJwcywgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpKTsKLX0KLQotc3RhdGljIHNzaXpl X3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCi0JCQkJICAgICBz dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKLQkJCQkgICAgIGNvbnN0IGNoYXIgKmJ1Ziwg c2l6ZV90IGNvdW50KQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtk ZXZfbWlub3JfdG9faTkxNShrZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3By aXYtPmd0LnJwczsKLQlzc2l6ZV90IHJldDsKLQl1MzIgdmFsOwotCi0JcmV0ID0ga3N0cnRvdTMy KGJ1ZiwgMCwgJnZhbCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCW11dGV4X2xvY2so JnJwcy0+bG9jayk7Ci0KLQl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7Ci0JaWYg KHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwKLQkgICAgdmFsID4gcnBzLT5tYXhfZnJlcSB8fAotCSAg ICB2YWwgPCBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCkgewotCQlyZXQgPSAtRUlOVkFMOwotCQln b3RvIHVubG9jazsKLQl9Ci0KLQlpZiAodmFsID4gcnBzLT5ycDBfZnJlcSkKLQkJRFJNX0RFQlVH KCJVc2VyIHJlcXVlc3RlZCBvdmVyY2xvY2tpbmcgdG8gJWRcbiIsCi0JCQkgIGludGVsX2dwdV9m cmVxKHJwcywgdmFsKSk7Ci0KLQlycHMtPm1heF9mcmVxX3NvZnRsaW1pdCA9IHZhbDsKLQotCXZh bCA9IGNsYW1wX3QoaW50LCBycHMtPmN1cl9mcmVxLAotCQkgICAgICBycHMtPm1pbl9mcmVxX3Nv ZnRsaW1pdCwKLQkJICAgICAgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpOwotCi0JLyoKLQkgKiBX ZSBzdGlsbCBuZWVkICpfc2V0X3JwcyB0byBwcm9jZXNzIHRoZSBuZXcgbWF4X2RlbGF5IGFuZAot CSAqIHVwZGF0ZSB0aGUgaW50ZXJydXB0IGxpbWl0cyBhbmQgUE1JTlRSTVNLIGV2ZW4gdGhvdWdo Ci0JICogZnJlcXVlbmN5IHJlcXVlc3QgbWF5IGJlIHVuY2hhbmdlZC4KLQkgKi8KLQlpbnRlbF9y cHNfc2V0KHJwcywgdmFsKTsKLQotdW5sb2NrOgotCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsK LQotCXJldHVybiByZXQgPzogY291bnQ7Ci19Ci0KLXN0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVx X21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g a2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwotCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZf cHJpdi0+Z3QucnBzOwotCi0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIs Ci0JCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0KSk7Ci19Ci0K LXN0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21oel9zdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2 LAotCQkJCSAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCi0JCQkJICAgICBjb25z dCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Ci0Jc3RydWN0IGludGVsX3JwcyAq cnBzID0gJmRldl9wcml2LT5ndC5ycHM7Ci0Jc3NpemVfdCByZXQ7Ci0JdTMyIHZhbDsKLQotCXJl dCA9IGtzdHJ0b3UzMihidWYsIDAsICZ2YWwpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0K LQltdXRleF9sb2NrKCZycHMtPmxvY2spOwotCi0JdmFsID0gaW50ZWxfZnJlcV9vcGNvZGUocnBz LCB2YWwpOwotCWlmICh2YWwgPCBycHMtPm1pbl9mcmVxIHx8Ci0JICAgIHZhbCA+IHJwcy0+bWF4 X2ZyZXEgfHwKLQkgICAgdmFsID4gcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpIHsKLQkJcmV0ID0g LUVJTlZBTDsKLQkJZ290byB1bmxvY2s7Ci0JfQotCi0JcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQg PSB2YWw7Ci0KLQl2YWwgPSBjbGFtcF90KGludCwgcnBzLT5jdXJfZnJlcSwKLQkJICAgICAgcnBz LT5taW5fZnJlcV9zb2Z0bGltaXQsCi0JCSAgICAgIHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KTsK LQotCS8qCi0JICogV2Ugc3RpbGwgbmVlZCAqX3NldF9ycHMgdG8gcHJvY2VzcyB0aGUgbmV3IG1p bl9kZWxheSBhbmQKLQkgKiB1cGRhdGUgdGhlIGludGVycnVwdCBsaW1pdHMgYW5kIFBNSU5UUk1T SyBldmVuIHRob3VnaAotCSAqIGZyZXF1ZW5jeSByZXF1ZXN0IG1heSBiZSB1bmNoYW5nZWQuCi0J ICovCi0JaW50ZWxfcnBzX3NldChycHMsIHZhbCk7Ci0KLXVubG9jazoKLQltdXRleF91bmxvY2so JnJwcy0+bG9jayk7Ci0KLQlyZXR1cm4gcmV0ID86IGNvdW50OwotfQotCi1zdGF0aWMgREVWSUNF X0FUVFJfUk8oZ3RfYWN0X2ZyZXFfbWh6KTsKLXN0YXRpYyBERVZJQ0VfQVRUUl9STyhndF9jdXJf ZnJlcV9taHopOwotc3RhdGljIERFVklDRV9BVFRSX1JXKGd0X2Jvb3N0X2ZyZXFfbWh6KTsKLXN0 YXRpYyBERVZJQ0VfQVRUUl9SVyhndF9tYXhfZnJlcV9taHopOwotc3RhdGljIERFVklDRV9BVFRS X1JXKGd0X21pbl9mcmVxX21oeik7Ci0KLXN0YXRpYyBERVZJQ0VfQVRUUl9STyh2bHZfcnBlX2Zy ZXFfbWh6KTsKLQotc3RhdGljIHNzaXplX3QgZ3RfcnBfbWh6X3Nob3coc3RydWN0IGRldmljZSAq a2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zik7Ci1zdGF0aWMg REVWSUNFX0FUVFIoZ3RfUlAwX2ZyZXFfbWh6LCBTX0lSVUdPLCBndF9ycF9taHpfc2hvdywgTlVM TCk7Ci1zdGF0aWMgREVWSUNFX0FUVFIoZ3RfUlAxX2ZyZXFfbWh6LCBTX0lSVUdPLCBndF9ycF9t aHpfc2hvdywgTlVMTCk7Ci1zdGF0aWMgREVWSUNFX0FUVFIoZ3RfUlBuX2ZyZXFfbWh6LCBTX0lS VUdPLCBndF9ycF9taHpfc2hvdywgTlVMTCk7Ci0KLS8qIEZvciBub3cgd2UgaGF2ZSBhIHN0YXRp YyBudW1iZXIgb2YgUlAgc3RhdGVzICovCi1zdGF0aWMgc3NpemVfdCBndF9ycF9taHpfc2hvdyhz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3Jf dG9faTkxNShrZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0LnJw czsKLQl1MzIgdmFsOwotCi0JaWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQMF9mcmVxX21oeikK LQkJdmFsID0gaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPnJwMF9mcmVxKTsKLQllbHNlIGlmIChh dHRyID09ICZkZXZfYXR0cl9ndF9SUDFfZnJlcV9taHopCi0JCXZhbCA9IGludGVsX2dwdV9mcmVx KHJwcywgcnBzLT5ycDFfZnJlcSk7Ci0JZWxzZSBpZiAoYXR0ciA9PSAmZGV2X2F0dHJfZ3RfUlBu X2ZyZXFfbWh6KQotCQl2YWwgPSBpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+bWluX2ZyZXEpOwot CWVsc2UKLQkJQlVHKCk7Ci0KLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxu IiwgdmFsKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKiBjb25zdCBnZW42 X2F0dHJzW10gPSB7Ci0JJmRldl9hdHRyX2d0X2FjdF9mcmVxX21oei5hdHRyLAotCSZkZXZfYXR0 cl9ndF9jdXJfZnJlcV9taHouYXR0ciwKLQkmZGV2X2F0dHJfZ3RfYm9vc3RfZnJlcV9taHouYXR0 ciwKLQkmZGV2X2F0dHJfZ3RfbWF4X2ZyZXFfbWh6LmF0dHIsCi0JJmRldl9hdHRyX2d0X21pbl9m cmVxX21oei5hdHRyLAotCSZkZXZfYXR0cl9ndF9SUDBfZnJlcV9taHouYXR0ciwKLQkmZGV2X2F0 dHJfZ3RfUlAxX2ZyZXFfbWh6LmF0dHIsCi0JJmRldl9hdHRyX2d0X1JQbl9mcmVxX21oei5hdHRy LAotCU5VTEwsCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGNvbnN0IHZs dl9hdHRyc1tdID0gewotCSZkZXZfYXR0cl9ndF9hY3RfZnJlcV9taHouYXR0ciwKLQkmZGV2X2F0 dHJfZ3RfY3VyX2ZyZXFfbWh6LmF0dHIsCi0JJmRldl9hdHRyX2d0X2Jvb3N0X2ZyZXFfbWh6LmF0 dHIsCi0JJmRldl9hdHRyX2d0X21heF9mcmVxX21oei5hdHRyLAotCSZkZXZfYXR0cl9ndF9taW5f ZnJlcV9taHouYXR0ciwKLQkmZGV2X2F0dHJfZ3RfUlAwX2ZyZXFfbWh6LmF0dHIsCi0JJmRldl9h dHRyX2d0X1JQMV9mcmVxX21oei5hdHRyLAotCSZkZXZfYXR0cl9ndF9SUG5fZnJlcV9taHouYXR0 ciwKLQkmZGV2X2F0dHJfdmx2X3JwZV9mcmVxX21oei5hdHRyLAotCU5VTEwsCi19OwotCiAjaWYg SVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfQ0FQVFVSRV9FUlJPUikKIAogc3RhdGljIHNzaXpl X3QgZXJyb3Jfc3RhdGVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGtvYmplY3QgKmtv YmosCkBAIC01NTksMjkgKzIyNSw2IEBAIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGRldmljZSAqa2RldiA9IGRldl9wcml2 LT5kcm0ucHJpbWFyeS0+a2RldjsKIAlpbnQgcmV0OwogCi0jaWZkZWYgQ09ORklHX1BNCi0JaWYg KEhBU19SQzYoZGV2X3ByaXYpKSB7Ci0JCXJldCA9IHN5c2ZzX21lcmdlX2dyb3VwKCZrZGV2LT5r b2JqLAotCQkJCQkmcmM2X2F0dHJfZ3JvdXApOwotCQlpZiAocmV0KQotCQkJZHJtX2VycigmZGV2 X3ByaXYtPmRybSwKLQkJCQkiUkM2IHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwot CX0KLQlpZiAoSEFTX1JDNnAoZGV2X3ByaXYpKSB7Ci0JCXJldCA9IHN5c2ZzX21lcmdlX2dyb3Vw KCZrZGV2LT5rb2JqLAotCQkJCQkmcmM2cF9hdHRyX2dyb3VwKTsKLQkJaWYgKHJldCkKLQkJCWRy bV9lcnIoJmRldl9wcml2LT5kcm0sCi0JCQkJIlJDNnAgcmVzaWRlbmN5IHN5c2ZzIHNldHVwIGZh aWxlZFxuIik7Ci0JfQotCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllW SUVXKGRldl9wcml2KSkgewotCQlyZXQgPSBzeXNmc19tZXJnZV9ncm91cCgma2Rldi0+a29iaiwK LQkJCQkJJm1lZGlhX3JjNl9hdHRyX2dyb3VwKTsKLQkJaWYgKHJldCkKLQkJCWRybV9lcnIoJmRl dl9wcml2LT5kcm0sCi0JCQkJIk1lZGlhIFJDNiByZXNpZGVuY3kgc3lzZnMgc2V0dXAgZmFpbGVk XG4iKTsKLQl9Ci0jZW5kaWYKIAlpZiAoSEFTX0wzX0RQRihkZXZfcHJpdikpIHsKIAkJcmV0ID0g ZGV2aWNlX2NyZWF0ZV9iaW5fZmlsZShrZGV2LCAmZHBmX2F0dHJzKTsKIAkJaWYgKHJldCkKQEAg LTU5NywxNCArMjQwLDYgQEAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAkJfQogCX0KIAotCXJldCA9IDA7Ci0JaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQotCQlyZXQgPSBzeXNmc19j cmVhdGVfZmlsZXMoJmtkZXYtPmtvYmosIHZsdl9hdHRycyk7Ci0JZWxzZSBpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA2KQotCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMoJmtkZXYtPmtvYmos IGdlbjZfYXR0cnMpOwotCWlmIChyZXQpCi0JCWRybV9lcnIoJmRldl9wcml2LT5kcm0sICJSUFMg c3lzZnMgc2V0dXAgZmFpbGVkXG4iKTsKLQogCWk5MTVfc2V0dXBfZXJyb3JfY2FwdHVyZShrZGV2 KTsKIH0KIApAQCAtNjE0LDE0ICsyNDksNiBAQCB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJaTkxNV90ZWFyZG93bl9lcnJvcl9j YXB0dXJlKGtkZXYpOwogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpKQotCQlzeXNmc19yZW1vdmVfZmlsZXMoJmtkZXYtPmtvYmosIHZsdl9h dHRycyk7Ci0JZWxzZQotCQlzeXNmc19yZW1vdmVfZmlsZXMoJmtkZXYtPmtvYmosIGdlbjZfYXR0 cnMpOwogCWRldmljZV9yZW1vdmVfYmluX2ZpbGUoa2RldiwgICZkcGZfYXR0cnNfMSk7CiAJZGV2 aWNlX3JlbW92ZV9iaW5fZmlsZShrZGV2LCAgJmRwZl9hdHRycyk7Ci0jaWZkZWYgQ09ORklHX1BN Ci0Jc3lzZnNfdW5tZXJnZV9ncm91cCgma2Rldi0+a29iaiwgJnJjNl9hdHRyX2dyb3VwKTsKLQlz eXNmc191bm1lcmdlX2dyb3VwKCZrZGV2LT5rb2JqLCAmcmM2cF9hdHRyX2dyb3VwKTsKLSNlbmRp ZgogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5oCmluZGV4IDQxYWZkNDM2NjQxNi4uYWQ2MTE0 ZGU4MWM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5oCkBAIC02LDggKzYsMTEgQEAKICNp Zm5kZWYgX19JOTE1X1NZU0ZTX0hfXwogI2RlZmluZSBfX0k5MTVfU1lTRlNfSF9fCiAKKyNpbmNs dWRlIDxsaW51eC9kZXZpY2UuaD4KKwogc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7CiAKK3N0cnVj dCBkcm1faTkxNV9wcml2YXRlICprZGV2X21pbm9yX3RvX2k5MTUoc3RydWN0IGRldmljZSAqa2Rl dik7CiB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Owogdm9pZCBpOTE1X3RlYXJkb3duX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKIAotLSAKMi4yNS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK