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, 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 5B511C35242 for ; Tue, 11 Feb 2020 18:50:44 +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 441DA24649 for ; Tue, 11 Feb 2020 18:50:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 441DA24649 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=etezian.org 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 D0E166F423; Tue, 11 Feb 2020 18:50:43 +0000 (UTC) Received: from 2.mo4.mail-out.ovh.net (2.mo4.mail-out.ovh.net [46.105.72.36]) by gabe.freedesktop.org (Postfix) with ESMTPS id 68E7D6F423 for ; Tue, 11 Feb 2020 18:50:42 +0000 (UTC) Received: from player778.ha.ovh.net (unknown [10.110.171.31]) by mo4.mail-out.ovh.net (Postfix) with ESMTP id 6118021EA8F for ; Tue, 11 Feb 2020 19:10:43 +0100 (CET) Received: from etezian.org (81-175-223-118.bb.dnainternet.fi [81.175.223.118]) (Authenticated sender: andi@etezian.org) by player778.ha.ovh.net (Postfix) with ESMTPSA id 7FA89F46430A; Tue, 11 Feb 2020 18:10:35 +0000 (UTC) From: Andi Shyti To: Intel GFX Date: Tue, 11 Feb 2020 20:10:27 +0200 Message-Id: <20200211181027.5329-1-andi@etezian.org> X-Mailer: git-send-email 2.25.0 MIME-Version: 1.0 X-Ovh-Tracer-Id: 17159559006204772957 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedugedrieefgddutdefucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffogggtgfesthekredtredtjeenucfhrhhomheptehnughiucfuhhihthhiuceorghnughisegvthgviihirghnrdhorhhgqeenucfkpheptddrtddrtddrtddpkedurddujeehrddvvdefrdduudeknecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmohguvgepshhmthhpqdhouhhtpdhhvghlohepphhlrgihvghrjeejkedrhhgrrdhovhhhrdhnvghtpdhinhgvtheptddrtddrtddrtddpmhgrihhlfhhrohhmpegrnhguihesvghtvgiiihgrnhdrohhrghdprhgtphhtthhopehinhhtvghlqdhgfhigsehlihhsthhsrdhfrhgvvgguvghskhhtohhprdhorhhg Subject: [Intel-gfx] [PATCH v2] 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" RnJvbTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+CgpUaGUgR1QgaGFzIGl0cyBv d24gcHJvcGVydGllcyBhbmQgaW4gc3lzZnMgdGhleSBzaG91bGQgYmUgZ3JvdXBlZAppbiB0aGUg J2d0LycgZGlyZWN0b3J5LgoKQ3JlYXRlIHRoZSAnZ3QvJyBkaXJlY3RvcnkgaW4gc3lzZnMgYW5k IG1vdmUgdGhlIHBvd2VyIG1hbmFnZW1lbnQKcmVsYXRlZCBmaWxlcy4KClNpZ25lZC1vZmYtYnk6 IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgotLS0KSGksCgp0aGlzIHNlY29uZCB2 ZXJzaW9uIHRha2VzIGludG8gYWNjb3VudCB0aGUgY29tcGF0aWJpbGl0eSB3aXRoIHRoZQpleGlz dGluZyBBUEkuIFZlcnNpb24gMSB3YXMgYnJlYWtpbmcgaXQgd2hpbGUgdGhpcyBzZWNvbmQgdmVy c2lvbgpnZW5lcmF0ZXMgdGhlIGZpbGVzIHR3aWNlIGluIHJlZHVuZGFuY3kuCgpUaGFua3MgQ2hy aXMgYW5kIEphbmkgZm9yIHRoZSByZXZpZXcsCkFuZGkKCkNoYW5nZWxvZzoKPT09PT09PT09PQp2 MSAtPiB2MjoKIC0ga2VlcCB0aGUgZXhpc3RpbmcgZmlsZXMgYXMgdGhleSBhcmUKIC0gdXNlICJp bnRlbF9ndF8qIiBhcyBwcmVmaXggaW5zdGVhZCBvZiAic3lzZnNfKiIKCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9ndC5jICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0X3R5cGVzLmggfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3Qu YyAgICAgICB8ICA2NyArKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5oICAg ICAgIHwgIDE1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0X3BtLmMgICAgfCA0 NTYgKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2Zz X2d0X3BtLmggICAgfCAgMTcgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAg ICAgICB8IDM3NSArLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3N5c2ZzLmggICAgICAgIHwgICAzICsKIDkgZmlsZXMgY2hhbmdlZCwgNTY2IGluc2VydGlvbnMo KyksIDM3NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zeXNmc19ndC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc3lzZnNfZ3QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3N5c2ZzX2d0X3BtLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zeXNmc19ndF9wbS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCA0OWVlZDUwZWYwYTQu LjNiODFjOGE5NmMwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTEwNiw3ICsxMDYsOSBAQCBn dC15ICs9IFwKIAlndC9pbnRlbF9ycHMubyBcCiAJZ3QvaW50ZWxfc3NldS5vIFwKIAlndC9pbnRl bF90aW1lbGluZS5vIFwKLQlndC9pbnRlbF93b3JrYXJvdW5kcy5vCisJZ3QvaW50ZWxfd29ya2Fy b3VuZHMubyBcCisJZ3Qvc3lzZnNfZ3QubyBcCisJZ3Qvc3lzZnNfZ3RfcG0ubwogIyBhdXRvZ2Vu ZXJhdGVkIG51bGwgcmVuZGVyIHN0YXRlCiBndC15ICs9IFwKIAlndC9nZW42X3JlbmRlcnN0YXRl Lm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMKaW5kZXggZjFmMWIzMDZlMGFmLi5lNzk0 ZDA1ZDY5YTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuYwpAQCAtMTUsNiArMTUsNyBA QAogI2luY2x1ZGUgImludGVsX3Jwcy5oIgogI2luY2x1ZGUgImludGVsX3VuY29yZS5oIgogI2lu Y2x1ZGUgImludGVsX3BtLmgiCisjaW5jbHVkZSAic3lzZnNfZ3QuaCIKIAogdm9pZCBpbnRlbF9n dF9pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQogewpAQCAtMzIxLDYgKzMyMiw3IEBAIHZvaWQgaW50ZWxfZ3RfZHJpdmVyX3JlZ2lz dGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJaW50ZWxfcnBzX2RyaXZlcl9yZWdpc3RlcigmZ3Qt PnJwcyk7CiAKIAlkZWJ1Z2ZzX2d0X3JlZ2lzdGVyKGd0KTsKKwlpbnRlbF9ndF9zeXNmc19yZWdp c3RlcihndCk7CiB9CiAKIHN0YXRpYyBpbnQgaW50ZWxfZ3RfaW5pdF9zY3JhdGNoKHN0cnVjdCBp bnRlbF9ndCAqZ3QsIHVuc2lnbmVkIGludCBzaXplKQpAQCAtNjQxLDYgKzY0Myw3IEBAIHZvaWQg aW50ZWxfZ3RfZHJpdmVyX3JlbW92ZShzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiB2b2lkIGludGVs X2d0X2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiB7CisJaW50ZWxfZ3Rf c3lzZnNfdW5yZWdpc3RlcihndCk7CiAJaW50ZWxfcnBzX2RyaXZlcl91bnJlZ2lzdGVyKCZndC0+ cnBzKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3Rf dHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKaW5kZXgg OTY4OTBkZDEyYjVmLi5jZGY2NTlhN2M3NGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3RfdHlwZXMuaApAQCAtMzIsNiArMzIsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3QgewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1OwogCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZTsK IAlzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0OworCXN0cnVjdCBrb2JqZWN0ICprb2JqOwogCiAJc3Ry dWN0IGludGVsX3VjIHVjOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z eXNmc19ndC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE0MTUxOGMxMDFlZAotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0LmMKQEAgLTAsMCArMSw2NyBA QAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorCisvKgorICogQ29weXJpZ2h0IMKp IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tvYmplY3QuaD4K KyNpbmNsdWRlIDxsaW51eC9wcmludGsuaD4KKworI2luY2x1ZGUgIi4uL2k5MTVfZHJ2LmgiCisj aW5jbHVkZSAiaW50ZWxfZ3QuaCIKKyNpbmNsdWRlICJpbnRlbF9ndF90eXBlcy5oIgorI2luY2x1 ZGUgImludGVsX3JjNi5oIgorCisjaW5jbHVkZSAic3lzZnNfZ3RfcG0uaCIKKworc3RhdGljIHNz aXplX3QgZ3RfaW5mb19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCSAgICBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICBjaGFyICpidWZmKQoreworCXJldHVybiBzbnBy aW50ZihidWZmLCBQQUdFX1NJWkUsICIwXG4iKTsKK30KKworc3RhdGljIERFVklDRV9BVFRSX1JP KGd0X2luZm8pOworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqZ3RfYXR0cnNbXSA9 IHsKKwkmZGV2X2F0dHJfZ3RfaW5mby5hdHRyLAorCU5VTEwKK307CisKK3ZvaWQgaW50ZWxfZ3Rf c3lzZnNfcmVnaXN0ZXIoc3RydWN0IGludGVsX2d0ICpndCkKK3sKKwlzdHJ1Y3Qga29iamVjdCAq cGFyZW50ID0ga29iamVjdF9nZXQoJmd0LT5pOTE1LT5kcm0ucHJpbWFyeS0+a2Rldi0+a29iaik7 CisJaW50IHJldDsKKworCWd0LT5rb2JqID0ga29iamVjdF9jcmVhdGVfYW5kX2FkZCgiZ3QiLCBw YXJlbnQpOworCWlmICghZ3QtPmtvYmopIHsKKwkJcHJfZXJyKCJmYWlsZWQgdG8gaW5pdGlhbGl6 ZSBzeXNmcyBmaWxlXG4iKTsKKwkJcmV0dXJuOworCX0KKworCWRldl9zZXRfZHJ2ZGF0YShrb2Jq X3RvX2RldihndC0+a29iaiksIGd0KTsKKworCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlcyhndC0+ a29iaiwgZ3RfYXR0cnMpOworCWlmIChyZXQpCisJCXByX2VycigiZmFpbGVkIHRvIGNyZWF0ZSBz eXNmcyBndCBpbmZvIGZpbGVzXG4iKTsKKworCWludGVsX2d0X3N5c2ZzX3BtX2luaXQoZ3QsIGd0 LT5rb2JqKTsKKworCS8qCisJICogd2UgbmVlZCB0byBtYWtlIHRoaW5ncyByaWdodCB3aXRoIHRo ZQorCSAqIEFCSSBjb21wYXRpYmlsaXR5LiBUaGUgZmlsZXMgd2VyZSBvcmlnaW5hbGx5CisJICog Z2VuZXJhdGVkIHVuZGVyIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorCSAqLworCWludGVsX2d0X3N5 c2ZzX3BtX2luaXQoZ3QsIHBhcmVudCk7Cit9CisKK3ZvaWQgaW50ZWxfZ3Rfc3lzZnNfdW5yZWdp c3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQoreworCWlmICghZ3QtPmtvYmopCisJCXJldHVybjsK KworCWludGVsX2d0X3N5c2ZzX3BtX3JlbW92ZShndCwgZ3QtPmtvYmopOworCXN5c2ZzX3JlbW92 ZV9maWxlcyhndC0+a29iaiwgZ3RfYXR0cnMpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc3lzZnNfZ3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0 LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wN2UwOGNkNTk5YjgK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndC5oCkBA IC0wLDAgKzEsMTUgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKworLyoK KyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBT WVNGU19HVF9ICisjZGVmaW5lIFNZU0ZTX0dUX0gKKworc3RydWN0IGludGVsX2d0OworCit2b2lk IGludGVsX2d0X3N5c2ZzX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpOwordm9pZCBpbnRl bF9ndF9zeXNmc191bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpOworCisjZW5kaWYgLyog U1lTRlNfR1RfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc3lzZnNf Z3RfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3N5c2ZzX2d0X3BtLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mM2IzNzNiOWU5NTMKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zeXNmc19ndF9wbS5jCkBAIC0wLDAgKzEs NDU2IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisKKy8qCisgKiBDb3B5cmln aHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpbmNsdWRlIDxsaW51eC9zeXNm cy5oPgorI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcHJpbnRr Lmg+CisKKyNpbmNsdWRlICIuLi9pOTE1X2Rydi5oIgorI2luY2x1ZGUgIi4uL2k5MTVfc3lzZnMu aCIKKyNpbmNsdWRlICJpbnRlbF9ndC5oIgorI2luY2x1ZGUgImludGVsX2d0X3R5cGVzLmgiCisj aW5jbHVkZSAiaW50ZWxfcmM2LmgiCisjaW5jbHVkZSAiaW50ZWxfcnBzLmgiCisjaW5jbHVkZSAi c3lzZnNfZ3RfcG0uaCIKKworc3RydWN0IGludGVsX2d0ICppbnRlbF9ndF9zeXNmc19nZXRfZHJ2 ZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGtvYmplY3QgKmtvYmogPSAmZGV2 LT5rb2JqOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworCisJLyoKKwkgKiBXZSBh cmUgaW50ZXJlc3RlZCBhdCBrbm93aW5nIGZyb20gd2hlcmUgdGhlIGludGVyZmFjZQorCSAqIGhh cyBiZWVuIGNhbGxlZCwgd2hldGhlciBpdCdzIGNhbGxlZCBmcm9tIGd0Lyogb3IgZnJvbQorCSAq IHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorCSAqIEZyb20gdGhlIGludGVyZmFjZSBwb3NpdGlvbiBp dCBkZXBlbmRzIGFsc28gdGhlIHZhbHVlIG9mCisJICogdGhlIHByaXZhdGUgZGF0YS4KKwkgKiBJ ZiB0aGUgaW50ZXJmYWNlIGlzIGNhbGxlZCBmcm9tIGd0LyB0aGVuIHByaXZhdGUgZGF0YSBpcwor CSAqIG9mIHRoZSAic3RydWN0IGludGVsX2d0ICoiIHR5cGUsIG90aGVyd2lzZSBpdCdzICogYQor CSAqICJzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqIiB0eXBlLgorCSAqLworCWlmIChzdHJjbXAo a29iai0+bmFtZSwgImd0IikpIHsKKwkJcHJfd2FybigidGhlIGludGVyZmFjZSBpcyBvYnNvbGV0 ZSwgdXNlIGd0L1xuIik7CisJCWk5MTUgPSBrZGV2X21pbm9yX3RvX2k5MTUoZGV2KTsKKwkJcmV0 dXJuICZpOTE1LT5ndDsKKwl9CisKKwlyZXR1cm4gZGV2X2dldF9kcnZkYXRhKGRldik7Cit9CisK KyNpZmRlZiBDT05GSUdfUE0KK3N0YXRpYyB1MzIgZ2V0X3Jlc2lkZW5jeShzdHJ1Y3QgaW50ZWxf Z3QgKmd0LCBpOTE1X3JlZ190IHJlZykKK3sKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwl1 NjQgcmVzID0gMDsKKworCXdpdGhfaW50ZWxfcnVudGltZV9wbShndC0+dW5jb3JlLT5ycG0sIHdh a2VyZWYpCisJCXJlcyA9IGludGVsX3JjNl9yZXNpZGVuY3lfdXMoJmd0LT5yYzYsIHJlZyk7CisK KwlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1RfVUxMKHJlcywgMTAwMCk7Cit9CisKK3N0YXRpYyBz c2l6ZV90IHJjNl9lbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkgICAgICAgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICAgICAgY2hhciAqYnVmZikKK3sKKwlz dHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwl1 OCBtYXNrID0gMDsKKworCWlmIChIQVNfUkM2KGd0LT5pOTE1KSkKKwkJbWFzayB8PSBCSVQoMCk7 CisJaWYgKEhBU19SQzZwKGd0LT5pOTE1KSkKKwkJbWFzayB8PSBCSVQoMSk7CisJaWYgKEhBU19S QzZwcChndC0+aTkxNSkpCisJCW1hc2sgfD0gQklUKDIpOworCisJcmV0dXJuIHNucHJpbnRmKGJ1 ZmYsIFBBR0VfU0laRSwgIiV4XG4iLCBtYXNrKTsKK30KKworc3RhdGljIHNzaXplX3QgcmM2X3Jl c2lkZW5jeV9tc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgICAgIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLAorCQkJCSAgICAgY2hhciAqYnVmZikKK3sKKwlzdHJ1Y3QgaW50 ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwl1MzIgcmM2X3Jl c2lkZW5jeSA9IGdldF9yZXNpZGVuY3koZ3QsIEdFTjZfR1RfR0ZYX1JDNik7CisKKwlyZXR1cm4g c25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNl9yZXNpZGVuY3kpOworfQorCitz dGF0aWMgc3NpemVfdCByYzZwX3Jlc2lkZW5jeV9tc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwK KwkJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkgICAgICBjaGFy ICpidWZmKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2 ZGF0YShkZXYpOworCXUzMiByYzZwX3Jlc2lkZW5jeSA9IGdldF9yZXNpZGVuY3koZ3QsIEdFTjZf R1RfR0ZYX1JDNnApOworCisJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiV1XG4i LCByYzZwX3Jlc2lkZW5jeSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHJjNnBwX3Jlc2lkZW5jeV9t c19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgICAgICAgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsCisJCQkJICAgICAgIGNoYXIgKmJ1ZmYpCit7CisJc3RydWN0IGludGVsX2d0 ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7CisJdTMyIHJjNnBwX3Jlc2lk ZW5jeSA9IGdldF9yZXNpZGVuY3koZ3QsIEdFTjZfR1RfR0ZYX1JDNnBwKTsKKworCXJldHVybiBz bnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIldVxuIiwgcmM2cHBfcmVzaWRlbmN5KTsKK30KKwor c3RhdGljIHNzaXplX3QgbWVkaWFfcmM2X3Jlc2lkZW5jeV9tc19zaG93KHN0cnVjdCBkZXZpY2Ug KmRldiwKKwkJCQkJICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJCSAgIGNo YXIgKmJ1ZmYpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9k cnZkYXRhKGRldik7CisJdTMyIHJjNl9yZXNpZGVuY3kgPSBnZXRfcmVzaWRlbmN5KGd0LCBWTFZf R1RfTUVESUFfUkM2KTsKKworCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJWkUsICIldVxu IiwgcmM2X3Jlc2lkZW5jeSk7Cit9CisKK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhyYzZfZW5hYmxl KTsKK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhyYzZfcmVzaWRlbmN5X21zKTsKK3N0YXRpYyBERVZJ Q0VfQVRUUl9STyhyYzZwX3Jlc2lkZW5jeV9tcyk7CitzdGF0aWMgREVWSUNFX0FUVFJfUk8ocmM2 cHBfcmVzaWRlbmN5X21zKTsKK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhtZWRpYV9yYzZfcmVzaWRl bmN5X21zKTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnJjNl9hdHRyc1tdID0geworCSZk ZXZfYXR0cl9yYzZfZW5hYmxlLmF0dHIsCisJJmRldl9hdHRyX3JjNl9yZXNpZGVuY3lfbXMuYXR0 ciwKKwlOVUxMCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqcmM2cF9hdHRyc1tdID0g eworCSZkZXZfYXR0cl9yYzZwX3Jlc2lkZW5jeV9tcy5hdHRyLAorCSZkZXZfYXR0cl9yYzZwcF9y ZXNpZGVuY3lfbXMuYXR0ciwKKwlOVUxMCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAq bWVkaWFfcmM2X2F0dHJzW10gPSB7CisJJmRldl9hdHRyX21lZGlhX3JjNl9yZXNpZGVuY3lfbXMu YXR0ciwKKwlOVUxMCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBy YzZfYXR0cmlidXRlX2dyb3VwID0geworCS5hdHRycyA9IHJjNl9hdHRycywKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIHJjNnBfYXR0cmlidXRlX2dyb3VwID0gewor CS5hdHRycyA9IHJjNnBfYXR0cnMsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0 ZV9ncm91cCBtZWRpYV9yYzZfYXR0cmlidXRlX2dyb3VwID0geworCS5hdHRycyA9IG1lZGlhX3Jj Nl9hdHRycywKK307CisKK3N0YXRpYyB2b2lkIGludGVsX3N5c2ZzX3JjNl9pbml0KHN0cnVjdCBp bnRlbF9ndCAqZ3QsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQoreworCWludCByZXQgPSAwOworCisJ aWYgKEhBU19SQzYoZ3QtPmk5MTUpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChrb2Jq LCAmcmM2X2F0dHJpYnV0ZV9ncm91cCk7CisJCWlmIChyZXQpCisJCQlwcl9lcnIoImZhaWxlZCB0 byBjcmVhdGUgUkM2IHN5c2ZzIGZpbGVzXG4iKTsKKwl9CisKKwlpZiAoSEFTX1JDNnAoZ3QtPmk5 MTUpKSB7CisJCXJldCA9IHN5c2ZzX21lcmdlX2dyb3VwKGtvYmosICZyYzZwX2F0dHJpYnV0ZV9n cm91cCk7CisJCWlmIChyZXQpCisJCQlwcl9lcnIoImZhaWxlZCB0byBjcmVhdGUgUkM2cCBzeXNm cyBmaWxlc1xuIik7CisJfQorCisJaWYgKElTX1ZBTExFWVZJRVcoZ3QtPmk5MTUpIHx8IElTX0NI RVJSWVZJRVcoZ3QtPmk5MTUpKSB7CisJCXJldCA9IHN5c2ZzX21lcmdlX2dyb3VwKGtvYmosICZt ZWRpYV9yYzZfYXR0cmlidXRlX2dyb3VwKTsKKwkJaWYgKHJldCkKKwkJCXByX2VycigiZmFpbGVk IHRvIGNyZWF0ZSBtZWRpYSBSQzYgc3lzZnMgZmlsZXNcbiIpOworCX0KK30KKyNlbHNlCitzdGF0 aWMgaW50IGludGVsX3N5c2ZzX3JjNl9pbml0KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBr b2JqZWN0ICprb2JqKQoreworCXJldHVybiAwOworfQorI2VuZGlmIC8qIENPTkZJR19QTSAqLwor CitzdGF0aWMgc3NpemVfdCBndF9hY3RfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYs CisJCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWZmKQorewor CXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOwor CisJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVkXG4iLAorCQkJaW50ZWxfcnBz X3JlYWRfYWN0dWFsX2ZyZXF1ZW5jeSgmZ3QtPnJwcykpOworfQorCitzdGF0aWMgc3NpemVfdCBn dF9jdXJfZnJlcV9taHpfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWZmKQoreworCXN0cnVjdCBpbnRlbF9ndCAq Z3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF9ycHMg KnJwcyA9ICZndC0+cnBzOworCisJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIFBBR0VfU0laRSwgIiVk XG4iLAorCQkJaW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPmN1cl9mcmVxKSk7Cit9CisKK3N0YXRp YyBzc2l6ZV90IGd0X2Jvb3N0X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJ CSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJCSAgICAgIGNoYXIgKmJ1 ZmYpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRh KGRldik7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisKKwlyZXR1cm4gc25w cmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJWRcbiIsCisJCQlpbnRlbF9ncHVfZnJlcShycHMsIHJw cy0+Ym9vc3RfZnJlcSkpOworfQorCitzdGF0aWMgc3NpemVfdCBndF9ib29zdF9mcmVxX21oel9z dG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpidWZmLCBzaXplX3QgY291bnQpCit7 CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7 CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisJYm9vbCBib29zdCA9IGZhbHNl OworCXNzaXplX3QgcmV0OworCXUzMiB2YWw7CisKKwlyZXQgPSBrc3RydG91MzIoYnVmZiwgMCwg JnZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIFZhbGlkYXRlIGFnYWluc3Qg KHN0YXRpYykgaGFyZHdhcmUgbGltaXRzICovCisJdmFsID0gaW50ZWxfZnJlcV9vcGNvZGUocnBz LCB2YWwpOworCWlmICh2YWwgPCBycHMtPm1pbl9mcmVxIHx8IHZhbCA+IHJwcy0+bWF4X2ZyZXEp CisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmcnBzLT5sb2NrKTsKKwlpZiAodmFs ICE9IHJwcy0+Ym9vc3RfZnJlcSkgeworCQlycHMtPmJvb3N0X2ZyZXEgPSB2YWw7CisJCWJvb3N0 ID0gYXRvbWljX3JlYWQoJnJwcy0+bnVtX3dhaXRlcnMpOworCX0KKwltdXRleF91bmxvY2soJnJw cy0+bG9jayk7CisJaWYgKGJvb3N0KQorCQlzY2hlZHVsZV93b3JrKCZycHMtPndvcmspOworCisJ cmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3NpemVfdCB2bHZfcnBlX2ZyZXFfbWh6X3Nob3co c3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsIGNoYXIgKmJ1ZmYpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2Zz X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisK KwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9TSVpFLCAiJWRcbiIsCisJCQlpbnRlbF9ncHVf ZnJlcShycHMsIHJwcy0+ZWZmaWNpZW50X2ZyZXEpKTsKK30KKworc3RhdGljIHNzaXplX3QgZ3Rf bWF4X2ZyZXFfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgICBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCQkgICAgY2hhciAqYnVmZikKK3sKKwlzdHJ1Y3QgaW50 ZWxfZ3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50 ZWxfcnBzICpycHMgPSAmZ3QtPnJwczsKKworCXJldHVybiBzbnByaW50ZihidWZmLCBQQUdFX1NJ WkUsICIlZFxuIiwKKwkJCWludGVsX2dwdV9mcmVxKHJwcywgcnBzLT5tYXhfZnJlcV9zb2Z0bGlt aXQpKTsKK30KKworc3RhdGljIHNzaXplX3QgZ3RfbWF4X2ZyZXFfbWh6X3N0b3JlKHN0cnVjdCBk ZXZpY2UgKmRldiwKKwkJCQkgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJ CSAgICAgY29uc3QgY2hhciAqYnVmZiwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBpbnRlbF9n dCAqZ3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF9y cHMgKnJwcyA9ICZndC0+cnBzOworCXNzaXplX3QgcmV0OworCXUzMiB2YWw7CisKKwlyZXQgPSBr c3RydG91MzIoYnVmZiwgMCwgJnZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCW11 dGV4X2xvY2soJnJwcy0+bG9jayk7CisKKwl2YWwgPSBpbnRlbF9mcmVxX29wY29kZShycHMsIHZh bCk7CisJaWYgKHZhbCA8IHJwcy0+bWluX2ZyZXEgfHwKKwkgICAgdmFsID4gcnBzLT5tYXhfZnJl cSB8fAorCSAgICB2YWwgPCBycHMtPm1pbl9mcmVxX3NvZnRsaW1pdCkgeworCQlyZXQgPSAtRUlO VkFMOworCQlnb3RvIHVubG9jazsKKwl9CisKKwlpZiAodmFsID4gcnBzLT5ycDBfZnJlcSkKKwkJ RFJNX0RFQlVHKCJVc2VyIHJlcXVlc3RlZCBvdmVyY2xvY2tpbmcgdG8gJWRcbiIsCisJCQkgIGlu dGVsX2dwdV9mcmVxKHJwcywgdmFsKSk7CisKKwlycHMtPm1heF9mcmVxX3NvZnRsaW1pdCA9IHZh bDsKKworCXZhbCA9IGNsYW1wX3QoaW50LCBycHMtPmN1cl9mcmVxLAorCQkgICAgICBycHMtPm1p bl9mcmVxX3NvZnRsaW1pdCwKKwkJICAgICAgcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpOworCisJ LyoKKwkgKiBXZSBzdGlsbCBuZWVkICpfc2V0X3JwcyB0byBwcm9jZXNzIHRoZSBuZXcgbWF4X2Rl bGF5IGFuZAorCSAqIHVwZGF0ZSB0aGUgaW50ZXJydXB0IGxpbWl0cyBhbmQgUE1JTlRSTVNLIGV2 ZW4gdGhvdWdoCisJICogZnJlcXVlbmN5IHJlcXVlc3QgbWF5IGJlIHVuY2hhbmdlZC4KKwkgKi8K KwlpbnRlbF9ycHNfc2V0KHJwcywgdmFsKTsKKwordW5sb2NrOgorCW11dGV4X3VubG9jaygmcnBz LT5sb2NrKTsKKworCXJldHVybiByZXQgPzogY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGd0 X21pbl9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgICAgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJICAgIGNoYXIgKmJ1ZmYpCit7CisJc3RydWN0IGlu dGVsX2d0ICpndCA9IGludGVsX2d0X3N5c2ZzX2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGlu dGVsX3JwcyAqcnBzID0gJmd0LT5ycHM7CisKKwlyZXR1cm4gc25wcmludGYoYnVmZiwgUEFHRV9T SVpFLCAiJWRcbiIsCisJCQlpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+bWluX2ZyZXFfc29mdGxp bWl0KSk7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGd0X21pbl9mcmVxX21oel9zdG9yZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsCisJCQkJICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJ CQkgICAgIGNvbnN0IGNoYXIgKmJ1ZmYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgaW50ZWxf Z3QgKmd0ID0gaW50ZWxfZ3Rfc3lzZnNfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxf cnBzICpycHMgPSAmZ3QtPnJwczsKKwlzc2l6ZV90IHJldDsKKwl1MzIgdmFsOworCisJcmV0ID0g a3N0cnRvdTMyKGJ1ZmYsIDAsICZ2YWwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlt dXRleF9sb2NrKCZycHMtPmxvY2spOworCisJdmFsID0gaW50ZWxfZnJlcV9vcGNvZGUocnBzLCB2 YWwpOworCWlmICh2YWwgPCBycHMtPm1pbl9mcmVxIHx8CisJICAgIHZhbCA+IHJwcy0+bWF4X2Zy ZXEgfHwKKwkgICAgdmFsID4gcnBzLT5tYXhfZnJlcV9zb2Z0bGltaXQpIHsKKwkJcmV0ID0gLUVJ TlZBTDsKKwkJZ290byB1bmxvY2s7CisJfQorCisJcnBzLT5taW5fZnJlcV9zb2Z0bGltaXQgPSB2 YWw7CisKKwl2YWwgPSBjbGFtcF90KGludCwgcnBzLT5jdXJfZnJlcSwKKwkJICAgICAgcnBzLT5t aW5fZnJlcV9zb2Z0bGltaXQsCisJCSAgICAgIHJwcy0+bWF4X2ZyZXFfc29mdGxpbWl0KTsKKwor CS8qCisJICogV2Ugc3RpbGwgbmVlZCAqX3NldF9ycHMgdG8gcHJvY2VzcyB0aGUgbmV3IG1pbl9k ZWxheSBhbmQKKwkgKiB1cGRhdGUgdGhlIGludGVycnVwdCBsaW1pdHMgYW5kIFBNSU5UUk1TSyBl dmVuIHRob3VnaAorCSAqIGZyZXF1ZW5jeSByZXF1ZXN0IG1heSBiZSB1bmNoYW5nZWQuCisJICov CisJaW50ZWxfcnBzX3NldChycHMsIHZhbCk7CisKK3VubG9jazoKKwltdXRleF91bmxvY2soJnJw cy0+bG9jayk7CisKKwlyZXR1cm4gcmV0ID86IGNvdW50OworfQorCitzdGF0aWMgREVWSUNFX0FU VFJfUk8oZ3RfYWN0X2ZyZXFfbWh6KTsKK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhndF9jdXJfZnJl cV9taHopOworc3RhdGljIERFVklDRV9BVFRSX1JXKGd0X2Jvb3N0X2ZyZXFfbWh6KTsKK3N0YXRp YyBERVZJQ0VfQVRUUl9SVyhndF9tYXhfZnJlcV9taHopOworc3RhdGljIERFVklDRV9BVFRSX1JX KGd0X21pbl9mcmVxX21oeik7CisKK3N0YXRpYyBERVZJQ0VfQVRUUl9STyh2bHZfcnBlX2ZyZXFf bWh6KTsKKworc3RhdGljIHNzaXplX3QgZ3RfcnBfbWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2 LAorCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICAgICBjaGFy ICpidWZmKTsKKworc3RhdGljIERFVklDRV9BVFRSKGd0X1JQMF9mcmVxX21oeiwgMDQ0NCwgZ3Rf cnBfbWh6X3Nob3csIE5VTEwpOworc3RhdGljIERFVklDRV9BVFRSKGd0X1JQMV9mcmVxX21oeiwg MDQ0NCwgZ3RfcnBfbWh6X3Nob3csIE5VTEwpOworc3RhdGljIERFVklDRV9BVFRSKGd0X1JQbl9m cmVxX21oeiwgMDQ0NCwgZ3RfcnBfbWh6X3Nob3csIE5VTEwpOworCisvKiBGb3Igbm93IHdlIGhh dmUgYSBzdGF0aWMgbnVtYmVyIG9mIFJQIHN0YXRlcyAqLworc3RhdGljIHNzaXplX3QgZ3RfcnBf bWh6X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsCisJCQkgICAgICBjaGFyICpidWZmKQoreworCXN0cnVjdCBpbnRlbF9ndCAq Z3QgPSBpbnRlbF9ndF9zeXNmc19nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF9ycHMg KnJwcyA9ICZndC0+cnBzOworCXUzMiB2YWw7CisKKwlpZiAoYXR0ciA9PSAmZGV2X2F0dHJfZ3Rf UlAwX2ZyZXFfbWh6KQorCQl2YWwgPSBpbnRlbF9ncHVfZnJlcShycHMsIHJwcy0+cnAwX2ZyZXEp OworCWVsc2UgaWYgKGF0dHIgPT0gJmRldl9hdHRyX2d0X1JQMV9mcmVxX21oeikKKwkJdmFsID0g aW50ZWxfZ3B1X2ZyZXEocnBzLCBycHMtPnJwMV9mcmVxKTsKKwllbHNlIGlmIChhdHRyID09ICZk ZXZfYXR0cl9ndF9SUG5fZnJlcV9taHopCisJCXZhbCA9IGludGVsX2dwdV9mcmVxKHJwcywgcnBz LT5taW5fZnJlcSk7CisJZWxzZQorCQlCVUcoKTsKKworCXJldHVybiBzbnByaW50ZihidWZmLCBQ QUdFX1NJWkUsICIlZFxuIiwgdmFsKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGUgKiBjb25zdCBnZW42X2F0dHJzW10gPSB7CisJJmRldl9hdHRyX2d0X2FjdF9mcmVxX21oei5h dHRyLAorCSZkZXZfYXR0cl9ndF9jdXJfZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfZ3RfYm9v c3RfZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfZ3RfbWF4X2ZyZXFfbWh6LmF0dHIsCisJJmRl dl9hdHRyX2d0X21pbl9mcmVxX21oei5hdHRyLAorCSZkZXZfYXR0cl9ndF9SUDBfZnJlcV9taHou YXR0ciwKKwkmZGV2X2F0dHJfZ3RfUlAxX2ZyZXFfbWh6LmF0dHIsCisJJmRldl9hdHRyX2d0X1JQ bl9mcmVxX21oei5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJp YnV0ZSAqIGNvbnN0IHZsdl9hdHRyc1tdID0geworCSZkZXZfYXR0cl9ndF9hY3RfZnJlcV9taHou YXR0ciwKKwkmZGV2X2F0dHJfZ3RfY3VyX2ZyZXFfbWh6LmF0dHIsCisJJmRldl9hdHRyX2d0X2Jv b3N0X2ZyZXFfbWh6LmF0dHIsCisJJmRldl9hdHRyX2d0X21heF9mcmVxX21oei5hdHRyLAorCSZk ZXZfYXR0cl9ndF9taW5fZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfZ3RfUlAwX2ZyZXFfbWh6 LmF0dHIsCisJJmRldl9hdHRyX2d0X1JQMV9mcmVxX21oei5hdHRyLAorCSZkZXZfYXR0cl9ndF9S UG5fZnJlcV9taHouYXR0ciwKKwkmZGV2X2F0dHJfdmx2X3JwZV9mcmVxX21oei5hdHRyLAorCU5V TEwsCit9OworCitzdGF0aWMgaW50IGludGVsX3N5c2ZzX3Jwc19pbml0KHN0cnVjdCBpbnRlbF9n dCAqZ3QsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQoreworCWlmIChJU19WQUxMRVlWSUVXKGd0LT5p OTE1KSB8fCBJU19DSEVSUllWSUVXKGd0LT5pOTE1KSkKKwkJcmV0dXJuIHN5c2ZzX2NyZWF0ZV9m aWxlcyhrb2JqLCB2bHZfYXR0cnMpOworCisJaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gNikK KwkJcmV0dXJuIHN5c2ZzX2NyZWF0ZV9maWxlcyhrb2JqLCBnZW42X2F0dHJzKTsKKworCXJldHVy biAwOworfQorCit2b2lkIGludGVsX2d0X3N5c2ZzX3BtX2luaXQoc3RydWN0IGludGVsX2d0ICpn dCwgc3RydWN0IGtvYmplY3QgKmtvYmopCit7CisJaW50IHJldDsKKworCWludGVsX3N5c2ZzX3Jj Nl9pbml0KGd0LCBrb2JqKTsKKworCXJldCA9IGludGVsX3N5c2ZzX3Jwc19pbml0KGd0LCBrb2Jq KTsKKwlpZiAocmV0KQorCQlwcl9lcnIoImZhaWxlZCB0byBjcmVhdGUgUlBTIHN5c2ZzIGZpbGVz Iik7Cit9CisKK3ZvaWQgaW50ZWxfZ3Rfc3lzZnNfcG1fcmVtb3ZlKHN0cnVjdCBpbnRlbF9ndCAq Z3QsIHN0cnVjdCBrb2JqZWN0ICprb2JqKQoreworI2lmZGVmIENPTkZJR19QTQorCWlmIChIQVNf UkM2cChndC0+aTkxNSkpCisJCXN5c2ZzX3VubWVyZ2VfZ3JvdXAoa29iaiwgJnJjNnBfYXR0cmli dXRlX2dyb3VwKTsKKwlpZiAoSVNfVkFMTEVZVklFVyhndC0+aTkxNSkgfHwgSVNfQ0hFUlJZVklF VyhndC0+aTkxNSkpCisJCXN5c2ZzX3VubWVyZ2VfZ3JvdXAoa29iaiwgJm1lZGlhX3JjNl9hdHRy aWJ1dGVfZ3JvdXApOworCWlmIChIQVNfUkM2KGd0LT5pOTE1KSkKKwkJc3lzZnNfcmVtb3ZlX2dy b3VwKGtvYmosICZyYzZfYXR0cmlidXRlX2dyb3VwKTsKKyNlbmRpZgorCisJaWYgKElTX1ZBTExF WVZJRVcoZ3QtPmk5MTUpIHx8IElTX0NIRVJSWVZJRVcoZ3QtPmk5MTUpKQorCQlzeXNmc19yZW1v dmVfZmlsZXMoa29iaiwgdmx2X2F0dHJzKTsKKwllbHNlCisJCXN5c2ZzX3JlbW92ZV9maWxlcyhr b2JqLCBnZW42X2F0dHJzKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 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