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.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 6B6E6C2BA83 for ; Fri, 14 Feb 2020 11:03:18 +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 23C652168B for ; Fri, 14 Feb 2020 11:03:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 23C652168B 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 A73336E16D; Fri, 14 Feb 2020 11:03:17 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 475666E16D for ; Fri, 14 Feb 2020 11:03:16 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Feb 2020 03:03:15 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,440,1574150400"; d="scan'208";a="267520274" Received: from aquilante.fi.intel.com (HELO teofilatto.example.org) ([10.237.72.158]) by fmsmga002.fm.intel.com with ESMTP; 14 Feb 2020 03:03:13 -0800 From: Andi Shyti To: Intel GFX Date: Fri, 14 Feb 2020 13:03:08 +0200 Message-Id: <20200214110308.2268-1-andi.shyti@intel.com> X-Mailer: git-send-email 2.25.0 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH] 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 CgpTaWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxhbmRpLnNoeXRpQGludGVsLmNvbT4KLS0tCkhp LAoKdGhpcyB2ZXJzaW9uIGhhcyBzb21lIG1vcmUgc3Vic3RhbnRpYWwgZGlmZmVyZW5jZXMsIG5v dGhpbmcgdGhhdApjaGFuZ2VzIHRoZSB3YW50ZWQgYmVoYXZpb3IsIHRob3VnaC4KClRoYW5rcyBD aHJpcywgSmFuaSBhbmQgVHZydGtvIGZvciB0aGUgcmV2aWV3cywKQW5kaQoKQ2hhbmdlbG9nOgo9 PT09PT09PT09Cgp2MiAtPiB2MzoKIC0gZml4IHNvbWUgY2xlYW51cHMgdGhhdCBJIGZvcmdvdCBp biB0aGUgcHJldmlvdXMgcGF0Y2gKIC0gZml4IHJlZmVyZW5jZSBwb2ludGVycyB0byB0aGUgZ3Qg c3RydWN0dXJlCiAtIGFuZCBtYW55IG90aGVyIHNtYWxsIGNoYW5nZXMgaGVyZSBhbmQgdGhlcmUu CnYxIC0+IHYyOgogLSBrZWVwIHRoZSBleGlzdGluZyBmaWxlcyBhcyB0aGV5IGFyZQogLSB1c2Ug ImludGVsX2d0XyoiIGFzIHByZWZpeCBpbnN0ZWFkIG9mICJzeXNmc18qIgoKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0LmMgICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZ3RfdHlwZXMuaCB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19n dC5jICAgICAgIHwgIDg1ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5o ICAgICAgIHwgIDIyICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5jICAg IHwgNDQ2ICsrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z eXNmc19ndF9wbS5oICAgIHwgIDE3ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMu YyAgICAgICAgfCAzNzUgKy0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zeXNmcy5oICAgICAgICB8ICAgMyArCiA5IGZpbGVzIGNoYW5nZWQsIDU4MSBpbnNlcnRp b25zKCspLCAzNzUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3N5c2ZzX2d0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zeXNmc19ndF9wbS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggNDllZWQ1MGVm MGE0Li4zYjgxYzhhOTZjMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0xMDYsNyArMTA2LDkg QEAgZ3QteSArPSBcCiAJZ3QvaW50ZWxfcnBzLm8gXAogCWd0L2ludGVsX3NzZXUubyBcCiAJZ3Qv aW50ZWxfdGltZWxpbmUubyBcCi0JZ3QvaW50ZWxfd29ya2Fyb3VuZHMubworCWd0L2ludGVsX3dv cmthcm91bmRzLm8gXAorCWd0L3N5c2ZzX2d0Lm8gXAorCWd0L3N5c2ZzX2d0X3BtLm8KICMgYXV0 b2dlbmVyYXRlZCBudWxsIHJlbmRlciBzdGF0ZQogZ3QteSArPSBcCiAJZ3QvZ2VuNl9yZW5kZXJz dGF0ZS5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jCmluZGV4IGYxZjFiMzA2ZTBhZi4u ZTc5NGQwNWQ2OWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9n dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKQEAgLTE1LDYgKzE1 LDcgQEAKICNpbmNsdWRlICJpbnRlbF9ycHMuaCIKICNpbmNsdWRlICJpbnRlbF91bmNvcmUuaCIK ICNpbmNsdWRlICJpbnRlbF9wbS5oIgorI2luY2x1ZGUgInN5c2ZzX2d0LmgiCiAKIHZvaWQgaW50 ZWxfZ3RfaW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKIHsKQEAgLTMyMSw2ICszMjIsNyBAQCB2b2lkIGludGVsX2d0X2RyaXZlcl9y ZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCWludGVsX3Jwc19kcml2ZXJfcmVnaXN0ZXIo Jmd0LT5ycHMpOwogCiAJZGVidWdmc19ndF9yZWdpc3RlcihndCk7CisJaW50ZWxfZ3Rfc3lzZnNf cmVnaXN0ZXIoZ3QpOwogfQogCiBzdGF0aWMgaW50IGludGVsX2d0X2luaXRfc2NyYXRjaChzdHJ1 Y3QgaW50ZWxfZ3QgKmd0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKQEAgLTY0MSw2ICs2NDMsNyBAQCB2 b2lkIGludGVsX2d0X2RyaXZlcl9yZW1vdmUoc3RydWN0IGludGVsX2d0ICpndCkKIAogdm9pZCBp bnRlbF9ndF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogeworCWludGVs X2d0X3N5c2ZzX3VucmVnaXN0ZXIoZ3QpOwogCWludGVsX3Jwc19kcml2ZXJfdW5yZWdpc3Rlcigm Z3QtPnJwcyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCmlu ZGV4IDk2ODkwZGQxMmI1Zi4uNTUyYTI3Y2MwNjIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2d0X3R5cGVzLmgKQEAgLTMyLDYgKzMyLDcgQEAgc3RydWN0IGludGVsX2d0IHsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmU7CiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dDsKKwlzdHJ1Y3Qga29iamVjdCBrb2JqOwogCiAJ c3RydWN0IGludGVsX3VjIHVjOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zeXNmc19ndC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRjYTE0MGZjMjE1ZgotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmMKQEAgLTAsMCArMSw4 NSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorCisvKgorICogQ29weXJpZ2h0 IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSA8bGludXgvc3lzZnMu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tvYmplY3Qu aD4KKyNpbmNsdWRlIDxsaW51eC9wcmludGsuaD4KKworI2luY2x1ZGUgIi4uL2k5MTVfZHJ2Lmgi CisjaW5jbHVkZSAiaW50ZWxfZ3QuaCIKKyNpbmNsdWRlICJpbnRlbF9ndF90eXBlcy5oIgorI2lu Y2x1ZGUgImludGVsX3JjNi5oIgorCisjaW5jbHVkZSAic3lzZnNfZ3QuaCIKKyNpbmNsdWRlICJz eXNmc19ndF9wbS5oIgorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBrb2JqZWN0ICpndF90b19wYXJl bnRfb2JqKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCit7CisJcmV0dXJuIGtvYmplY3RfZ2V0KCZndC0+ aTkxNS0+ZHJtLnByaW1hcnktPmtkZXYtPmtvYmopOworfQorCitzdGF0aWMgc3NpemVfdCBndF9p bmZvX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLAorCQkJICAgIGNoYXIgKmJ1ZmYpCit7CisJcmV0dXJuIHNucHJpbnRmKGJ1ZmYs IFBBR0VfU0laRSwgIjBcbiIpOworfQorCitzdGF0aWMgREVWSUNFX0FUVFJfUk8oZ3RfaW5mbyk7 CisKK3N0YXRpYyB2b2lkIHN5c2ZzX2d0X2tvYmpfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29i aikKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0ga29ial90b19ndChrb2JqKTsKKworCWRybV9p bmZvKCZndC0+aTkxNS0+ZHJtLCAicmVsZWFzaW5nIGludGVyZmFjZVxuIik7Cit9CisKK3N0YXRp YyBzdHJ1Y3Qga29ial90eXBlIHN5c2ZzX2d0X2t0eXBlID0geworCS5yZWxlYXNlICAgPSBzeXNm c19ndF9rb2JqX3JlbGVhc2UsCisJLnN5c2ZzX29wcyA9ICZrb2JqX3N5c2ZzX29wcywKK307CisK K3ZvaWQgaW50ZWxfZ3Rfc3lzZnNfcmVnaXN0ZXIoc3RydWN0IGludGVsX2d0ICpndCkKK3sKKwlz dHJ1Y3Qga29iamVjdCAqa3BhcmVudCA9IGd0X3RvX3BhcmVudF9vYmooZ3QpOworCWludCByZXQ7 CisKKwlyZXQgPSBrb2JqZWN0X2luaXRfYW5kX2FkZCgmZ3QtPmtvYmosICZzeXNmc19ndF9rdHlw ZSwga3BhcmVudCwgImd0Iik7CisJaWYgKHJldCkgeworCQlkcm1fZXJyKCZndC0+aTkxNS0+ZHJt LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgc3lzZnMgZmlsZVxuIik7CisJCWtvYmplY3RfcHV0KCZn dC0+a29iaik7CisJCWdvdG8gcGFyZW50X2ZpbGVzOworCX0KKworCXJldCA9IHN5c2ZzX2NyZWF0 ZV9maWxlKCZndC0+a29iaiwgJmRldl9hdHRyX2d0X2luZm8uYXR0cik7CisJaWYgKHJldCkKKwkJ ZHJtX2VycigmZ3QtPmk5MTUtPmRybSwgImZhaWxlZCB0byBjcmVhdGUgc3lzZnMgZ3QgaW5mbyBm aWxlc1xuIik7CisKKwlpbnRlbF9ndF9zeXNmc19wbV9pbml0KGd0LCAmZ3QtPmtvYmopOworCitw YXJlbnRfZmlsZXM6CisJLyoKKwkgKiB3ZSBuZWVkIHRvIG1ha2UgdGhpbmdzIHJpZ2h0IHdpdGgg dGhlCisJICogQUJJIGNvbXBhdGliaWxpdHkuIFRoZSBmaWxlcyB3ZXJlIG9yaWdpbmFsbHkKKwkg KiBnZW5lcmF0ZWQgdW5kZXIgdGhlIHBhcmVudCBkaXJlY3RvcnkuCisJICovCisJaW50ZWxfZ3Rf c3lzZnNfcG1faW5pdChndCwga3BhcmVudCk7Cit9CisKK3ZvaWQgaW50ZWxfZ3Rfc3lzZnNfdW5y ZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQoreworCXN0cnVjdCBrb2JqZWN0ICpyb290ID0g Z3RfdG9fcGFyZW50X29iaihndCk7CisKKwlpZiAoJmd0LT5rb2JqKSB7CisJCXN5c2ZzX3JlbW92 ZV9maWxlKCZndC0+a29iaiwgJmRldl9hdHRyX2d0X2luZm8uYXR0cik7CisJCWludGVsX2d0X3N5 c2ZzX3BtX3JlbW92ZShndCwgJmd0LT5rb2JqKTsKKwkJa29iamVjdF9wdXQoJmd0LT5rb2JqKTsK Kwl9CisKKwlpbnRlbF9ndF9zeXNmc19wbV9yZW1vdmUoZ3QsIHJvb3QpOworCWtvYmplY3RfcHV0 KHJvb3QpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3Qu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZmZmNmI4ODRiMTgKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5oCkBAIC0wLDAgKzEsMjIgQEAKKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKworLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5 IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBTWVNGU19HVF9ICisjZGVmaW5lIFNZ U0ZTX0dUX0gKKworI2luY2x1ZGUgImludGVsX2d0X3R5cGVzLmgiCisKK3N0cnVjdCBpbnRlbF9n dDsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfZ3QgKmtvYmpfdG9fZ3Qoc3RydWN0IGtv YmplY3QgKmtvYmopCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgaW50ZWxf Z3QsIGtvYmopOworfQorCit2b2lkIGludGVsX2d0X3N5c2ZzX3JlZ2lzdGVyKHN0cnVjdCBpbnRl bF9ndCAqZ3QpOwordm9pZCBpbnRlbF9ndF9zeXNmc191bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9n dCAqZ3QpOworCisjZW5kaWYgLyogU1lTRlNfR1RfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5 c2ZzX2d0X3BtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hMzc0 NjQ4NTU2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNm c19ndF9wbS5jCkBAIC0wLDAgKzEsNDQ2IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog TUlUCisKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisK KyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+Cisj aW5jbHVkZSA8bGludXgvcHJpbnRrLmg+CisKKyNpbmNsdWRlICIuLi9pOTE1X2Rydi5oIgorI2lu Y2x1ZGUgIi4uL2k5MTVfc3lzZnMuaCIKKyNpbmNsdWRlICJpbnRlbF9ndC5oIgorI2luY2x1ZGUg ImludGVsX3JjNi5oIgorI2luY2x1ZGUgImludGVsX3Jwcy5oIgorI2luY2x1ZGUgInN5c2ZzX2d0 LmgiCisjaW5jbHVkZSAic3lzZnNfZ3RfcG0uaCIKKworc3RydWN0IGludGVsX2d0ICppbnRlbF9n dF9zeXNmc19nZXRfZHJ2ZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGtvYmpl Y3QgKmtvYmogPSAmZGV2LT5rb2JqOworCS8qCisJICogV2UgYXJlIGludGVyZXN0ZWQgYXQga25v d2luZyBmcm9tIHdoZXJlIHRoZSBpbnRlcmZhY2UKKwkgKiBoYXMgYmVlbiBjYWxsZWQsIHdoZXRo ZXIgaXQncyBjYWxsZWQgZnJvbSBndC8gb3IgZnJvbQorCSAqIHRoZSBwYXJlbnQgZGlyZWN0b3J5 LgorCSAqIEZyb20gdGhlIGludGVyZmFjZSBwb3NpdGlvbiBpdCBkZXBlbmRzIGFsc28gdGhlIHZh bHVlIG9mCisJICogdGhlIHByaXZhdGUgZGF0YS4KKwkgKiBJZiB0aGUgaW50ZXJmYWNlIGlzIGNh bGxlZCBmcm9tIGd0LyB0aGVuIHByaXZhdGUgZGF0YSBpcworCSAqIG9mIHRoZSAic3RydWN0IGlu dGVsX2d0ICoiIHR5cGUsIG90aGVyd2lzZSBpdCdzICogYQorCSAqICJzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqIiB0eXBlLgorCSAqLworCWlmIChzdHJjbXAoZGV2LT5rb2JqLm5hbWUsICJndCIp KSB7CisJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0ga2Rldl9taW5vcl90b19pOTE1 KGRldik7CisKKwkJZHJtX3dhcm4oJmk5MTUtPmRybSwgInRoZSBpbnRlcmZhY2UgaXMgb2Jzb2xl dGUsIHVzZSBndC9cbiIpOworCQlyZXR1cm4gJmk5MTUtPmd0OworCX0KKworCXJldHVybiBrb2Jq X3RvX2d0KGtvYmopOworfQorCisjaWZkZWYgQ09ORklHX1BNCitzdGF0aWMgdTMyIGdldF9yZXNp ZGVuY3koc3RydWN0IGludGVsX2d0ICpndCwgaTkxNV9yZWdfdCByZWcpCit7CisJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7CisJdTY0IHJlcyA9IDA7CisKKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0o Z3QtPnVuY29yZS0+cnBtLCB3YWtlcmVmKQorCQlyZXMgPSBpbnRlbF9yYzZfcmVzaWRlbmN5X3Vz KCZndC0+cmM2LCByZWcpOworCisJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUX1VMTChyZXMsIDEw MDApOworfQorCitzdGF0aWMgc3NpemVfdCByYzZfZW5hYmxlX3Nob3coc3RydWN0IGRldmljZSAq ZGV2LAorCQkJICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJICAgICAg IGNoYXIgKmJ1ZmYpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dl dF9kcnZkYXRhKGRldik7CisJdTggbWFzayA9IDA7CisKKwlpZiAoSEFTX1JDNihndC0+aTkxNSkp CisJCW1hc2sgfD0gQklUKDApOworCWlmIChIQVNfUkM2cChndC0+aTkxNSkpCisJCW1hc2sgfD0g QklUKDEpOworCWlmIChIQVNfUkM2cHAoZ3QtPmk5MTUpKQorCQltYXNrIHw9IEJJVCgyKTsKKwor CXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIleFxuIiwgbWFzayk7Cit9CisKK3N0 YXRpYyBzc2l6ZV90IHJjNl9yZXNpZGVuY3lfbXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJ CQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkgICAgIGNoYXIgKmJ1 ZmYpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRh KGRldik7CisJdTMyIHJjNl9yZXNpZGVuY3kgPSBnZXRfcmVzaWRlbmN5KGd0LCBHRU42X0dUX0dG WF9SQzYpOworCisJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiV1XG4iLCByYzZf cmVzaWRlbmN5KTsKK30KKworc3RhdGljIHNzaXplX3QgcmM2cF9yZXNpZGVuY3lfbXNfc2hvdyhz dHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsCisJCQkJICAgICAgY2hhciAqYnVmZikKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50 ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwl1MzIgcmM2cF9yZXNpZGVuY3kgPSBnZXRf cmVzaWRlbmN5KGd0LCBHRU42X0dUX0dGWF9SQzZwKTsKKworCXJldHVybiBzbnByaW50ZihidWZm LCBQQUdFX1NJWkUsICIldVxuIiwgcmM2cF9yZXNpZGVuY3kpOworfQorCitzdGF0aWMgc3NpemVf dCByYzZwcF9yZXNpZGVuY3lfbXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgICAg IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCSAgICAgICBjaGFyICpidWZmKQor eworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYp OworCXUzMiByYzZwcF9yZXNpZGVuY3kgPSBnZXRfcmVzaWRlbmN5KGd0LCBHRU42X0dUX0dGWF9S QzZwcCk7CisKKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNnBw X3Jlc2lkZW5jeSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IG1lZGlhX3JjNl9yZXNpZGVuY3lfbXNf c2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCSAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLAorCQkJCQkgICBjaGFyICpidWZmKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBp bnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCXUzMiByYzZfcmVzaWRlbmN5ID0gZ2V0 X3Jlc2lkZW5jeShndCwgVkxWX0dUX01FRElBX1JDNik7CisKKwlyZXR1cm4gc25wcmludGYoYnVm ZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNl9yZXNpZGVuY3kpOworfQorCitzdGF0aWMgREVWSUNF X0FUVFJfUk8ocmM2X2VuYWJsZSk7CitzdGF0aWMgREVWSUNFX0FUVFJfUk8ocmM2X3Jlc2lkZW5j eV9tcyk7CitzdGF0aWMgREVWSUNFX0FUVFJfUk8ocmM2cF9yZXNpZGVuY3lfbXMpOworc3RhdGlj IERFVklDRV9BVFRSX1JPKHJjNnBwX3Jlc2lkZW5jeV9tcyk7CitzdGF0aWMgREVWSUNFX0FUVFJf Uk8obWVkaWFfcmM2X3Jlc2lkZW5jeV9tcyk7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmli dXRlICpyYzZfYXR0cnNbXSA9IHsKKwkmZGV2X2F0dHJfcmM2X2VuYWJsZS5hdHRyLAorCSZkZXZf YXR0cl9yYzZfcmVzaWRlbmN5X21zLmF0dHIsCisJTlVMTAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBhdHRyaWJ1dGUgKnJjNnBfYXR0cnNbXSA9IHsKKwkmZGV2X2F0dHJfcmM2cF9yZXNpZGVu Y3lfbXMuYXR0ciwKKwkmZGV2X2F0dHJfcmM2cHBfcmVzaWRlbmN5X21zLmF0dHIsCisJTlVMTAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKm1lZGlhX3JjNl9hdHRyc1tdID0g eworCSZkZXZfYXR0cl9tZWRpYV9yYzZfcmVzaWRlbmN5X21zLmF0dHIsCisJTlVMTAorfTsKKwor c3RhdGljIHZvaWQgaW50ZWxfc3lzZnNfcmM2X2luaXQoc3RydWN0IGludGVsX2d0ICpndCwgc3Ry dWN0IGtvYmplY3QgKmtvYmopCit7CisJaW50IHJldCA9IDA7CisKKwlpZiAoSEFTX1JDNihndC0+ aTkxNSkpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGVzKGtvYmosIHJjNl9hdHRycyk7CisJ CWlmIChyZXQpCisJCQlkcm1fZXJyKCZndC0+aTkxNS0+ZHJtLAorCQkJCSJmYWlsZWQgdG8gY3Jl YXRlIFJDNiBzeXNmcyBmaWxlc1xuIik7CisJfQorCisJaWYgKEhBU19SQzZwKGd0LT5pOTE1KSkg eworCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMoa29iaiwgcmM2cF9hdHRycyk7CisJCWlmIChy ZXQpCisJCQlkcm1fZXJyKCZndC0+aTkxNS0+ZHJtLAorCQkJCSJmYWlsZWQgdG8gY3JlYXRlIFJD NnAgc3lzZnMgZmlsZXNcbiIpOworCX0KKworCWlmIChJU19WQUxMRVlWSUVXKGd0LT5pOTE1KSB8 fCBJU19DSEVSUllWSUVXKGd0LT5pOTE1KSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZXMo a29iaiwgbWVkaWFfcmM2X2F0dHJzKTsKKwkJaWYgKHJldCkKKwkJCWRybV9lcnIoJmd0LT5pOTE1 LT5kcm0sCisJCQkJImZhaWxlZCB0byBjcmVhdGUgbWVkaWEgUkM2IHN5c2ZzIGZpbGVzXG4iKTsK Kwl9Cit9CisjZWxzZQorc3RhdGljIHZvaWQgaW50ZWxfc3lzZnNfcmM2X2luaXQoc3RydWN0IGlu dGVsX2d0ICpndCwgc3RydWN0IGtvYmplY3QgKmtvYmopCit7CisJcmV0dXJuIDA7Cit9CisjZW5k aWYgLyogQ09ORklHX1BNICovCisKK3N0YXRpYyBzc2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93 KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsIGNoYXIgKmJ1ZmYpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2Zz X2dldF9kcnZkYXRhKGRldik7CisKKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAi JWRcbiIsCisJCQlpbnRlbF9ycHNfcmVhZF9hY3R1YWxfZnJlcXVlbmN5KCZndC0+cnBzKSk7Cit9 CisKK3N0YXRpYyBzc2l6ZV90IGd0X2N1cl9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmRl diwKKwkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZmYpCit7 CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7 CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisKKwlyZXR1cm4gc25wcmludGYo YnVmZiwgUEFHRV9TSVpFLCAiJWRcbiIsCisJCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+Y3Vy X2ZyZXEpKTsKK30KKworc3RhdGljIHNzaXplX3QgZ3RfYm9vc3RfZnJlcV9taHpfc2hvdyhzdHJ1 Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs CisJCQkJICAgICAgY2hhciAqYnVmZikKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxf Z3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZ3Qt PnJwczsKKworCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIlZFxuIiwKKwkJCWlu dGVsX2dwdV9mcmVxKHJwcywgcnBzLT5ib29zdF9mcmVxKSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90 IGd0X2Jvb3N0X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgICAgICAg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKmJ1 ZmYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lz ZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZ3QtPnJwczsK Kwlib29sIGJvb3N0ID0gZmFsc2U7CisJc3NpemVfdCByZXQ7CisJdTMyIHZhbDsKKworCXJldCA9 IGtzdHJ0b3UzMihidWZmLCAwLCAmdmFsKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJ LyogVmFsaWRhdGUgYWdhaW5zdCAoc3RhdGljKSBoYXJkd2FyZSBsaW1pdHMgKi8KKwl2YWwgPSBp bnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7CisJaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwg dmFsID4gcnBzLT5tYXhfZnJlcSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRleF9sb2NrKCZy cHMtPmxvY2spOworCWlmICh2YWwgIT0gcnBzLT5ib29zdF9mcmVxKSB7CisJCXJwcy0+Ym9vc3Rf ZnJlcSA9IHZhbDsKKwkJYm9vc3QgPSBhdG9taWNfcmVhZCgmcnBzLT5udW1fd2FpdGVycyk7CisJ fQorCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKKwlpZiAoYm9vc3QpCisJCXNjaGVkdWxlX3dv cmsoJnJwcy0+d29yayk7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHZs dl9ycGVfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgICBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmZikKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfcnBz ICpycHMgPSAmZ3QtPnJwczsKKworCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIl ZFxuIiwKKwkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5lZmZpY2llbnRfZnJlcSkpOworfQor CitzdGF0aWMgc3NpemVfdCBndF9tYXhfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYs CisJCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCSAgICBjaGFyICpi dWZmKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0 YShkZXYpOworCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZndC0+cnBzOworCisJcmV0dXJuIHNu cHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4iLAorCQkJaW50ZWxfZ3B1X2ZyZXEocnBzLCBy cHMtPm1heF9mcmVxX3NvZnRsaW1pdCkpOworfQorCitzdGF0aWMgc3NpemVfdCBndF9tYXhfZnJl cV9taHpfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgICAgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsCisJCQkJICAgICBjb25zdCBjaGFyICpidWZmLCBzaXplX3QgY291bnQp Cit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRl dik7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisJc3NpemVfdCByZXQ7CisJ dTMyIHZhbDsKKworCXJldCA9IGtzdHJ0b3UzMihidWZmLCAwLCAmdmFsKTsKKwlpZiAocmV0KQor CQlyZXR1cm4gcmV0OworCisJbXV0ZXhfbG9jaygmcnBzLT5sb2NrKTsKKworCXZhbCA9IGludGVs X2ZyZXFfb3Bjb2RlKHJwcywgdmFsKTsKKwlpZiAodmFsIDwgcnBzLT5taW5fZnJlcSB8fAorCSAg ICB2YWwgPiBycHMtPm1heF9mcmVxIHx8CisJICAgIHZhbCA8IHJwcy0+bWluX2ZyZXFfc29mdGxp bWl0KSB7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gdW5sb2NrOworCX0KKworCWlmICh2YWwg PiBycHMtPnJwMF9mcmVxKQorCQlEUk1fREVCVUcoIlVzZXIgcmVxdWVzdGVkIG92ZXJjbG9ja2lu ZyB0byAlZFxuIiwKKwkJCSAgaW50ZWxfZ3B1X2ZyZXEocnBzLCB2YWwpKTsKKworCXJwcy0+bWF4 X2ZyZXFfc29mdGxpbWl0ID0gdmFsOworCisJdmFsID0gY2xhbXBfdChpbnQsIHJwcy0+Y3VyX2Zy ZXEsCisJCSAgICAgIHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0LAorCQkgICAgICBycHMtPm1heF9m cmVxX3NvZnRsaW1pdCk7CisKKwkvKgorCSAqIFdlIHN0aWxsIG5lZWQgKl9zZXRfcnBzIHRvIHBy b2Nlc3MgdGhlIG5ldyBtYXhfZGVsYXkgYW5kCisJICogdXBkYXRlIHRoZSBpbnRlcnJ1cHQgbGlt aXRzIGFuZCBQTUlOVFJNU0sgZXZlbiB0aG91Z2gKKwkgKiBmcmVxdWVuY3kgcmVxdWVzdCBtYXkg YmUgdW5jaGFuZ2VkLgorCSAqLworCWludGVsX3Jwc19zZXQocnBzLCB2YWwpOworCit1bmxvY2s6 CisJbXV0ZXhfdW5sb2NrKCZycHMtPmxvY2spOworCisJcmV0dXJuIHJldCA/OiBjb3VudDsKK30K Kworc3RhdGljIHNzaXplX3QgZ3RfbWluX2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2 LAorCQkJCSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkgICAgY2hhciAq YnVmZikKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRh dGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZ3QtPnJwczsKKworCXJldHVybiBz bnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIlZFxuIiwKKwkJCWludGVsX2dwdV9mcmVxKHJwcywg cnBzLT5taW5fZnJlcV9zb2Z0bGltaXQpKTsKK30KKworc3RhdGljIHNzaXplX3QgZ3RfbWluX2Zy ZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgICAgIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLAorCQkJCSAgICAgY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IGNvdW50 KQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShk ZXYpOworCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZndC0+cnBzOworCXNzaXplX3QgcmV0Owor CXUzMiB2YWw7CisKKwlyZXQgPSBrc3RydG91MzIoYnVmZiwgMCwgJnZhbCk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCW11dGV4X2xvY2soJnJwcy0+bG9jayk7CisKKwl2YWwgPSBpbnRl bF9mcmVxX29wY29kZShycHMsIHZhbCk7CisJaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwKKwkg ICAgdmFsID4gcnBzLT5tYXhfZnJlcSB8fAorCSAgICB2YWwgPiBycHMtPm1heF9mcmVxX3NvZnRs aW1pdCkgeworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIHVubG9jazsKKwl9CisKKwlycHMtPm1p bl9mcmVxX3NvZnRsaW1pdCA9IHZhbDsKKworCXZhbCA9IGNsYW1wX3QoaW50LCBycHMtPmN1cl9m cmVxLAorCQkgICAgICBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCwKKwkJICAgICAgcnBzLT5tYXhf ZnJlcV9zb2Z0bGltaXQpOworCisJLyoKKwkgKiBXZSBzdGlsbCBuZWVkICpfc2V0X3JwcyB0byBw cm9jZXNzIHRoZSBuZXcgbWluX2RlbGF5IGFuZAorCSAqIHVwZGF0ZSB0aGUgaW50ZXJydXB0IGxp bWl0cyBhbmQgUE1JTlRSTVNLIGV2ZW4gdGhvdWdoCisJICogZnJlcXVlbmN5IHJlcXVlc3QgbWF5 IGJlIHVuY2hhbmdlZC4KKwkgKi8KKwlpbnRlbF9ycHNfc2V0KHJwcywgdmFsKTsKKwordW5sb2Nr OgorCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKKworCXJldHVybiByZXQgPzogY291bnQ7Cit9 CisKK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhndF9hY3RfZnJlcV9taHopOworc3RhdGljIERFVklD RV9BVFRSX1JPKGd0X2N1cl9mcmVxX21oeik7CitzdGF0aWMgREVWSUNFX0FUVFJfUlcoZ3RfYm9v c3RfZnJlcV9taHopOworc3RhdGljIERFVklDRV9BVFRSX1JXKGd0X21heF9mcmVxX21oeik7Citz dGF0aWMgREVWSUNFX0FUVFJfUlcoZ3RfbWluX2ZyZXFfbWh6KTsKKworc3RhdGljIERFVklDRV9B VFRSX1JPKHZsdl9ycGVfZnJlcV9taHopOworCitzdGF0aWMgc3NpemVfdCBndF9ycF9taHpfc2hv dyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwKKwkJCSAgICAgIGNoYXIgKmJ1ZmYpOworCitzdGF0aWMgREVWSUNFX0FUVFIoZ3RfUlAw X2ZyZXFfbWh6LCAwNDQ0LCBndF9ycF9taHpfc2hvdywgTlVMTCk7CitzdGF0aWMgREVWSUNFX0FU VFIoZ3RfUlAxX2ZyZXFfbWh6LCAwNDQ0LCBndF9ycF9taHpfc2hvdywgTlVMTCk7CitzdGF0aWMg REVWSUNFX0FUVFIoZ3RfUlBuX2ZyZXFfbWh6LCAwNDQ0LCBndF9ycF9taHpfc2hvdywgTlVMTCk7 CisKKy8qIEZvciBub3cgd2UgaGF2ZSBhIHN0YXRpYyBudW1iZXIgb2YgUlAgc3RhdGVzICovCitz dGF0aWMgc3NpemVfdCBndF9ycF9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkgICAg ICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICAgIGNoYXIgKmJ1ZmYpCit7 CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7 CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisJdTMyIHZhbDsKKworCWlmIChh dHRyID09ICZkZXZfYXR0cl9ndF9SUDBfZnJlcV9taHopCisJCXZhbCA9IGludGVsX2dwdV9mcmVx KHJwcywgcnBzLT5ycDBfZnJlcSk7CisJZWxzZSBpZiAoYXR0ciA9PSAmZGV2X2F0dHJfZ3RfUlAx X2ZyZXFfbWh6KQorCQl2YWwgPSBpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+cnAxX2ZyZXEpOwor CWVsc2UgaWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQbl9mcmVxX21oeikKKwkJdmFsID0gaW50 ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPm1pbl9mcmVxKTsKKwllbHNlCisJCUJVRygpOworCisJcmV0 dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4iLCB2YWwpOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGNvbnN0IGdlbjZfYXR0cnNbXSA9IHsKKwkmZGV2X2F0 dHJfZ3RfYWN0X2ZyZXFfbWh6LmF0dHIsCisJJmRldl9hdHRyX2d0X2N1cl9mcmVxX21oei5hdHRy LAorCSZkZXZfYXR0cl9ndF9ib29zdF9mcmVxX21oei5hdHRyLAorCSZkZXZfYXR0cl9ndF9tYXhf ZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfZ3RfbWluX2ZyZXFfbWh6LmF0dHIsCisJJmRldl9h dHRyX2d0X1JQMF9mcmVxX21oei5hdHRyLAorCSZkZXZfYXR0cl9ndF9SUDFfZnJlcV9taHouYXR0 ciwKKwkmZGV2X2F0dHJfZ3RfUlBuX2ZyZXFfbWh6LmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICogY29uc3Qgdmx2X2F0dHJzW10gPSB7CisJJmRldl9h dHRyX2d0X2FjdF9mcmVxX21oei5hdHRyLAorCSZkZXZfYXR0cl9ndF9jdXJfZnJlcV9taHouYXR0 ciwKKwkmZGV2X2F0dHJfZ3RfYm9vc3RfZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfZ3RfbWF4 X2ZyZXFfbWh6LmF0dHIsCisJJmRldl9hdHRyX2d0X21pbl9mcmVxX21oei5hdHRyLAorCSZkZXZf YXR0cl9ndF9SUDBfZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6LmF0 dHIsCisJJmRldl9hdHRyX2d0X1JQbl9mcmVxX21oei5hdHRyLAorCSZkZXZfYXR0cl92bHZfcnBl X2ZyZXFfbWh6LmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRpYyBpbnQgaW50ZWxfc3lzZnNfcnBz X2luaXQoc3RydWN0IGludGVsX2d0ICpndCwgc3RydWN0IGtvYmplY3QgKmtvYmopCit7CisJaWYg KElTX1ZBTExFWVZJRVcoZ3QtPmk5MTUpIHx8IElTX0NIRVJSWVZJRVcoZ3QtPmk5MTUpKQorCQly ZXR1cm4gc3lzZnNfY3JlYXRlX2ZpbGVzKGtvYmosIHZsdl9hdHRycyk7CisKKwlpZiAoSU5URUxf R0VOKGd0LT5pOTE1KSA+PSA2KQorCQlyZXR1cm4gc3lzZnNfY3JlYXRlX2ZpbGVzKGtvYmosIGdl bjZfYXR0cnMpOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgaW50ZWxfZ3Rfc3lzZnNfcG1faW5p dChzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3Qga29iamVjdCAqa29iaikKK3sKKwlpbnQgcmV0 OworCisJaW50ZWxfc3lzZnNfcmM2X2luaXQoZ3QsIGtvYmopOworCisJcmV0ID0gaW50ZWxfc3lz ZnNfcnBzX2luaXQoZ3QsIGtvYmopOworCWlmIChyZXQpCisJCWRybV9lcnIoJmd0LT5pOTE1LT5k cm0sICJmYWlsZWQgdG8gY3JlYXRlIFJQUyBzeXNmcyBmaWxlcyIpOworfQorCit2b2lkIGludGVs X2d0X3N5c2ZzX3BtX3JlbW92ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3Qga29iamVjdCAq a29iaikKK3sKKyNpZmRlZiBDT05GSUdfUE0KKwlpZiAoSEFTX1JDNihndC0+aTkxNSkpCisJCXN5 c2ZzX3JlbW92ZV9maWxlcyhrb2JqLCByYzZfYXR0cnMpOworCWlmIChIQVNfUkM2cChndC0+aTkx NSkpCisJCXN5c2ZzX3JlbW92ZV9maWxlcyhrb2JqLCByYzZwX2F0dHJzKTsKKwlpZiAoSVNfVkFM TEVZVklFVyhndC0+aTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhndC0+aTkxNSkpCisJCXN5c2ZzX3Jl bW92ZV9maWxlcyhrb2JqLCBtZWRpYV9yYzZfYXR0cnMpOworI2VuZGlmCisKKwlpZiAoSVNfVkFM TEVZVklFVyhndC0+aTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhndC0+aTkxNSkpCisJCXN5c2ZzX3Jl bW92ZV9maWxlcyhrb2JqLCB2bHZfYXR0cnMpOworCWVsc2UKKwkJc3lzZnNfcmVtb3ZlX2ZpbGVz KGtvYmosIGdlbjZfYXR0cnMpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc3lzZnNfZ3RfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0X3BtLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43NThkMGMzY2I5OTgKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5oCkBA IC0wLDAgKzEsMTcgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKworLyoK KyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBT WVNGU19SQzZfSAorI2RlZmluZSBTWVNGU19SQzZfSAorCisjaW5jbHVkZSA8bGludXgva29iamVj dC5oPgorCisjaW5jbHVkZSAiaW50ZWxfZ3RfdHlwZXMuaCIKKwordm9pZCBpbnRlbF9ndF9zeXNm c19wbV9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBrb2JqZWN0ICprb2JqKTsKK3Zv aWQgaW50ZWxfZ3Rfc3lzZnNfcG1fcmVtb3ZlKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBr b2JqZWN0ICprb2JqKTsKKworI2VuZGlmIC8qIFNZU0ZTX1JDNl9IICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N5c2ZzLmMKaW5kZXggYzE0ZDc2MmJkNjUyLi4xMjk4OTc3ZmMwOGIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3N5c2ZzLmMKQEAgLTM4LDExMyArMzgsMTIgQEAKICNpbmNsdWRlICJpbnRlbF9w bS5oIgogI2luY2x1ZGUgImludGVsX3NpZGViYW5kLmgiCiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmtkZXZfbWlub3JfdG9faTkxNShzdHJ1Y3QgZGV2aWNlICprZGV2 KQorc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmtkZXZfbWlub3JfdG9faTkxNShzdHJ1Y3QgZGV2 aWNlICprZGV2KQogewogCXN0cnVjdCBkcm1fbWlub3IgKm1pbm9yID0gZGV2X2dldF9kcnZkYXRh KGtkZXYpOwogCXJldHVybiB0b19pOTE1KG1pbm9yLT5kZXYpOwogfQogCi0jaWZkZWYgQ09ORklH X1BNCi1zdGF0aWMgdTMyIGNhbGNfcmVzaWRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJCSAgaTkxNV9yZWdfdCByZWcpCi17Ci0JaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7Ci0JdTY0IHJlcyA9IDA7Ci0KLQl3aXRoX2ludGVsX3J1bnRpbWVfcG0oJmRldl9wcml2LT5y dW50aW1lX3BtLCB3YWtlcmVmKQotCQlyZXMgPSBpbnRlbF9yYzZfcmVzaWRlbmN5X3VzKCZkZXZf cHJpdi0+Z3QucmM2LCByZWcpOwotCi0JcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUX1VMTChyZXMs IDEwMDApOwotfQotCi1zdGF0aWMgc3NpemVfdAotc2hvd19yYzZfbWFzayhzdHJ1Y3QgZGV2aWNl ICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2 KTsKLQl1bnNpZ25lZCBpbnQgbWFzazsKLQotCW1hc2sgPSAwOwotCWlmIChIQVNfUkM2KGRldl9w cml2KSkKLQkJbWFzayB8PSBCSVQoMCk7Ci0JaWYgKEhBU19SQzZwKGRldl9wcml2KSkKLQkJbWFz ayB8PSBCSVQoMSk7Ci0JaWYgKEhBU19SQzZwcChkZXZfcHJpdikpCi0JCW1hc2sgfD0gQklUKDIp OwotCi0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXhcbiIsIG1hc2spOwotfQot Ci1zdGF0aWMgc3NpemVfdAotc2hvd19yYzZfbXMoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Ci0JdTMyIHJjNl9y ZXNpZGVuY3kgPSBjYWxjX3Jlc2lkZW5jeShkZXZfcHJpdiwgR0VONl9HVF9HRlhfUkM2KTsKLQly ZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIldVxuIiwgcmM2X3Jlc2lkZW5jeSk7Ci19 Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3JjNnBfbXMoc3RydWN0IGRldmljZSAqa2Rldiwgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Ci0JdTMyIHJj NnBfcmVzaWRlbmN5ID0gY2FsY19yZXNpZGVuY3koZGV2X3ByaXYsIEdFTjZfR1RfR0ZYX1JDNnAp OwotCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiV1XG4iLCByYzZwX3Jlc2lkZW5j eSk7Ci19Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3JjNnBwX21zKHN0cnVjdCBkZXZpY2UgKmtk ZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwot CXUzMiByYzZwcF9yZXNpZGVuY3kgPSBjYWxjX3Jlc2lkZW5jeShkZXZfcHJpdiwgR0VONl9HVF9H RlhfUkM2cHApOwotCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiV1XG4iLCByYzZw cF9yZXNpZGVuY3kpOwotfQotCi1zdGF0aWMgc3NpemVfdAotc2hvd19tZWRpYV9yYzZfbXMoc3Ry dWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3Rv X2k5MTUoa2Rldik7Ci0JdTMyIHJjNl9yZXNpZGVuY3kgPSBjYWxjX3Jlc2lkZW5jeShkZXZfcHJp diwgVkxWX0dUX01FRElBX1JDNik7Ci0JcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAi JXVcbiIsIHJjNl9yZXNpZGVuY3kpOwotfQotCi1zdGF0aWMgREVWSUNFX0FUVFIocmM2X2VuYWJs ZSwgU19JUlVHTywgc2hvd19yYzZfbWFzaywgTlVMTCk7Ci1zdGF0aWMgREVWSUNFX0FUVFIocmM2 X3Jlc2lkZW5jeV9tcywgU19JUlVHTywgc2hvd19yYzZfbXMsIE5VTEwpOwotc3RhdGljIERFVklD RV9BVFRSKHJjNnBfcmVzaWRlbmN5X21zLCBTX0lSVUdPLCBzaG93X3JjNnBfbXMsIE5VTEwpOwot c3RhdGljIERFVklDRV9BVFRSKHJjNnBwX3Jlc2lkZW5jeV9tcywgU19JUlVHTywgc2hvd19yYzZw cF9tcywgTlVMTCk7Ci1zdGF0aWMgREVWSUNFX0FUVFIobWVkaWFfcmM2X3Jlc2lkZW5jeV9tcywg U19JUlVHTywgc2hvd19tZWRpYV9yYzZfbXMsIE5VTEwpOwotCi1zdGF0aWMgc3RydWN0IGF0dHJp YnV0ZSAqcmM2X2F0dHJzW10gPSB7Ci0JJmRldl9hdHRyX3JjNl9lbmFibGUuYXR0ciwKLQkmZGV2 X2F0dHJfcmM2X3Jlc2lkZW5jeV9tcy5hdHRyLAotCU5VTEwKLX07Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHJjNl9hdHRyX2dyb3VwID0gewotCS5uYW1lID0gcG93ZXJf Z3JvdXBfbmFtZSwKLQkuYXR0cnMgPSAgcmM2X2F0dHJzCi19OwotCi1zdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZSAqcmM2cF9hdHRyc1tdID0gewotCSZkZXZfYXR0cl9yYzZwX3Jlc2lkZW5jeV9tcy5h dHRyLAotCSZkZXZfYXR0cl9yYzZwcF9yZXNpZGVuY3lfbXMuYXR0ciwKLQlOVUxMCi19OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCByYzZwX2F0dHJfZ3JvdXAgPSB7Ci0J Lm5hbWUgPSBwb3dlcl9ncm91cF9uYW1lLAotCS5hdHRycyA9ICByYzZwX2F0dHJzCi19OwotCi1z dGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbWVkaWFfcmM2X2F0dHJzW10gPSB7Ci0JJmRldl9hdHRy X21lZGlhX3JjNl9yZXNpZGVuY3lfbXMuYXR0ciwKLQlOVUxMCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBtZWRpYV9yYzZfYXR0cl9ncm91cCA9IHsKLQkubmFtZSA9 IHBvd2VyX2dyb3VwX25hbWUsCi0JLmF0dHJzID0gIG1lZGlhX3JjNl9hdHRycwotfTsKLSNlbmRp ZgotCiBzdGF0aWMgaW50IGwzX2FjY2Vzc192YWxpZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwgbG9mZl90IG9mZnNldCkKIHsKIAlpZiAoIUhBU19MM19EUEYoaTkxNSkpCkBAIC0yNTYs MjM5ICsxNTUsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJpbl9hdHRyaWJ1dGUgZHBmX2F0dHJz XzEgPSB7CiAJLnByaXZhdGUgPSAodm9pZCAqKTEKIH07CiAKLXN0YXRpYyBzc2l6ZV90IGd0X2Fj dF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCi0JCQkJICAgIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Ci0Jc3RydWN0IGludGVsX3JwcyAq cnBzID0gJmk5MTUtPmd0LnJwczsKLQotCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwg IiVkXG4iLAotCQkJaW50ZWxfcnBzX3JlYWRfYWN0dWFsX2ZyZXF1ZW5jeShycHMpKTsKLX0KLQot c3RhdGljIHNzaXplX3QgZ3RfY3VyX2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2RldiwK LQkJCQkgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsK LQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmaTkxNS0+Z3QucnBzOwotCi0JcmV0dXJuIHNucHJp bnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsCi0JCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+ Y3VyX2ZyZXEpKTsKLX0KLQotc3RhdGljIHNzaXplX3QgZ3RfYm9vc3RfZnJlcV9taHpfc2hvdyhz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0ga2Rldl9taW5vcl90b19p OTE1KGtkZXYpOwotCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZpOTE1LT5ndC5ycHM7Ci0KLQly ZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxuIiwKLQkJCWludGVsX2dwdV9mcmVx KHJwcywgcnBzLT5ib29zdF9mcmVxKSk7Ci19Ci0KLXN0YXRpYyBzc2l6ZV90IGd0X2Jvb3N0X2Zy ZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtkZXYsCi0JCQkJICAgICAgIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLAotCQkJCSAgICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBj b3VudCkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9y X3RvX2k5MTUoa2Rldik7Ci0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndC5y cHM7Ci0JYm9vbCBib29zdCA9IGZhbHNlOwotCXNzaXplX3QgcmV0OwotCXUzMiB2YWw7Ci0KLQly ZXQgPSBrc3RydG91MzIoYnVmLCAwLCAmdmFsKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owot Ci0JLyogVmFsaWRhdGUgYWdhaW5zdCAoc3RhdGljKSBoYXJkd2FyZSBsaW1pdHMgKi8KLQl2YWwg PSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZhbCk7Ci0JaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEg fHwgdmFsID4gcnBzLT5tYXhfZnJlcSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQltdXRleF9sb2Nr KCZycHMtPmxvY2spOwotCWlmICh2YWwgIT0gcnBzLT5ib29zdF9mcmVxKSB7Ci0JCXJwcy0+Ym9v c3RfZnJlcSA9IHZhbDsKLQkJYm9vc3QgPSBhdG9taWNfcmVhZCgmcnBzLT5udW1fd2FpdGVycyk7 Ci0JfQotCW11dGV4X3VubG9jaygmcnBzLT5sb2NrKTsKLQlpZiAoYm9vc3QpCi0JCXNjaGVkdWxl X3dvcmsoJnJwcy0+d29yayk7Ci0KLQlyZXR1cm4gY291bnQ7Ci19Ci0KLXN0YXRpYyBzc2l6ZV90 IHZsdl9ycGVfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICprZGV2LAotCQkJCSAgICAgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Ci0Jc3RydWN0 IGludGVsX3JwcyAqcnBzID0gJmRldl9wcml2LT5ndC5ycHM7Ci0KLQlyZXR1cm4gc25wcmludGYo YnVmLCBQQUdFX1NJWkUsICIlZFxuIiwKLQkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5lZmZp Y2llbnRfZnJlcSkpOwotfQotCi1zdGF0aWMgc3NpemVfdCBndF9tYXhfZnJlcV9taHpfc2hvdyhz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3Jf dG9faTkxNShrZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfcnBzICpycHMgPSAmZGV2X3ByaXYtPmd0LnJw czsKLQotCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLAotCQkJaW50ZWxf Z3B1X2ZyZXEocnBzLCBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCkpOwotfQotCi1zdGF0aWMgc3Np emVfdCBndF9tYXhfZnJlcV9taHpfc3RvcmUoc3RydWN0IGRldmljZSAqa2RldiwKLQkJCQkgICAg IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAotCQkJCSAgICAgY29uc3QgY2hhciAqYnVm LCBzaXplX3QgY291bnQpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g a2Rldl9taW5vcl90b19pOTE1KGtkZXYpOwotCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZf cHJpdi0+Z3QucnBzOwotCXNzaXplX3QgcmV0OwotCXUzMiB2YWw7Ci0KLQlyZXQgPSBrc3RydG91 MzIoYnVmLCAwLCAmdmFsKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JbXV0ZXhfbG9j aygmcnBzLT5sb2NrKTsKLQotCXZhbCA9IGludGVsX2ZyZXFfb3Bjb2RlKHJwcywgdmFsKTsKLQlp ZiAodmFsIDwgcnBzLT5taW5fZnJlcSB8fAotCSAgICB2YWwgPiBycHMtPm1heF9mcmVxIHx8Ci0J ICAgIHZhbCA8IHJwcy0+bWluX2ZyZXFfc29mdGxpbWl0KSB7Ci0JCXJldCA9IC1FSU5WQUw7Ci0J CWdvdG8gdW5sb2NrOwotCX0KLQotCWlmICh2YWwgPiBycHMtPnJwMF9mcmVxKQotCQlEUk1fREVC VUcoIlVzZXIgcmVxdWVzdGVkIG92ZXJjbG9ja2luZyB0byAlZFxuIiwKLQkJCSAgaW50ZWxfZ3B1 X2ZyZXEocnBzLCB2YWwpKTsKLQotCXJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0ID0gdmFsOwotCi0J dmFsID0gY2xhbXBfdChpbnQsIHJwcy0+Y3VyX2ZyZXEsCi0JCSAgICAgIHJwcy0+bWluX2ZyZXFf c29mdGxpbWl0LAotCQkgICAgICBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCk7Ci0KLQkvKgotCSAq IFdlIHN0aWxsIG5lZWQgKl9zZXRfcnBzIHRvIHByb2Nlc3MgdGhlIG5ldyBtYXhfZGVsYXkgYW5k Ci0JICogdXBkYXRlIHRoZSBpbnRlcnJ1cHQgbGltaXRzIGFuZCBQTUlOVFJNU0sgZXZlbiB0aG91 Z2gKLQkgKiBmcmVxdWVuY3kgcmVxdWVzdCBtYXkgYmUgdW5jaGFuZ2VkLgotCSAqLwotCWludGVs X3Jwc19zZXQocnBzLCB2YWwpOwotCi11bmxvY2s6Ci0JbXV0ZXhfdW5sb2NrKCZycHMtPmxvY2sp OwotCi0JcmV0dXJuIHJldCA/OiBjb3VudDsKLX0KLQotc3RhdGljIHNzaXplX3QgZ3RfbWluX2Zy ZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBrZGV2X21pbm9yX3RvX2k5MTUoa2Rldik7Ci0Jc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmRl dl9wcml2LT5ndC5ycHM7Ci0KLQlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlZFxu IiwKLQkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQpKTsKLX0K LQotc3RhdGljIHNzaXplX3QgZ3RfbWluX2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmtk ZXYsCi0JCQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKLQkJCQkgICAgIGNv bnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShrZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfcnBz ICpycHMgPSAmZGV2X3ByaXYtPmd0LnJwczsKLQlzc2l6ZV90IHJldDsKLQl1MzIgdmFsOwotCi0J cmV0ID0ga3N0cnRvdTMyKGJ1ZiwgMCwgJnZhbCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK LQotCW11dGV4X2xvY2soJnJwcy0+bG9jayk7Ci0KLQl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShy cHMsIHZhbCk7Ci0JaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwKLQkgICAgdmFsID4gcnBzLT5t YXhfZnJlcSB8fAotCSAgICB2YWwgPiBycHMtPm1heF9mcmVxX3NvZnRsaW1pdCkgewotCQlyZXQg PSAtRUlOVkFMOwotCQlnb3RvIHVubG9jazsKLQl9Ci0KLQlycHMtPm1pbl9mcmVxX3NvZnRsaW1p dCA9IHZhbDsKLQotCXZhbCA9IGNsYW1wX3QoaW50LCBycHMtPmN1cl9mcmVxLAotCQkgICAgICBy cHMtPm1pbl9mcmVxX3NvZnRsaW1pdCwKLQkJICAgICAgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQp OwotCi0JLyoKLQkgKiBXZSBzdGlsbCBuZWVkICpfc2V0X3JwcyB0byBwcm9jZXNzIHRoZSBuZXcg bWluX2RlbGF5IGFuZAotCSAqIHVwZGF0ZSB0aGUgaW50ZXJydXB0IGxpbWl0cyBhbmQgUE1JTlRS TVNLIGV2ZW4gdGhvdWdoCi0JICogZnJlcXVlbmN5IHJlcXVlc3QgbWF5IGJlIHVuY2hhbmdlZC4K LQkgKi8KLQlpbnRlbF9ycHNfc2V0KHJwcywgdmFsKTsKLQotdW5sb2NrOgotCW11dGV4X3VubG9j aygmcnBzLT5sb2NrKTsKLQotCXJldHVybiByZXQgPzogY291bnQ7Ci19Ci0KLXN0YXRpYyBERVZJ Q0VfQVRUUl9STyhndF9hY3RfZnJlcV9taHopOwotc3RhdGljIERFVklDRV9BVFRSX1JPKGd0X2N1 cl9mcmVxX21oeik7Ci1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZ3RfYm9vc3RfZnJlcV9taHopOwot c3RhdGljIERFVklDRV9BVFRSX1JXKGd0X21heF9mcmVxX21oeik7Ci1zdGF0aWMgREVWSUNFX0FU VFJfUlcoZ3RfbWluX2ZyZXFfbWh6KTsKLQotc3RhdGljIERFVklDRV9BVFRSX1JPKHZsdl9ycGVf ZnJlcV9taHopOwotCi1zdGF0aWMgc3NpemVfdCBndF9ycF9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNl ICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKTsKLXN0YXRp YyBERVZJQ0VfQVRUUihndF9SUDBfZnJlcV9taHosIFNfSVJVR08sIGd0X3JwX21oel9zaG93LCBO VUxMKTsKLXN0YXRpYyBERVZJQ0VfQVRUUihndF9SUDFfZnJlcV9taHosIFNfSVJVR08sIGd0X3Jw X21oel9zaG93LCBOVUxMKTsKLXN0YXRpYyBERVZJQ0VfQVRUUihndF9SUG5fZnJlcV9taHosIFNf SVJVR08sIGd0X3JwX21oel9zaG93LCBOVUxMKTsKLQotLyogRm9yIG5vdyB3ZSBoYXZlIGEgc3Rh dGljIG51bWJlciBvZiBSUCBzdGF0ZXMgKi8KLXN0YXRpYyBzc2l6ZV90IGd0X3JwX21oel9zaG93 KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0ga2Rldl9taW5v cl90b19pOTE1KGtkZXYpOwotCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZkZXZfcHJpdi0+Z3Qu cnBzOwotCXUzMiB2YWw7Ci0KLQlpZiAoYXR0ciA9PSAmZGV2X2F0dHJfZ3RfUlAwX2ZyZXFfbWh6 KQotCQl2YWwgPSBpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+cnAwX2ZyZXEpOwotCWVsc2UgaWYg KGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQMV9mcmVxX21oeikKLQkJdmFsID0gaW50ZWxfZ3B1X2Zy ZXEocnBzLCBycHMtPnJwMV9mcmVxKTsKLQllbHNlIGlmIChhdHRyID09ICZkZXZfYXR0cl9ndF9S UG5fZnJlcV9taHopCi0JCXZhbCA9IGludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5taW5fZnJlcSk7 Ci0JZWxzZQotCQlCVUcoKTsKLQotCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVk XG4iLCB2YWwpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGNvbnN0IGdl bjZfYXR0cnNbXSA9IHsKLQkmZGV2X2F0dHJfZ3RfYWN0X2ZyZXFfbWh6LmF0dHIsCi0JJmRldl9h dHRyX2d0X2N1cl9mcmVxX21oei5hdHRyLAotCSZkZXZfYXR0cl9ndF9ib29zdF9mcmVxX21oei5h dHRyLAotCSZkZXZfYXR0cl9ndF9tYXhfZnJlcV9taHouYXR0ciwKLQkmZGV2X2F0dHJfZ3RfbWlu X2ZyZXFfbWh6LmF0dHIsCi0JJmRldl9hdHRyX2d0X1JQMF9mcmVxX21oei5hdHRyLAotCSZkZXZf YXR0cl9ndF9SUDFfZnJlcV9taHouYXR0ciwKLQkmZGV2X2F0dHJfZ3RfUlBuX2ZyZXFfbWh6LmF0 dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICogY29uc3Qg dmx2X2F0dHJzW10gPSB7Ci0JJmRldl9hdHRyX2d0X2FjdF9mcmVxX21oei5hdHRyLAotCSZkZXZf YXR0cl9ndF9jdXJfZnJlcV9taHouYXR0ciwKLQkmZGV2X2F0dHJfZ3RfYm9vc3RfZnJlcV9taHou YXR0ciwKLQkmZGV2X2F0dHJfZ3RfbWF4X2ZyZXFfbWh6LmF0dHIsCi0JJmRldl9hdHRyX2d0X21p bl9mcmVxX21oei5hdHRyLAotCSZkZXZfYXR0cl9ndF9SUDBfZnJlcV9taHouYXR0ciwKLQkmZGV2 X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6LmF0dHIsCi0JJmRldl9hdHRyX2d0X1JQbl9mcmVxX21oei5h dHRyLAotCSZkZXZfYXR0cl92bHZfcnBlX2ZyZXFfbWh6LmF0dHIsCi0JTlVMTCwKLX07Ci0KICNp ZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SKQogCiBzdGF0aWMgc3Np emVfdCBlcnJvcl9zdGF0ZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qga29iamVjdCAq a29iaiwKQEAgLTU1OSwyOSArMjI1LDYgQEAgdm9pZCBpOTE1X3NldHVwX3N5c2ZzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzdHJ1Y3QgZGV2aWNlICprZGV2ID0gZGV2X3By aXYtPmRybS5wcmltYXJ5LT5rZGV2OwogCWludCByZXQ7CiAKLSNpZmRlZiBDT05GSUdfUE0KLQlp ZiAoSEFTX1JDNihkZXZfcHJpdikpIHsKLQkJcmV0ID0gc3lzZnNfbWVyZ2VfZ3JvdXAoJmtkZXYt PmtvYmosCi0JCQkJCSZyYzZfYXR0cl9ncm91cCk7Ci0JCWlmIChyZXQpCi0JCQlkcm1fZXJyKCZk ZXZfcHJpdi0+ZHJtLAotCQkJCSJSQzYgcmVzaWRlbmN5IHN5c2ZzIHNldHVwIGZhaWxlZFxuIik7 Ci0JfQotCWlmIChIQVNfUkM2cChkZXZfcHJpdikpIHsKLQkJcmV0ID0gc3lzZnNfbWVyZ2VfZ3Jv dXAoJmtkZXYtPmtvYmosCi0JCQkJCSZyYzZwX2F0dHJfZ3JvdXApOwotCQlpZiAocmV0KQotCQkJ ZHJtX2VycigmZGV2X3ByaXYtPmRybSwKLQkJCQkiUkM2cCByZXNpZGVuY3kgc3lzZnMgc2V0dXAg ZmFpbGVkXG4iKTsKLQl9Ci0JaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpKSB7Ci0JCXJldCA9IHN5c2ZzX21lcmdlX2dyb3VwKCZrZGV2LT5rb2Jq LAotCQkJCQkmbWVkaWFfcmM2X2F0dHJfZ3JvdXApOwotCQlpZiAocmV0KQotCQkJZHJtX2Vycigm ZGV2X3ByaXYtPmRybSwKLQkJCQkiTWVkaWEgUkM2IHJlc2lkZW5jeSBzeXNmcyBzZXR1cCBmYWls ZWRcbiIpOwotCX0KLSNlbmRpZgogCWlmIChIQVNfTDNfRFBGKGRldl9wcml2KSkgewogCQlyZXQg PSBkZXZpY2VfY3JlYXRlX2Jpbl9maWxlKGtkZXYsICZkcGZfYXR0cnMpOwogCQlpZiAocmV0KQpA QCAtNTk3LDE0ICsyNDAsNiBAQCB2b2lkIGk5MTVfc2V0dXBfc3lzZnMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCQl9CiAJfQogCi0JcmV0ID0gMDsKLQlpZiAoSVNfVkFMTEVZ VklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCi0JCXJldCA9IHN5c2Zz X2NyZWF0ZV9maWxlcygma2Rldi0+a29iaiwgdmx2X2F0dHJzKTsKLQllbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDYpCi0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcygma2Rldi0+a29i aiwgZ2VuNl9hdHRycyk7Ci0JaWYgKHJldCkKLQkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIlJQ UyBzeXNmcyBzZXR1cCBmYWlsZWRcbiIpOwotCiAJaTkxNV9zZXR1cF9lcnJvcl9jYXB0dXJlKGtk ZXYpOwogfQogCkBAIC02MTQsMTQgKzI0OSw2IEBAIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlpOTE1X3RlYXJkb3duX2Vycm9y X2NhcHR1cmUoa2Rldik7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpCi0JCXN5c2ZzX3JlbW92ZV9maWxlcygma2Rldi0+a29iaiwgdmx2 X2F0dHJzKTsKLQllbHNlCi0JCXN5c2ZzX3JlbW92ZV9maWxlcygma2Rldi0+a29iaiwgZ2VuNl9h dHRycyk7CiAJZGV2aWNlX3JlbW92ZV9iaW5fZmlsZShrZGV2LCAgJmRwZl9hdHRyc18xKTsKIAlk ZXZpY2VfcmVtb3ZlX2Jpbl9maWxlKGtkZXYsICAmZHBmX2F0dHJzKTsKLSNpZmRlZiBDT05GSUdf UE0KLQlzeXNmc191bm1lcmdlX2dyb3VwKCZrZGV2LT5rb2JqLCAmcmM2X2F0dHJfZ3JvdXApOwot CXN5c2ZzX3VubWVyZ2VfZ3JvdXAoJmtkZXYtPmtvYmosICZyYzZwX2F0dHJfZ3JvdXApOwotI2Vu ZGlmCiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmgKaW5kZXggNDFhZmQ0MzY2NDE2Li5hZDYx MTRkZTgxYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmgKQEAgLTYsOCArNiwxMSBAQAog I2lmbmRlZiBfX0k5MTVfU1lTRlNfSF9fCiAjZGVmaW5lIF9fSTkxNV9TWVNGU19IX18KIAorI2lu Y2x1ZGUgPGxpbnV4L2RldmljZS5oPgorCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKIAorc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmtkZXZfbWlub3JfdG9faTkxNShzdHJ1Y3QgZGV2aWNlICpr ZGV2KTsKIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSk7CiB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpOwogCi0tIAoyLjI1LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=