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=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,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 4E253C43331 for ; Fri, 3 Apr 2020 18:39:03 +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 0154A20737 for ; Fri, 3 Apr 2020 18:39:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0154A20737 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 7D88C6E172; Fri, 3 Apr 2020 18:39:02 +0000 (UTC) Received: from 1.mo2.mail-out.ovh.net (1.mo2.mail-out.ovh.net [46.105.63.121]) by gabe.freedesktop.org (Postfix) with ESMTPS id C35D56E172 for ; Fri, 3 Apr 2020 18:39:00 +0000 (UTC) Received: from player770.ha.ovh.net (unknown [10.108.35.210]) by mo2.mail-out.ovh.net (Postfix) with ESMTP id 800641CF1C5 for ; Fri, 3 Apr 2020 20:38:58 +0200 (CEST) Received: from etezian.org (213-243-141-64.bb.dnainternet.fi [213.243.141.64]) (Authenticated sender: andi@etezian.org) by player770.ha.ovh.net (Postfix) with ESMTPSA id AFC10112EE20D; Fri, 3 Apr 2020 18:38:49 +0000 (UTC) From: Andi Shyti To: Intel GFX Date: Fri, 3 Apr 2020 21:38:37 +0300 Message-Id: <20200403183837.99554-1-andi@etezian.org> X-Mailer: git-send-email 2.25.0 MIME-Version: 1.0 X-Ovh-Tracer-Id: 9422093372352938589 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: -100 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgeduhedrtdeigdduvdekucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffogggtgfesthekredtredtjeenucfhrhhomheptehnughiucfuhhihthhiuceorghnughisegvthgviihirghnrdhorhhgqeenucfkpheptddrtddrtddrtddpvddufedrvdegfedrudeguddrieegnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmohguvgepshhmthhpqdhouhhtpdhhvghlohepphhlrgihvghrjeejtddrhhgrrdhovhhhrdhnvghtpdhinhgvtheptddrtddrtddrtddpmhgrihhlfhhrohhmpegrnhguihesvghtvgiiihgrnhdrohhrghdprhgtphhtthhopehinhhtvghlqdhgfhigsehlihhsthhsrdhfrhgvvgguvghskhhtohhprdhorhhg Subject: [Intel-gfx] [PATCH v5] drm/i915/gt: move remaining debugfs interfaces into gt X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chris Wilson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+CgpUaGUgZm9sbG93aW5nIGlu dGVyZmFjZXM6CgogIGk5MTVfd2VkZ2VkCiAgaTkxNV9mb3JjZXdha2VfdXNlcgogIGk5MTVfZ2Vt X2ludGVycnVwdAogIGk5MTVfcmNzX3RvcG9sb2d5CiAgaTkxNV9zc2V1X3N0YXR1cwoKYXJlIGRl cGVuZGVudCBvbiBndCB2YWx1ZXMuIFB1dCB0aGVtIGluc2lkZSBndC8gYW5kIGRyb3AgdGhlCiJp OTE1XyIgcHJlZml4IG5hbWUuIFRoaXMgd291bGQgYmUgdGhlIG5ldyBzdHJ1Y3R1cmU6CgogIGd0 CiAgfAogICstLSBmb3JjZXdha2VfdXNlcgogIHwKICArLS0gaW50ZXJydXB0X2luZm8KICB8CiAg Ky0tIHJlc2V0CiAgfAogICstLSByY3NfdG9wb2xvZ3kKICB8CiAgKy0tIHNzZXVfc3RhdHVzCgpT aWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxhbmRpLnNoeXRpQGludGVsLmNvbT4KUmV2aWV3ZWQt Ynk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ClJldmlld2VkLWJ5 OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCkhpLAoKdGhpcyBw YXRjaCBpcyB0aGUgZmlyc3Qgb2YgYSBzZXJpZXMgdGhhdCBhaW1zIHRvIHJlZmFjdG9yIHRoZQpk ZWJ1Z2ZzIHN0cnVjdHVyZSBpbiB0aGUgaTkxNS4gU29tZSBjaGFuZ2VzIHdpbGwgYWZmZWN0IHRo ZQpkZWJ1Z2ZzIGZyYW1ld29yayBhcyB3ZWxsLgoKSXQgaGFzIGdvbmUgdGhyb3VnaCBhIHNlcmll cyBvZiBvZmZsaW5lIHJldmlld3MgbWFpbmx5IGZyb20KVHZydGtvLiBFdmVuIHRob3VnaCBpdCBo YXNuJ3QgYmVlbiBkb25lIHB1YmxpY2x5LCBJIHRvb2sgdGhlCmZyZWVkb20gdG8gYWRkIFR2cnRr bydzIHJldmlldy4KClRoYW5rcyBUdnJ0a28gYW5kIENocmlzIGZvciB0aGUgcmV2aWV3LApBbmRp CgpDaGFuZ2Vsb2cKPT09PT09PT09CnY1OgogLSByZW5hbWVkIGZyb20gZGVidWdmc19ndF9zc2V1 LltjaF0gdG8gZGVidWdmc19zc2V1LltjaF0KIC0gbW92ZWQgaTkxNV9yY3NfdG9wb2xvZ3kgZnJv bSBpOTE1X2RlYnVnZnMuYyB0bwogICBndC9kZWJ1Z2ZzX3NzZXUuYwogLSBhZGRlZCBUdnJ0a28n cyBhbmQgQ2hyaXMgci1iLgp2NDoKIC0gaW50ZXJydXB0IGFuZCBzc2V1IGRlYnVnZnMgaW50ZXJm YWNlIGFyZSBtb3ZlZCB0byB0aGVpciBvd24KICAgImRlYnVnZnNfZ3RfaXJxIiBhbmQgImRlYnVn ZnNfZ3Rfc3NldSIgZmlsZXMKIC0gcmVzZXQgZnVuY3Rpb25zIGFyZSByZW5hbWVkIHRvIHJlc2V0 X3Nob3cvc3RvcmUKdjM6CiAtIGJldHRlciBhcnJhbmdlbWVudCBvZiB3aGF0IHNob3VsZCBzdGF5 IGluIGk5MTVfZGVidWdmcyBhbmQKICAgd2hhdCBuZWVkcyB0byBiZSBtb3ZlZCB1bmRlciBndC8K IC0gbW9yZSB1c2Ugb2YgdGhlIGxvY2FsICJ1bmNvcmUiIGFuZCAiaTkxNSIgdmFyaWFibGVzIHRv IGltcHJvdmUKICAgcmVhZGFiaWxpdHkKdjI6CiAtIGRyb3BwZWQgY2hhbmdlcyBvbiAiZHJvcF9j YWNoZXMiLCB0aGV5IHdlcmUgaW5kZWVkIGlycmVsZXZhbnQKIC0gaW1wcm92ZWQgaW50ZXJydXB0 IGluZm8gZnVuY3Rpb24KCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAg IHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3QuYyAgICAgfCAgNTAg KystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9kZWJ1Z2ZzX2d0X2lycS5jIHwgMTYyICsrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfaXJxLmggfCAgMTUgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdmc19ndF9wbS5jICB8ICAzMiArKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdmc19zc2V1LmMgICB8IDI5NCArKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdmc19zc2V1LmggICB8ICAxNiArCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgIHwgMzg0ICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDU3MSBpbnNlcnRpb25zKCspLCAzODQgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZGVidWdm c19ndF9pcnEuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2Rl YnVnZnNfZ3RfaXJxLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9kZWJ1Z2ZzX3NzZXUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2RlYnVnZnNfc3NldS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCAyZmNlOGIwMDQwZjMu LjUxOTI5ZDY2NDhlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTc5LDYgKzc5LDggQEAgZ3Qt eSArPSBcCiAJZ3QvZGVidWdmc19lbmdpbmVzLm8gXAogCWd0L2RlYnVnZnNfZ3QubyBcCiAJZ3Qv ZGVidWdmc19ndF9wbS5vIFwKKwlndC9kZWJ1Z2ZzX2d0X2lycS5vIFwKKwlndC9kZWJ1Z2ZzX3Nz ZXUubyBcCiAJZ3QvZ2VuNl9wcGd0dC5vIFwKIAlndC9nZW43X3JlbmRlcmNsZWFyLm8gXAogCWd0 L2dlbjhfcHBndHQubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9kZWJ1 Z2ZzX2d0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9kZWJ1Z2ZzX2d0LmMKaW5kZXggMWRl NWZiYWExY2Y5Li41MDdmZTVkY2IzNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2RlYnVnZnNfZ3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9kZWJ1Z2ZzX2d0 LmMKQEAgLTgsOSArOCw1MyBAQAogCiAjaW5jbHVkZSAiZGVidWdmc19lbmdpbmVzLmgiCiAjaW5j bHVkZSAiZGVidWdmc19ndC5oIgorI2luY2x1ZGUgImRlYnVnZnNfZ3RfaXJxLmgiCiAjaW5jbHVk ZSAiZGVidWdmc19ndF9wbS5oIgotI2luY2x1ZGUgInVjL2ludGVsX3VjX2RlYnVnZnMuaCIKKyNp bmNsdWRlICJkZWJ1Z2ZzX3NzZXUuaCIKICNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUg ImludGVsX2d0X3BtLmgiCisjaW5jbHVkZSAiaW50ZWxfZ3RfcmVxdWVzdHMuaCIKKyNpbmNsdWRl ICJ1Yy9pbnRlbF91Y19kZWJ1Z2ZzLmgiCisKK3N0YXRpYyBpbnQgcmVzZXRfc2hvdyh2b2lkICpk YXRhLCB1NjQgKnZhbCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gZGF0YTsKKwlpbnQgcmV0 ID0gaW50ZWxfZ3RfdGVybWluYWxseV93ZWRnZWQoZ3QpOworCisJc3dpdGNoIChyZXQpIHsKKwlj YXNlIC1FSU86CisJCSp2YWwgPSAxOworCQlyZXR1cm4gMDsKKwljYXNlIDA6CisJCSp2YWwgPSAw OworCQlyZXR1cm4gMDsKKwlkZWZhdWx0OgorCQlyZXR1cm4gcmV0OworCX0KK30KKworc3RhdGlj IGludCByZXNldF9zdG9yZSh2b2lkICpkYXRhLCB1NjQgdmFsKQoreworCXN0cnVjdCBpbnRlbF9n dCAqZ3QgPSBkYXRhOworCisJLyogRmx1c2ggYW55IHByZXZpb3VzIHJlc2V0IGJlZm9yZSBhcHBs eWluZyBmb3IgYSBuZXcgb25lICovCisJd2FpdF9ldmVudChndC0+cmVzZXQucXVldWUsCisJCSAg ICF0ZXN0X2JpdChJOTE1X1JFU0VUX0JBQ0tPRkYsICZndC0+cmVzZXQuZmxhZ3MpKTsKKworCWlu dGVsX2d0X2hhbmRsZV9lcnJvcihndCwgdmFsLCBJOTE1X0VSUk9SX0NBUFRVUkUsCisJCQkgICAg ICAiTWFudWFsbHkgcmVzZXQgZW5naW5lIG1hc2sgdG8gJWxseCIsIHZhbCk7CisJcmV0dXJuIDA7 Cit9CitERUZJTkVfU0lNUExFX0FUVFJJQlVURShyZXNldF9mb3BzLCByZXNldF9zaG93LCByZXNl dF9zdG9yZSwgIiVsbHVcbiIpOworCitzdGF0aWMgdm9pZCBfX2RlYnVnZnNfZ3RfcmVnaXN0ZXIo c3RydWN0IGludGVsX2d0ICpndCwgc3RydWN0IGRlbnRyeSAqcm9vdCkKK3sKKwlzdGF0aWMgY29u c3Qgc3RydWN0IGRlYnVnZnNfZ3RfZmlsZSBmaWxlc1tdID0geworCQl7ICJyZXNldCIsICZyZXNl dF9mb3BzLCBOVUxMIH0sCisJfTsKKworCWludGVsX2d0X2RlYnVnZnNfcmVnaXN0ZXJfZmlsZXMo cm9vdCwgZmlsZXMsIEFSUkFZX1NJWkUoZmlsZXMpLCBndCk7Cit9CiAKIHZvaWQgZGVidWdmc19n dF9yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogewpAQCAtMjMsOCArNjcsMTIgQEAgdm9p ZCBkZWJ1Z2ZzX2d0X3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJaWYgKElTX0VSUihy b290KSkKIAkJcmV0dXJuOwogCisJX19kZWJ1Z2ZzX2d0X3JlZ2lzdGVyKGd0LCByb290KTsKKwog CWRlYnVnZnNfZW5naW5lc19yZWdpc3RlcihndCwgcm9vdCk7CiAJZGVidWdmc19ndF9wbV9yZWdp c3RlcihndCwgcm9vdCk7CisJZGVidWdmc19ndF9yZWdpc3Rlcl9zc2V1KGd0LCByb290KTsKKwlk ZWJ1Z2ZzX2d0X3JlZ2lzdGVyX2lycShndCwgcm9vdCk7CiAKIAlpbnRlbF91Y19kZWJ1Z2ZzX3Jl Z2lzdGVyKCZndC0+dWMsIHJvb3QpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvZGVidWdmc19ndF9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNf Z3RfaXJxLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YWFmNzZk ZmM1NzMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9kZWJ1Z2Zz X2d0X2lycS5jCkBAIC0wLDAgKzEsMTYyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog TUlUCisKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisK KyNpbmNsdWRlICJkZWJ1Z2ZzX2d0LmgiCisjaW5jbHVkZSAiZGVidWdmc19ndF9pcnEuaCIKKyNp bmNsdWRlICJpOTE1X2Rydi5oIgorCitzdGF0aWMgaW50IGludGVycnVwdF9pbmZvX3Nob3coc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBt LT5wcml2YXRlOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7CisJ c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3QtPnVuY29yZTsKKwlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJaW50ZWxfd2Fr ZXJlZl90IHdha2VyZWY7CisJaW50IGk7CisKKwl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9n ZXQodW5jb3JlLT5ycG0pOworCisJaWYgKElTX0NIRVJSWVZJRVcoaTkxNSkpIHsKKwkJc2VxX3By aW50ZihtLCAiTWFzdGVyIEludGVycnVwdCBDb250cm9sOlx0JTA4eFxuIiwKKwkJCSAgIGludGVs X3VuY29yZV9yZWFkKHVuY29yZSwgR0VOOF9NQVNURVJfSVJRKSk7CisKKwkJZm9yIChpID0gMDsg aSA8IDQ7IGkrKykgeworCQkJc2VxX3ByaW50ZihtLCAiR1QgSW50ZXJydXB0IElNUiAlZDpcdCUw OHhcbiIsCisJCQkJICAgaSwgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAorCQkJCQkJCUdFTjhf R1RfSU1SKGkpKSk7CisJCQlzZXFfcHJpbnRmKG0sICJHVCBJbnRlcnJ1cHQgSUlSICVkOlx0JTA4 eFxuIiwKKwkJCQkgICBpLCBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsCisJCQkJCQkJR0VOOF9H VF9JSVIoaSkpKTsKKwkJCXNlcV9wcmludGYobSwgIkdUIEludGVycnVwdCBJRVIgJWQ6XHQlMDh4 XG4iLAorCQkJCSAgIGksIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKKwkJCQkJCQlHRU44X0dU X0lFUihpKSkpOworCQl9CisKKwl9IGVsc2UgaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgewor CQlzZXFfcHJpbnRmKG0sICJNYXN0ZXIgSW50ZXJydXB0IENvbnRyb2w6ICAlMDh4XG4iLAorCQkJ ICAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU4xMV9HRlhfTVNUUl9JUlEpKTsKKworCQlz ZXFfcHJpbnRmKG0sICJSZW5kZXIvQ29weSBJbnRyIEVuYWJsZTogICAlMDh4XG4iLAorCQkJICAg aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAorCQkJCQkgICAgIEdFTjExX1JFTkRFUl9DT1BZX0lO VFJfRU5BQkxFKSk7CisJCXNlcV9wcmludGYobSwgIlZDUy9WRUNTIEludHIgRW5hYmxlOiAgICAg ICUwOHhcbiIsCisJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsCisJCQkJCSAgICAgR0VO MTFfVkNTX1ZFQ1NfSU5UUl9FTkFCTEUpKTsKKwkJc2VxX3ByaW50ZihtLCAiR1VDL1NHIEludHIg RW5hYmxlOlx0ICAgJTA4eFxuIiwKKwkJCSAgIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKKwkJ CQkJICAgICBHRU4xMV9HVUNfU0dfSU5UUl9FTkFCTEUpKTsKKwkJc2VxX3ByaW50ZihtLCAiR1BN L1dHQk9YUEVSRiBJbnRyIEVuYWJsZTogJTA4eFxuIiwKKwkJCSAgIGludGVsX3VuY29yZV9yZWFk KHVuY29yZSwKKwkJCQkJICAgICBHRU4xMV9HUE1fV0dCT1hQRVJGX0lOVFJfRU5BQkxFKSk7CisJ CXNlcV9wcmludGYobSwgIkNyeXB0byBJbnRyIEVuYWJsZTpcdCAgICUwOHhcbiIsCisJCQkgICBp bnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsCisJCQkJCSAgICAgR0VOMTFfQ1JZUFRPX1JTVkRfSU5U Ul9FTkFCTEUpKTsKKwkJc2VxX3ByaW50ZihtLCAiR1VuaXQvQ1NNRSBJbnRyIEVuYWJsZTpcdCAg ICUwOHhcbiIsCisJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsCisJCQkJCSAgICAgR0VO MTFfR1VOSVRfQ1NNRV9JTlRSX0VOQUJMRSkpOworCisJfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkx NSkgPj0gOCkgeworCQlzZXFfcHJpbnRmKG0sICJNYXN0ZXIgSW50ZXJydXB0IENvbnRyb2w6XHQl MDh4XG4iLAorCQkJICAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU44X01BU1RFUl9JUlEp KTsKKworCQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCQlzZXFfcHJpbnRmKG0sICJHVCBJ bnRlcnJ1cHQgSU1SICVkOlx0JTA4eFxuIiwKKwkJCQkgICBpLCBpbnRlbF91bmNvcmVfcmVhZCh1 bmNvcmUsCisJCQkJCQkJR0VOOF9HVF9JTVIoaSkpKTsKKwkJCXNlcV9wcmludGYobSwgIkdUIElu dGVycnVwdCBJSVIgJWQ6XHQlMDh4XG4iLAorCQkJCSAgIGksIGludGVsX3VuY29yZV9yZWFkKHVu Y29yZSwKKwkJCQkJCQlHRU44X0dUX0lJUihpKSkpOworCQkJc2VxX3ByaW50ZihtLCAiR1QgSW50 ZXJydXB0IElFUiAlZDpcdCUwOHhcbiIsCisJCQkJICAgaSwgaW50ZWxfdW5jb3JlX3JlYWQodW5j b3JlLAorCQkJCQkJCUdFTjhfR1RfSUVSKGkpKSk7CisJCX0KKworCX0gZWxzZSBpZiAoSVNfVkFM TEVZVklFVyhpOTE1KSkgeworCQlzZXFfcHJpbnRmKG0sICJNYXN0ZXIgSUVSOlx0JTA4eFxuIiwK KwkJCSAgIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgVkxWX01BU1RFUl9JRVIpKTsKKworCQlz ZXFfcHJpbnRmKG0sICJSZW5kZXIgSUVSOlx0JTA4eFxuIiwKKwkJCSAgIGludGVsX3VuY29yZV9y ZWFkKHVuY29yZSwgR1RJRVIpKTsKKwkJc2VxX3ByaW50ZihtLCAiUmVuZGVyIElJUjpcdCUwOHhc biIsCisJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdUSUlSKSk7CisJCXNlcV9wcmlu dGYobSwgIlJlbmRlciBJTVI6XHQlMDh4XG4iLAorCQkJICAgaW50ZWxfdW5jb3JlX3JlYWQodW5j b3JlLCBHVElNUikpOworCisJCXNlcV9wcmludGYobSwgIlBNIElFUjpcdFx0JTA4eFxuIiwKKwkJ CSAgIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VONl9QTUlFUikpOworCQlzZXFfcHJpbnRm KG0sICJQTSBJSVI6XHRcdCUwOHhcbiIsCisJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUs IEdFTjZfUE1JSVIpKTsKKwkJc2VxX3ByaW50ZihtLCAiUE0gSU1SOlx0XHQlMDh4XG4iLAorCQkJ ICAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU42X1BNSU1SKSk7CisKKwl9IGVsc2UgaWYg KCFIQVNfUENIX1NQTElUKGk5MTUpKSB7CisJCXNlcV9wcmludGYobSwgIkludGVycnVwdCBlbmFi bGU6ICAgICUwOHhcbiIsCisJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjJfSUVS KSk7CisJCXNlcV9wcmludGYobSwgIkludGVycnVwdCBpZGVudGl0eTogICUwOHhcbiIsCisJCQkg ICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjJfSUlSKSk7CisJCXNlcV9wcmludGYobSwg IkludGVycnVwdCBtYXNrOiAgICAgICUwOHhcbiIsCisJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1 bmNvcmUsIEdFTjJfSU1SKSk7CisJfSBlbHNlIHsKKwkJc2VxX3ByaW50ZihtLCAiR3JhcGhpY3Mg SW50ZXJydXB0IGVuYWJsZToJCSUwOHhcbiIsCisJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNv cmUsIEdUSUVSKSk7CisJCXNlcV9wcmludGYobSwgIkdyYXBoaWNzIEludGVycnVwdCBpZGVudGl0 eToJCSUwOHhcbiIsCisJCQkgICBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdUSUlSKSk7CisJ CXNlcV9wcmludGYobSwgIkdyYXBoaWNzIEludGVycnVwdCBtYXNrOgkJJTA4eFxuIiwKKwkJCSAg IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR1RJTVIpKTsKKwl9CisKKwlpZiAoSU5URUxfR0VO KGk5MTUpID49IDExKSB7CisJCXNlcV9wcmludGYobSwgIlJDUyBJbnRyIE1hc2s6XHQgJTA4eFxu IiwKKwkJCSAgIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKKwkJCQkJICAgICBHRU4xMV9SQ1Mw X1JTVkRfSU5UUl9NQVNLKSk7CisJCXNlcV9wcmludGYobSwgIkJDUyBJbnRyIE1hc2s6XHQgJTA4 eFxuIiwKKwkJCSAgIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKKwkJCQkJICAgICBHRU4xMV9C Q1NfUlNWRF9JTlRSX01BU0spKTsKKwkJc2VxX3ByaW50ZihtLCAiVkNTMC9WQ1MxIEludHIgTWFz azpcdCAlMDh4XG4iLAorCQkJICAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAorCQkJCQkgICAg IEdFTjExX1ZDUzBfVkNTMV9JTlRSX01BU0spKTsKKwkJc2VxX3ByaW50ZihtLCAiVkNTMi9WQ1Mz IEludHIgTWFzazpcdCAlMDh4XG4iLAorCQkJICAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAor CQkJCQkgICAgIEdFTjExX1ZDUzJfVkNTM19JTlRSX01BU0spKTsKKwkJc2VxX3ByaW50ZihtLCAi VkVDUzAvVkVDUzEgSW50ciBNYXNrOlx0ICUwOHhcbiIsCisJCQkgICBpbnRlbF91bmNvcmVfcmVh ZCh1bmNvcmUsCisJCQkJCSAgICAgR0VOMTFfVkVDUzBfVkVDUzFfSU5UUl9NQVNLKSk7CisJCXNl cV9wcmludGYobSwgIkdVQy9TRyBJbnRyIE1hc2s6XHQgJTA4eFxuIiwKKwkJCSAgIGludGVsX3Vu Y29yZV9yZWFkKHVuY29yZSwKKwkJCQkJICAgICBHRU4xMV9HVUNfU0dfSU5UUl9NQVNLKSk7CisJ CXNlcV9wcmludGYobSwgIkdQTS9XR0JPWFBFUkYgSW50ciBNYXNrOiAlMDh4XG4iLAorCQkJICAg aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAorCQkJCQkgICAgIEdFTjExX0dQTV9XR0JPWFBFUkZf SU5UUl9NQVNLKSk7CisJCXNlcV9wcmludGYobSwgIkNyeXB0byBJbnRyIE1hc2s6XHQgJTA4eFxu IiwKKwkJCSAgIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKKwkJCQkJICAgICBHRU4xMV9DUllQ VE9fUlNWRF9JTlRSX01BU0spKTsKKwkJc2VxX3ByaW50ZihtLCAiR3VuaXQvQ1NNRSBJbnRyIE1h c2s6XHQgJTA4eFxuIiwKKwkJCSAgIGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKKwkJCQkJICAg ICBHRU4xMV9HVU5JVF9DU01FX0lOVFJfTUFTSykpOworCisJfSBlbHNlIGlmIChJTlRFTF9HRU4o aTkxNSkgPj0gNikgeworCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBndCwgaWQpIHsKKwkJCXNl cV9wcmludGYobSwKKwkJCQkgICAiR3JhcGhpY3MgSW50ZXJydXB0IG1hc2sgKCVzKToJJTA4eFxu IiwKKwkJCQkgICBlbmdpbmUtPm5hbWUsIEVOR0lORV9SRUFEKGVuZ2luZSwgUklOR19JTVIpKTsK KwkJfQorCX0KKworCWludGVsX3J1bnRpbWVfcG1fcHV0KHVuY29yZS0+cnBtLCB3YWtlcmVmKTsK KworCXJldHVybiAwOworfQorREVGSU5FX0dUX0RFQlVHRlNfQVRUUklCVVRFKGludGVycnVwdF9p bmZvKTsKKwordm9pZCBkZWJ1Z2ZzX2d0X3JlZ2lzdGVyX2lycShzdHJ1Y3QgaW50ZWxfZ3QgKmd0 LCBzdHJ1Y3QgZGVudHJ5ICpyb290KQoreworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGVidWdmc19n dF9maWxlIGZpbGVzW10gPSB7CisJCXsgImludGVycnVwdF9pbmZvIiwgJmludGVycnVwdF9pbmZv X2ZvcHMsIE5VTEwgfSwKKwl9OworCisJaW50ZWxfZ3RfZGVidWdmc19yZWdpc3Rlcl9maWxlcyhy b290LCBmaWxlcywgQVJSQVlfU0laRShmaWxlcyksIGd0KTsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfaXJxLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9kZWJ1Z2ZzX2d0X2lycS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uZjNkNjAxYjNkMDE5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvZGVidWdmc19ndF9pcnEuaApAQCAtMCwwICsxLDE1IEBACisvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUICovCisKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRlbCBDb3Jw b3JhdGlvbgorICovCisKKyNpZm5kZWYgREVCVUdGU19HVF9JUlFfSAorI2RlZmluZSBERUJVR0ZT X0dUX0lSUV9ICisKK3N0cnVjdCBpbnRlbF9ndDsKK3N0cnVjdCBkZW50cnk7CisKK3ZvaWQgZGVi dWdmc19ndF9yZWdpc3Rlcl9pcnEoc3RydWN0IGludGVsX2d0ICpndCwgc3RydWN0IGRlbnRyeSAq cm9vdCk7CisKKyNlbmRpZiAvKiBERUJVR0ZTX0dUX0lSUV9IICovCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9kZWJ1Z2ZzX2d0X3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9kZWJ1Z2ZzX2d0X3BtLmMKaW5kZXggYWFiMzBkOTA4MDcyLi5jOTRhOTQ2ZTBhZGIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfZ3RfcG0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9kZWJ1Z2ZzX2d0X3BtLmMKQEAgLTEwLDYgKzEwLDcgQEAK ICNpbmNsdWRlICJkZWJ1Z2ZzX2d0X3BtLmgiCiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNs dWRlICJpbnRlbF9ndC5oIgorI2luY2x1ZGUgImludGVsX2d0X3BtLmgiCiAjaW5jbHVkZSAiaW50 ZWxfbGxjLmgiCiAjaW5jbHVkZSAiaW50ZWxfcmM2LmgiCiAjaW5jbHVkZSAiaW50ZWxfcnBzLmgi CkBAIC0xNyw2ICsxOCwzNiBAQAogI2luY2x1ZGUgImludGVsX3NpZGViYW5kLmgiCiAjaW5jbHVk ZSAiaW50ZWxfdW5jb3JlLmgiCiAKK3N0YXRpYyBpbnQgZm9yY2V3YWtlX3VzZXJfb3BlbihzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0ID0gaW5vZGUtPmlfcHJpdmF0ZTsKKworCWF0b21pY19pbmMoJmd0LT51c2VyX3dha2VyZWYp OworCWludGVsX2d0X3BtX2dldChndCk7CisJaWYgKElOVEVMX0dFTihndC0+aTkxNSkgPj0gNikK KwkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV91c2VyX2dldChndC0+dW5jb3JlKTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IGZvcmNld2FrZV91c2VyX3JlbGVhc2Uoc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGlu b2RlLT5pX3ByaXZhdGU7CisKKwlpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSA2KQorCQlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3VzZXJfcHV0KGd0LT51bmNvcmUpOworCWludGVsX2d0X3BtX3B1 dChndCk7CisJYXRvbWljX2RlYygmZ3QtPnVzZXJfd2FrZXJlZik7CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9yY2V3YWtlX3VzZXJfZm9w cyA9IHsKKwkub3duZXIgPSBUSElTX01PRFVMRSwKKwkub3BlbiA9IGZvcmNld2FrZV91c2VyX29w ZW4sCisJLnJlbGVhc2UgPSBmb3JjZXdha2VfdXNlcl9yZWxlYXNlLAorfTsKKwogc3RhdGljIGlu dCBmd19kb21haW5zX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0 cnVjdCBpbnRlbF9ndCAqZ3QgPSBtLT5wcml2YXRlOwpAQCAtNTk3LDYgKzYyOCw3IEBAIHZvaWQg ZGVidWdmc19ndF9wbV9yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfZ3QgKmd0LCBzdHJ1Y3QgZGVudHJ5 ICpyb290KQogCQl7ICJkcnBjIiwgJmRycGNfZm9wcywgTlVMTCB9LAogCQl7ICJmcmVxdWVuY3ki LCAmZnJlcXVlbmN5X2ZvcHMsIE5VTEwgfSwKIAkJeyAiZm9yY2V3YWtlIiwgJmZ3X2RvbWFpbnNf Zm9wcywgTlVMTCB9LAorCQl7ICJmb3JjZXdha2VfdXNlciIsICZmb3JjZXdha2VfdXNlcl9mb3Bz LCBOVUxMfSwKIAkJeyAibGxjIiwgJmxsY19mb3BzLCBsbGNfZXZhbCB9LAogCQl7ICJycHNfYm9v c3QiLCAmcnBzX2Jvb3N0X2ZvcHMsIHJwc19ldmFsIH0sCiAJfTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfc3NldS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvZGVidWdmc19zc2V1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li42MWNhZDFlMTdlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9kZWJ1Z2ZzX3NzZXUuYwpAQCAtMCwwICsxLDI5NCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IE1JVAorCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24K KyAqLworCisjaW5jbHVkZSAiZGVidWdmc19ndC5oIgorI2luY2x1ZGUgImRlYnVnZnNfc3NldS5o IgorI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisKK3N0YXRpYyB2b2lkIGludGVsX3NzZXVfY29weV9z dWJzbGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsCisJCQkJICAgICAgaW50 IHNsaWNlLCB1OCAqdG9fbWFzaykKK3sKKwlpbnQgb2Zmc2V0ID0gc2xpY2UgKiBzc2V1LT5zc19z dHJpZGU7CisKKwltZW1jcHkoJnRvX21hc2tbb2Zmc2V0XSwgJnNzZXUtPnN1YnNsaWNlX21hc2tb b2Zmc2V0XSwgc3NldS0+c3Nfc3RyaWRlKTsKK30KKworc3RhdGljIHZvaWQgY2hlcnJ5dmlld19z c2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGludGVsX2d0ICpndCwKKwkJCQkJICBzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSkKK3sKKyNkZWZpbmUgU1NfTUFYIDIKKwlzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUgPSBndC0+dW5jb3JlOworCWNvbnN0IGludCBzc19tYXggPSBTU19NQVg7CisJ dTMyIHNpZzFbU1NfTUFYXSwgc2lnMltTU19NQVhdOworCWludCBzczsKKworCXNpZzFbMF0gPSBp bnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIENIVl9QT1dFUl9TUzBfU0lHMSk7CisJc2lnMVsxXSA9 IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgQ0hWX1BPV0VSX1NTMV9TSUcxKTsKKwlzaWcyWzBd ID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBDSFZfUE9XRVJfU1MwX1NJRzIpOworCXNpZzJb MV0gPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIENIVl9QT1dFUl9TUzFfU0lHMik7CisKKwlm b3IgKHNzID0gMDsgc3MgPCBzc19tYXg7IHNzKyspIHsKKwkJdW5zaWduZWQgaW50IGV1X2NudDsK KworCQlpZiAoc2lnMVtzc10gJiBDSFZfU1NfUEdfRU5BQkxFKQorCQkJLyogc2tpcCBkaXNhYmxl ZCBzdWJzbGljZSAqLworCQkJY29udGludWU7CisKKwkJc3NldS0+c2xpY2VfbWFzayA9IEJJVCgw KTsKKwkJc3NldS0+c3Vic2xpY2VfbWFza1swXSB8PSBCSVQoc3MpOworCQlldV9jbnQgPSAoKHNp ZzFbc3NdICYgQ0hWX0VVMDhfUEdfRU5BQkxFKSA/IDAgOiAyKSArCisJCQkgKChzaWcxW3NzXSAm IENIVl9FVTE5X1BHX0VOQUJMRSkgPyAwIDogMikgKworCQkJICgoc2lnMVtzc10gJiBDSFZfRVUy MTBfUEdfRU5BQkxFKSA/IDAgOiAyKSArCisJCQkgKChzaWcyW3NzXSAmIENIVl9FVTMxMV9QR19F TkFCTEUpID8gMCA6IDIpOworCQlzc2V1LT5ldV90b3RhbCArPSBldV9jbnQ7CisJCXNzZXUtPmV1 X3Blcl9zdWJzbGljZSA9IG1heF90KHVuc2lnbmVkIGludCwKKwkJCQkJICAgICAgc3NldS0+ZXVf cGVyX3N1YnNsaWNlLCBldV9jbnQpOworCX0KKyN1bmRlZiBTU19NQVgKK30KKworc3RhdGljIHZv aWQgZ2VuMTBfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCisJCQkJICAg ICBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSkKK3sKKyNkZWZpbmUgU1NfTUFYIDYKKwljb25z dCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZvID0gUlVOVElNRV9JTkZPKGd0LT5pOTE1 KTsKKwl1MzIgc19yZWdbU1NfTUFYXSwgZXVfcmVnWzIgKiBTU19NQVhdLCBldV9tYXNrWzJdOwor CXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGd0LT51bmNvcmU7CisJaW50IHMsIHNzOwor CisJZm9yIChzID0gMDsgcyA8IGluZm8tPnNzZXUubWF4X3NsaWNlczsgcysrKSB7CisJCS8qCisJ CSAqIEZJWE1FOiBWYWxpZCBTUyBNYXNrIHJlc3BlY3RzIHRoZSBzcGVjIGFuZCByZWFkCisJCSAq IG9ubHkgdmFsaWQgYml0cyBmb3IgdGhvc2UgcmVnaXN0ZXJzLCBleGNsdWRpbmcgcmVzZXJ2ZWQK KwkJICogYWx0aG91Z2ggdGhpcyBzZWVtcyB3cm9uZyBiZWNhdXNlIGl0IHdvdWxkIGxlYXZlIG1h bnkKKwkJICogc3Vic2xpY2VzIHdpdGhvdXQgQUNLLgorCQkgKi8KKwkJc19yZWdbc10gPSBpbnRl bF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjEwX1NMSUNFX1BHQ1RMX0FDSyhzKSkgJgorCQkJICAg R0VOMTBfUEdDVExfVkFMSURfU1NfTUFTSyhzKTsKKwkJZXVfcmVnWzIgKiBzXSA9IGludGVsX3Vu Y29yZV9yZWFkKHVuY29yZSwKKwkJCQkJCSAgR0VOMTBfU1MwMV9FVV9QR0NUTF9BQ0socykpOwor CQlldV9yZWdbMiAqIHMgKyAxXSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKKwkJCQkJCSAg R0VOMTBfU1MyM19FVV9QR0NUTF9BQ0socykpOworCX0KKworCWV1X21hc2tbMF0gPSBHRU45X1BH Q1RMX1NTQV9FVTA4X0FDSyB8CisJCSAgICAgR0VOOV9QR0NUTF9TU0FfRVUxOV9BQ0sgfAorCQkg ICAgIEdFTjlfUEdDVExfU1NBX0VVMjEwX0FDSyB8CisJCSAgICAgR0VOOV9QR0NUTF9TU0FfRVUz MTFfQUNLOworCWV1X21hc2tbMV0gPSBHRU45X1BHQ1RMX1NTQl9FVTA4X0FDSyB8CisJCSAgICAg R0VOOV9QR0NUTF9TU0JfRVUxOV9BQ0sgfAorCQkgICAgIEdFTjlfUEdDVExfU1NCX0VVMjEwX0FD SyB8CisJCSAgICAgR0VOOV9QR0NUTF9TU0JfRVUzMTFfQUNLOworCisJZm9yIChzID0gMDsgcyA8 IGluZm8tPnNzZXUubWF4X3NsaWNlczsgcysrKSB7CisJCWlmICgoc19yZWdbc10gJiBHRU45X1BH Q1RMX1NMSUNFX0FDSykgPT0gMCkKKwkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KKwkJCWNv bnRpbnVlOworCisJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOworCQlpbnRlbF9zc2V1X2Nv cHlfc3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLCBzc2V1LT5zdWJzbGljZV9tYXNrKTsKKworCQlm b3IgKHNzID0gMDsgc3MgPCBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXM7IHNzKyspIHsKKwkJCXVu c2lnbmVkIGludCBldV9jbnQ7CisKKwkJCWlmIChpbmZvLT5zc2V1Lmhhc19zdWJzbGljZV9wZyAm JgorCQkJICAgICEoc19yZWdbc10gJiAoR0VOOV9QR0NUTF9TU19BQ0soc3MpKSkpCisJCQkJLyog c2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLworCQkJCWNvbnRpbnVlOworCisJCQlldV9jbnQgPSAy ICogaHdlaWdodDMyKGV1X3JlZ1syICogcyArIHNzIC8gMl0gJgorCQkJCQkgICAgICAgZXVfbWFz a1tzcyAlIDJdKTsKKwkJCXNzZXUtPmV1X3RvdGFsICs9IGV1X2NudDsKKwkJCXNzZXUtPmV1X3Bl cl9zdWJzbGljZSA9IG1heF90KHVuc2lnbmVkIGludCwKKwkJCQkJCSAgICAgIHNzZXUtPmV1X3Bl cl9zdWJzbGljZSwKKwkJCQkJCSAgICAgIGV1X2NudCk7CisJCX0KKwl9CisjdW5kZWYgU1NfTUFY Cit9CisKK3N0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBpbnRlbF9n dCAqZ3QsCisJCQkJICAgIHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1KQoreworI2RlZmluZSBT U19NQVggMworCWNvbnN0IHN0cnVjdCBpbnRlbF9ydW50aW1lX2luZm8gKmluZm8gPSBSVU5USU1F X0lORk8oZ3QtPmk5MTUpOworCXUzMiBzX3JlZ1tTU19NQVhdLCBldV9yZWdbMiAqIFNTX01BWF0s IGV1X21hc2tbMl07CisJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3QtPnVuY29yZTsK KwlpbnQgcywgc3M7CisKKwlmb3IgKHMgPSAwOyBzIDwgaW5mby0+c3NldS5tYXhfc2xpY2VzOyBz KyspIHsKKwkJc19yZWdbc10gPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjlfU0xJQ0Vf UEdDVExfQUNLKHMpKTsKKwkJZXVfcmVnWzIqc10gPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUs CisJCQkJCQlHRU45X1NTMDFfRVVfUEdDVExfQUNLKHMpKTsKKwkJZXVfcmVnWzIqcyArIDFdID0g aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAorCQkJCQkJICAgIEdFTjlfU1MyM19FVV9QR0NUTF9B Q0socykpOworCX0KKworCWV1X21hc2tbMF0gPSBHRU45X1BHQ1RMX1NTQV9FVTA4X0FDSyB8CisJ CSAgICAgR0VOOV9QR0NUTF9TU0FfRVUxOV9BQ0sgfAorCQkgICAgIEdFTjlfUEdDVExfU1NBX0VV MjEwX0FDSyB8CisJCSAgICAgR0VOOV9QR0NUTF9TU0FfRVUzMTFfQUNLOworCWV1X21hc2tbMV0g PSBHRU45X1BHQ1RMX1NTQl9FVTA4X0FDSyB8CisJCSAgICAgR0VOOV9QR0NUTF9TU0JfRVUxOV9B Q0sgfAorCQkgICAgIEdFTjlfUEdDVExfU1NCX0VVMjEwX0FDSyB8CisJCSAgICAgR0VOOV9QR0NU TF9TU0JfRVUzMTFfQUNLOworCisJZm9yIChzID0gMDsgcyA8IGluZm8tPnNzZXUubWF4X3NsaWNl czsgcysrKSB7CisJCWlmICgoc19yZWdbc10gJiBHRU45X1BHQ1RMX1NMSUNFX0FDSykgPT0gMCkK KwkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KKwkJCWNvbnRpbnVlOworCisJCXNzZXUtPnNs aWNlX21hc2sgfD0gQklUKHMpOworCisJCWlmIChJU19HRU45X0JDKGd0LT5pOTE1KSkKKwkJCWlu dGVsX3NzZXVfY29weV9zdWJzbGljZXMoJmluZm8tPnNzZXUsIHMsCisJCQkJCQkgIHNzZXUtPnN1 YnNsaWNlX21hc2spOworCisJCWZvciAoc3MgPSAwOyBzcyA8IGluZm8tPnNzZXUubWF4X3N1YnNs aWNlczsgc3MrKykgeworCQkJdW5zaWduZWQgaW50IGV1X2NudDsKKwkJCXU4IHNzX2lkeCA9IHMg KiBpbmZvLT5zc2V1LnNzX3N0cmlkZSArCisJCQkJICAgIHNzIC8gQklUU19QRVJfQllURTsKKwor CQkJaWYgKElTX0dFTjlfTFAoZ3QtPmk5MTUpKSB7CisJCQkJaWYgKCEoc19yZWdbc10gJiAoR0VO OV9QR0NUTF9TU19BQ0soc3MpKSkpCisJCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8K KwkJCQkJY29udGludWU7CisKKwkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NzX2lkeF0gfD0KKwkJ CQkJQklUKHNzICUgQklUU19QRVJfQllURSk7CisJCQl9CisKKwkJCWV1X2NudCA9IDIgKiBod2Vp Z2h0MzIoZXVfcmVnWzIqcyArIHNzLzJdICYKKwkJCQkJICAgICAgIGV1X21hc2tbc3MlMl0pOwor CQkJc3NldS0+ZXVfdG90YWwgKz0gZXVfY250OworCQkJc3NldS0+ZXVfcGVyX3N1YnNsaWNlID0g bWF4X3QodW5zaWduZWQgaW50LAorCQkJCQkJICAgICAgc3NldS0+ZXVfcGVyX3N1YnNsaWNlLAor CQkJCQkJICAgICAgZXVfY250KTsKKwkJfQorCX0KKyN1bmRlZiBTU19NQVgKK30KKworc3RhdGlj IHZvaWQgYmR3X3NzZXVfZGV2aWNlX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAorCQkJCSAg IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1KQoreworCWNvbnN0IHN0cnVjdCBpbnRlbF9ydW50 aW1lX2luZm8gKmluZm8gPSBSVU5USU1FX0lORk8oZ3QtPmk5MTUpOworCXUzMiBzbGljZV9pbmZv ID0gaW50ZWxfdW5jb3JlX3JlYWQoZ3QtPnVuY29yZSwgR0VOOF9HVF9TTElDRV9JTkZPKTsKKwlp bnQgczsKKworCXNzZXUtPnNsaWNlX21hc2sgPSBzbGljZV9pbmZvICYgR0VOOF9MU0xJQ0VTVEFU X01BU0s7CisKKwlpZiAoc3NldS0+c2xpY2VfbWFzaykgeworCQlzc2V1LT5ldV9wZXJfc3Vic2xp Y2UgPSBpbmZvLT5zc2V1LmV1X3Blcl9zdWJzbGljZTsKKwkJZm9yIChzID0gMDsgcyA8IGZscyhz c2V1LT5zbGljZV9tYXNrKTsgcysrKQorCQkJaW50ZWxfc3NldV9jb3B5X3N1YnNsaWNlcygmaW5m by0+c3NldSwgcywKKwkJCQkJCSAgc3NldS0+c3Vic2xpY2VfbWFzayk7CisJCXNzZXUtPmV1X3Rv dGFsID0gc3NldS0+ZXVfcGVyX3N1YnNsaWNlICoKKwkJCQkgaW50ZWxfc3NldV9zdWJzbGljZV90 b3RhbChzc2V1KTsKKworCQkvKiBzdWJ0cmFjdCBmdXNlZCBvZmYgRVUocykgZnJvbSBlbmFibGVk IHNsaWNlKHMpICovCisJCWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xpY2VfbWFzayk7IHMr KykgeworCQkJdTggc3Vic2xpY2VfN2V1ID0gaW5mby0+c3NldS5zdWJzbGljZV83ZXVbc107CisK KwkJCXNzZXUtPmV1X3RvdGFsIC09IGh3ZWlnaHQ4KHN1YnNsaWNlXzdldSk7CisJCX0KKwl9Cit9 CisKK3N0YXRpYyB2b2lkIHByaW50X3NzZXVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGJvb2wg aXNfYXZhaWxhYmxlX2luZm8sCisJCQkgICAgY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUpCit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IG0tPnByaXZhdGU7CisJY29uc3QgY2hhciAq dHlwZSA9IGlzX2F2YWlsYWJsZV9pbmZvID8gIkF2YWlsYWJsZSIgOiAiRW5hYmxlZCI7CisJaW50 IHM7CisKKwlzZXFfcHJpbnRmKG0sICIgICVzIFNsaWNlIE1hc2s6ICUwNHhcbiIsIHR5cGUsCisJ CSAgIHNzZXUtPnNsaWNlX21hc2spOworCXNlcV9wcmludGYobSwgIiAgJXMgU2xpY2UgVG90YWw6 ICV1XG4iLCB0eXBlLAorCQkgICBod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKSk7CisJc2VxX3By aW50ZihtLCAiICAlcyBTdWJzbGljZSBUb3RhbDogJXVcbiIsIHR5cGUsCisJCSAgIGludGVsX3Nz ZXVfc3Vic2xpY2VfdG90YWwoc3NldSkpOworCWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xp Y2VfbWFzayk7IHMrKykgeworCQlzZXFfcHJpbnRmKG0sICIgICVzIFNsaWNlJWkgc3Vic2xpY2Vz OiAldVxuIiwgdHlwZSwKKwkJCSAgIHMsIGludGVsX3NzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShz c2V1LCBzKSk7CisJfQorCXNlcV9wcmludGYobSwgIiAgJXMgRVUgVG90YWw6ICV1XG4iLCB0eXBl LAorCQkgICBzc2V1LT5ldV90b3RhbCk7CisJc2VxX3ByaW50ZihtLCAiICAlcyBFVSBQZXIgU3Vi c2xpY2U6ICV1XG4iLCB0eXBlLAorCQkgICBzc2V1LT5ldV9wZXJfc3Vic2xpY2UpOworCisJaWYg KCFpc19hdmFpbGFibGVfaW5mbykKKwkJcmV0dXJuOworCisJc2VxX3ByaW50ZihtLCAiICBIYXMg UG9vbGVkIEVVOiAlc1xuIiwgeWVzbm8oSEFTX1BPT0xFRF9FVShndC0+aTkxNSkpKTsKKwlpZiAo SEFTX1BPT0xFRF9FVShndC0+aTkxNSkpCisJCXNlcV9wcmludGYobSwgIiAgTWluIEVVIGluIHBv b2w6ICV1XG4iLCBzc2V1LT5taW5fZXVfaW5fcG9vbCk7CisKKwlzZXFfcHJpbnRmKG0sICIgIEhh cyBTbGljZSBQb3dlciBHYXRpbmc6ICVzXG4iLAorCQkgICB5ZXNubyhzc2V1LT5oYXNfc2xpY2Vf cGcpKTsKKwlzZXFfcHJpbnRmKG0sICIgIEhhcyBTdWJzbGljZSBQb3dlciBHYXRpbmc6ICVzXG4i LAorCQkgICB5ZXNubyhzc2V1LT5oYXNfc3Vic2xpY2VfcGcpKTsKKwlzZXFfcHJpbnRmKG0sICIg IEhhcyBFVSBQb3dlciBHYXRpbmc6ICVzXG4iLAorCQkgICB5ZXNubyhzc2V1LT5oYXNfZXVfcGcp KTsKK30KKworc3RhdGljIGludCBzc2V1X3N0YXR1c19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwg dm9pZCAqdW51c2VkKQoreworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSBtLT5wcml2YXRlOworCWNv bnN0IHN0cnVjdCBpbnRlbF9ydW50aW1lX2luZm8gKmluZm8gPSBSVU5USU1FX0lORk8oZ3QtPmk5 MTUpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7CisJc3RydWN0 IHNzZXVfZGV2X2luZm8gc3NldTsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCWlmIChJ TlRFTF9HRU4oaTkxNSkgPCA4KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXNlcV9wdXRzKG0sICJT U0VVIERldmljZSBJbmZvXG4iKTsKKwlwcmludF9zc2V1X2luZm8obSwgdHJ1ZSwgJmluZm8tPnNz ZXUpOworCisJc2VxX3B1dHMobSwgIlNTRVUgRGV2aWNlIFN0YXR1c1xuIik7CisJbWVtc2V0KCZz c2V1LCAwLCBzaXplb2Yoc3NldSkpOworCWludGVsX3NzZXVfc2V0X2luZm8oJnNzZXUsIGluZm8t PnNzZXUubWF4X3NsaWNlcywKKwkJCSAgICBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXMsCisJCQkg ICAgaW5mby0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSk7CisKKwl3aXRoX2ludGVsX3J1bnRp bWVfcG0oZ3QtPnVuY29yZS0+cnBtLCB3YWtlcmVmKSB7CisJCWlmIChJU19DSEVSUllWSUVXKGk5 MTUpKQorCQkJY2hlcnJ5dmlld19zc2V1X2RldmljZV9zdGF0dXMoZ3QsICZzc2V1KTsKKwkJZWxz ZSBpZiAoSVNfQlJPQURXRUxMKGk5MTUpKQorCQkJYmR3X3NzZXVfZGV2aWNlX3N0YXR1cyhndCwg JnNzZXUpOworCQllbHNlIGlmIChJU19HRU4oaTkxNSwgOSkpCisJCQlnZW45X3NzZXVfZGV2aWNl X3N0YXR1cyhndCwgJnNzZXUpOworCQllbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTApCisJ CQlnZW4xMF9zc2V1X2RldmljZV9zdGF0dXMoZ3QsICZzc2V1KTsKKwl9CisKKwlwcmludF9zc2V1 X2luZm8obSwgZmFsc2UsICZzc2V1KTsKKworCXJldHVybiAwOworfQorREVGSU5FX0dUX0RFQlVH RlNfQVRUUklCVVRFKHNzZXVfc3RhdHVzKTsKKworc3RhdGljIGludCByY3NfdG9wb2xvZ3lfc2hv dyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0ID0gbS0+cHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX3ByaW50ZXIgcCA9IGRybV9zZXFfZmlsZV9w cmludGVyKG0pOworCisJaW50ZWxfZGV2aWNlX2luZm9fcHJpbnRfdG9wb2xvZ3koJlJVTlRJTUVf SU5GTyhndC0+aTkxNSktPnNzZXUsICZwKTsKKworCXJldHVybiAwOworfQorREVGSU5FX0dUX0RF QlVHRlNfQVRUUklCVVRFKHJjc190b3BvbG9neSk7CisKK3ZvaWQgZGVidWdmc19ndF9yZWdpc3Rl cl9zc2V1KHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHN0cnVjdCBkZW50cnkgKnJvb3QpCit7CisJc3Rh dGljIGNvbnN0IHN0cnVjdCBkZWJ1Z2ZzX2d0X2ZpbGUgZmlsZXNbXSA9IHsKKwkJeyAic3NldV9z dGF0dXMiLCAmc3NldV9zdGF0dXNfZm9wcywgTlVMTCB9LAorCQl7ICJyY3NfdG9wb2xvZ3kiLCAm cmNzX3RvcG9sb2d5X2ZvcHMsIE5VTEwgfSwKKwl9OworCisJaW50ZWxfZ3RfZGVidWdmc19yZWdp c3Rlcl9maWxlcyhyb290LCBmaWxlcywgQVJSQVlfU0laRShmaWxlcyksIGd0KTsKK30KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2RlYnVnZnNfc3NldS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvZGVidWdmc19zc2V1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4xNmRhOGZiNWZlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9kZWJ1Z2ZzX3NzZXUuaApAQCAtMCwwICsxLDE2IEBACisvKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogTUlUICovCisKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRl bCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgREVCVUdGU19TU0VVX0gKKyNkZWZpbmUgREVC VUdGU19TU0VVX0gKKworc3RydWN0IGludGVsX2d0Oworc3RydWN0IGRlbnRyeTsKK3N0cnVjdCBz c2V1X2Rldl9pbmZvOworCit2b2lkIGRlYnVnZnNfZ3RfcmVnaXN0ZXJfc3NldShzdHJ1Y3QgaW50 ZWxfZ3QgKmd0LCBzdHJ1Y3QgZGVudHJ5ICpyb290KTsKKworI2VuZGlmIC8qIERFQlVHRlNfU1NF VV9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGIyMmI0ZTljMzEzOC4u YzI2OTRhM2YyNmIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtNDI2LDkg KzQyNiw4IEBAIHN0YXRpYyB2b2lkIGdlbjhfZGlzcGxheV9pbnRlcnJ1cHRfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0pCiBzdGF0aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7CiAJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Ci0JaW50IGksIHBpcGU7CisJaW50IHBp cGU7CiAKIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmRldl9wcml2LT5ydW50aW1l X3BtKTsKIApAQCAtNDc0LDE1ICs0NzMsNiBAQCBzdGF0aWMgaW50IGk5MTVfaW50ZXJydXB0X2lu Zm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCQkJICAgSTkxNV9SRUFEKERQSU5W R1RUKSk7CiAJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5f SU5JVCwgcHJlZik7CiAKLQkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewotCQkJc2VxX3ByaW50 ZihtLCAiR1QgSW50ZXJydXB0IElNUiAlZDpcdCUwOHhcbiIsCi0JCQkJICAgaSwgSTkxNV9SRUFE KEdFTjhfR1RfSU1SKGkpKSk7Ci0JCQlzZXFfcHJpbnRmKG0sICJHVCBJbnRlcnJ1cHQgSUlSICVk Olx0JTA4eFxuIiwKLQkJCQkgICBpLCBJOTE1X1JFQUQoR0VOOF9HVF9JSVIoaSkpKTsKLQkJCXNl cV9wcmludGYobSwgIkdUIEludGVycnVwdCBJRVIgJWQ6XHQlMDh4XG4iLAotCQkJCSAgIGksIEk5 MTVfUkVBRChHRU44X0dUX0lFUihpKSkpOwotCQl9Ci0KIAkJc2VxX3ByaW50ZihtLCAiUENVIGlu dGVycnVwdCBtYXNrOlx0JTA4eFxuIiwKIAkJCSAgIEk5MTVfUkVBRChHRU44X1BDVV9JTVIpKTsK IAkJc2VxX3ByaW50ZihtLCAiUENVIGludGVycnVwdCBpZGVudGl0eTpcdCUwOHhcbiIsCkBAIC00 OTMsMTkgKzQ4Myw2IEBAIHN0YXRpYyBpbnQgaTkxNV9pbnRlcnJ1cHRfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJCXNlcV9wcmludGYobSwgIk1hc3RlciBJbnRlcnJ1cHQg Q29udHJvbDogICUwOHhcbiIsCiAJCQkgICBJOTE1X1JFQUQoR0VOMTFfR0ZYX01TVFJfSVJRKSk7 CiAKLQkJc2VxX3ByaW50ZihtLCAiUmVuZGVyL0NvcHkgSW50ciBFbmFibGU6ICAgJTA4eFxuIiwK LQkJCSAgIEk5MTVfUkVBRChHRU4xMV9SRU5ERVJfQ09QWV9JTlRSX0VOQUJMRSkpOwotCQlzZXFf cHJpbnRmKG0sICJWQ1MvVkVDUyBJbnRyIEVuYWJsZTogICAgICAlMDh4XG4iLAotCQkJICAgSTkx NV9SRUFEKEdFTjExX1ZDU19WRUNTX0lOVFJfRU5BQkxFKSk7Ci0JCXNlcV9wcmludGYobSwgIkdV Qy9TRyBJbnRyIEVuYWJsZTpcdCAgICUwOHhcbiIsCi0JCQkgICBJOTE1X1JFQUQoR0VOMTFfR1VD X1NHX0lOVFJfRU5BQkxFKSk7Ci0JCXNlcV9wcmludGYobSwgIkdQTS9XR0JPWFBFUkYgSW50ciBF bmFibGU6ICUwOHhcbiIsCi0JCQkgICBJOTE1X1JFQUQoR0VOMTFfR1BNX1dHQk9YUEVSRl9JTlRS X0VOQUJMRSkpOwotCQlzZXFfcHJpbnRmKG0sICJDcnlwdG8gSW50ciBFbmFibGU6XHQgICAlMDh4 XG4iLAotCQkJICAgSTkxNV9SRUFEKEdFTjExX0NSWVBUT19SU1ZEX0lOVFJfRU5BQkxFKSk7Ci0J CXNlcV9wcmludGYobSwgIkdVbml0L0NTTUUgSW50ciBFbmFibGU6XHQgICAlMDh4XG4iLAotCQkJ ICAgSTkxNV9SRUFEKEdFTjExX0dVTklUX0NTTUVfSU5UUl9FTkFCTEUpKTsKLQogCQlzZXFfcHJp bnRmKG0sICJEaXNwbGF5IEludGVycnVwdCBDb250cm9sOlx0JTA4eFxuIiwKIAkJCSAgIEk5MTVf UkVBRChHRU4xMV9ESVNQTEFZX0lOVF9DVEwpKTsKIApAQCAtNTE0LDE1ICs0OTEsNiBAQCBzdGF0 aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRh KQogCQlzZXFfcHJpbnRmKG0sICJNYXN0ZXIgSW50ZXJydXB0IENvbnRyb2w6XHQlMDh4XG4iLAog CQkJICAgSTkxNV9SRUFEKEdFTjhfTUFTVEVSX0lSUSkpOwogCi0JCWZvciAoaSA9IDA7IGkgPCA0 OyBpKyspIHsKLQkJCXNlcV9wcmludGYobSwgIkdUIEludGVycnVwdCBJTVIgJWQ6XHQlMDh4XG4i LAotCQkJCSAgIGksIEk5MTVfUkVBRChHRU44X0dUX0lNUihpKSkpOwotCQkJc2VxX3ByaW50Ziht LCAiR1QgSW50ZXJydXB0IElJUiAlZDpcdCUwOHhcbiIsCi0JCQkJICAgaSwgSTkxNV9SRUFEKEdF TjhfR1RfSUlSKGkpKSk7Ci0JCQlzZXFfcHJpbnRmKG0sICJHVCBJbnRlcnJ1cHQgSUVSICVkOlx0 JTA4eFxuIiwKLQkJCQkgICBpLCBJOTE1X1JFQUQoR0VOOF9HVF9JRVIoaSkpKTsKLQkJfQotCiAJ CWdlbjhfZGlzcGxheV9pbnRlcnJ1cHRfaW5mbyhtKTsKIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpKSB7CiAJCWludGVsX3dha2VyZWZfdCBwcmVmOwpAQCAtNTU2LDIwICs1MjQs NiBAQCBzdGF0aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICpkYXRhKQogCQlzZXFfcHJpbnRmKG0sICJNYXN0ZXIgSUVSOlx0JTA4eFxuIiwKIAkJCSAg IEk5MTVfUkVBRChWTFZfTUFTVEVSX0lFUikpOwogCi0JCXNlcV9wcmludGYobSwgIlJlbmRlciBJ RVI6XHQlMDh4XG4iLAotCQkJICAgSTkxNV9SRUFEKEdUSUVSKSk7Ci0JCXNlcV9wcmludGYobSwg IlJlbmRlciBJSVI6XHQlMDh4XG4iLAotCQkJICAgSTkxNV9SRUFEKEdUSUlSKSk7Ci0JCXNlcV9w cmludGYobSwgIlJlbmRlciBJTVI6XHQlMDh4XG4iLAotCQkJICAgSTkxNV9SRUFEKEdUSU1SKSk7 Ci0KLQkJc2VxX3ByaW50ZihtLCAiUE0gSUVSOlx0XHQlMDh4XG4iLAotCQkJICAgSTkxNV9SRUFE KEdFTjZfUE1JRVIpKTsKLQkJc2VxX3ByaW50ZihtLCAiUE0gSUlSOlx0XHQlMDh4XG4iLAotCQkJ ICAgSTkxNV9SRUFEKEdFTjZfUE1JSVIpKTsKLQkJc2VxX3ByaW50ZihtLCAiUE0gSU1SOlx0XHQl MDh4XG4iLAotCQkJICAgSTkxNV9SRUFEKEdFTjZfUE1JTVIpKTsKLQogCQlwcmVmID0gaW50ZWxf ZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKIAkJc2VxX3By aW50ZihtLCAiUG9ydCBob3RwbHVnOlx0JTA4eFxuIiwKIAkJCSAgIEk5MTVfUkVBRChQT1JUX0hP VFBMVUdfRU4pKTsKQEAgLTYwMyw0MCArNTU3LDYgQEAgc3RhdGljIGludCBpOTE1X2ludGVycnVw dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJCSAgIEk5MTVfUkVBRChT REVJSVIpKTsKIAkJc2VxX3ByaW50ZihtLCAiU291dGggRGlzcGxheSBJbnRlcnJ1cHQgbWFzazoJ CSUwOHhcbiIsCiAJCQkgICBJOTE1X1JFQUQoU0RFSU1SKSk7Ci0JCXNlcV9wcmludGYobSwgIkdy YXBoaWNzIEludGVycnVwdCBlbmFibGU6CQklMDh4XG4iLAotCQkJICAgSTkxNV9SRUFEKEdUSUVS KSk7Ci0JCXNlcV9wcmludGYobSwgIkdyYXBoaWNzIEludGVycnVwdCBpZGVudGl0eToJCSUwOHhc biIsCi0JCQkgICBJOTE1X1JFQUQoR1RJSVIpKTsKLQkJc2VxX3ByaW50ZihtLCAiR3JhcGhpY3Mg SW50ZXJydXB0IG1hc2s6CQklMDh4XG4iLAotCQkJICAgSTkxNV9SRUFEKEdUSU1SKSk7Ci0JfQot Ci0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsKLQkJc2VxX3ByaW50ZihtLCAiUkNT IEludHIgTWFzazpcdCAlMDh4XG4iLAotCQkJICAgSTkxNV9SRUFEKEdFTjExX1JDUzBfUlNWRF9J TlRSX01BU0spKTsKLQkJc2VxX3ByaW50ZihtLCAiQkNTIEludHIgTWFzazpcdCAlMDh4XG4iLAot CQkJICAgSTkxNV9SRUFEKEdFTjExX0JDU19SU1ZEX0lOVFJfTUFTSykpOwotCQlzZXFfcHJpbnRm KG0sICJWQ1MwL1ZDUzEgSW50ciBNYXNrOlx0ICUwOHhcbiIsCi0JCQkgICBJOTE1X1JFQUQoR0VO MTFfVkNTMF9WQ1MxX0lOVFJfTUFTSykpOwotCQlzZXFfcHJpbnRmKG0sICJWQ1MyL1ZDUzMgSW50 ciBNYXNrOlx0ICUwOHhcbiIsCi0JCQkgICBJOTE1X1JFQUQoR0VOMTFfVkNTMl9WQ1MzX0lOVFJf TUFTSykpOwotCQlzZXFfcHJpbnRmKG0sICJWRUNTMC9WRUNTMSBJbnRyIE1hc2s6XHQgJTA4eFxu IiwKLQkJCSAgIEk5MTVfUkVBRChHRU4xMV9WRUNTMF9WRUNTMV9JTlRSX01BU0spKTsKLQkJc2Vx X3ByaW50ZihtLCAiR1VDL1NHIEludHIgTWFzazpcdCAlMDh4XG4iLAotCQkJICAgSTkxNV9SRUFE KEdFTjExX0dVQ19TR19JTlRSX01BU0spKTsKLQkJc2VxX3ByaW50ZihtLCAiR1BNL1dHQk9YUEVS RiBJbnRyIE1hc2s6ICUwOHhcbiIsCi0JCQkgICBJOTE1X1JFQUQoR0VOMTFfR1BNX1dHQk9YUEVS Rl9JTlRSX01BU0spKTsKLQkJc2VxX3ByaW50ZihtLCAiQ3J5cHRvIEludHIgTWFzazpcdCAlMDh4 XG4iLAotCQkJICAgSTkxNV9SRUFEKEdFTjExX0NSWVBUT19SU1ZEX0lOVFJfTUFTSykpOwotCQlz ZXFfcHJpbnRmKG0sICJHdW5pdC9DU01FIEludHIgTWFzazpcdCAlMDh4XG4iLAotCQkJICAgSTkx NV9SRUFEKEdFTjExX0dVTklUX0NTTUVfSU5UUl9NQVNLKSk7Ci0KLQl9IGVsc2UgaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gNikgewotCQlmb3JfZWFjaF91YWJpX2VuZ2luZShlbmdpbmUsIGRl dl9wcml2KSB7Ci0JCQlzZXFfcHJpbnRmKG0sCi0JCQkJICAgIkdyYXBoaWNzIEludGVycnVwdCBt YXNrICglcyk6CSUwOHhcbiIsCi0JCQkJICAgZW5naW5lLT5uYW1lLCBFTkdJTkVfUkVBRChlbmdp bmUsIFJJTkdfSU1SKSk7Ci0JCX0KIAl9CiAKIAlpbnRlbF9ydW50aW1lX3BtX3B1dCgmZGV2X3By aXYtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwpAQCAtMTMwNCwxNiArMTIyNCw2IEBAIHN0YXRpYyBp bnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAly ZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpOTE1X3Jjc190b3BvbG9neShzdHJ1Y3Qgc2VxX2Zp bGUgKm0sIHZvaWQgKnVudXNlZCkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Ci0Jc3RydWN0IGRybV9wcmludGVyIHAgPSBk cm1fc2VxX2ZpbGVfcHJpbnRlcihtKTsKLQotCWludGVsX2RldmljZV9pbmZvX3ByaW50X3RvcG9s b2d5KCZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1LCAmcCk7Ci0KLQlyZXR1cm4gMDsKLX0K LQogc3RhdGljIGludCBpOTE1X3Nocmlua2VyX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBub2RlX3RvX2k5 MTUobS0+cHJpdmF0ZSk7CkBAIC0xNTU4LDI5OCArMTQ2OCwxMCBAQCBpOTE1X2NhY2hlX3NoYXJp bmdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lk Ci1pbnRlbF9zc2V1X2NvcHlfc3Vic2xpY2VzKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpz c2V1LCBpbnQgc2xpY2UsCi0JCQkgIHU4ICp0b19tYXNrKQotewotCWludCBvZmZzZXQgPSBzbGlj ZSAqIHNzZXUtPnNzX3N0cmlkZTsKLQotCW1lbWNweSgmdG9fbWFza1tvZmZzZXRdLCAmc3NldS0+ c3Vic2xpY2VfbWFza1tvZmZzZXRdLCBzc2V1LT5zc19zdHJpZGUpOwotfQotCiBERUZJTkVfU0lN UExFX0FUVFJJQlVURShpOTE1X2NhY2hlX3NoYXJpbmdfZm9wcywKIAkJCWk5MTVfY2FjaGVfc2hh cmluZ19nZXQsIGk5MTVfY2FjaGVfc2hhcmluZ19zZXQsCiAJCQkiJWxsdVxuIik7CiAKLXN0YXRp YyB2b2lkIGNoZXJyeXZpZXdfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKLQkJCQkJICBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSkKLXsKLSNk ZWZpbmUgU1NfTUFYIDIKLQljb25zdCBpbnQgc3NfbWF4ID0gU1NfTUFYOwotCXUzMiBzaWcxW1NT X01BWF0sIHNpZzJbU1NfTUFYXTsKLQlpbnQgc3M7Ci0KLQlzaWcxWzBdID0gSTkxNV9SRUFEKENI Vl9QT1dFUl9TUzBfU0lHMSk7Ci0Jc2lnMVsxXSA9IEk5MTVfUkVBRChDSFZfUE9XRVJfU1MxX1NJ RzEpOwotCXNpZzJbMF0gPSBJOTE1X1JFQUQoQ0hWX1BPV0VSX1NTMF9TSUcyKTsKLQlzaWcyWzFd ID0gSTkxNV9SRUFEKENIVl9QT1dFUl9TUzFfU0lHMik7Ci0KLQlmb3IgKHNzID0gMDsgc3MgPCBz c19tYXg7IHNzKyspIHsKLQkJdW5zaWduZWQgaW50IGV1X2NudDsKLQotCQlpZiAoc2lnMVtzc10g JiBDSFZfU1NfUEdfRU5BQkxFKQotCQkJLyogc2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwotCQkJ Y29udGludWU7Ci0KLQkJc3NldS0+c2xpY2VfbWFzayA9IEJJVCgwKTsKLQkJc3NldS0+c3Vic2xp Y2VfbWFza1swXSB8PSBCSVQoc3MpOwotCQlldV9jbnQgPSAoKHNpZzFbc3NdICYgQ0hWX0VVMDhf UEdfRU5BQkxFKSA/IDAgOiAyKSArCi0JCQkgKChzaWcxW3NzXSAmIENIVl9FVTE5X1BHX0VOQUJM RSkgPyAwIDogMikgKwotCQkJICgoc2lnMVtzc10gJiBDSFZfRVUyMTBfUEdfRU5BQkxFKSA/IDAg OiAyKSArCi0JCQkgKChzaWcyW3NzXSAmIENIVl9FVTMxMV9QR19FTkFCTEUpID8gMCA6IDIpOwot CQlzc2V1LT5ldV90b3RhbCArPSBldV9jbnQ7Ci0JCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9IG1h eF90KHVuc2lnbmVkIGludCwKLQkJCQkJICAgICAgc3NldS0+ZXVfcGVyX3N1YnNsaWNlLCBldV9j bnQpOwotCX0KLSN1bmRlZiBTU19NQVgKLX0KLQotc3RhdGljIHZvaWQgZ2VuMTBfc3NldV9kZXZp Y2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkgICAgIHN0 cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1KQotewotI2RlZmluZSBTU19NQVggNgotCWNvbnN0IHN0 cnVjdCBpbnRlbF9ydW50aW1lX2luZm8gKmluZm8gPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpOwot CXUzMiBzX3JlZ1tTU19NQVhdLCBldV9yZWdbMiAqIFNTX01BWF0sIGV1X21hc2tbMl07Ci0JaW50 IHMsIHNzOwotCi0JZm9yIChzID0gMDsgcyA8IGluZm8tPnNzZXUubWF4X3NsaWNlczsgcysrKSB7 Ci0JCS8qCi0JCSAqIEZJWE1FOiBWYWxpZCBTUyBNYXNrIHJlc3BlY3RzIHRoZSBzcGVjIGFuZCBy ZWFkCi0JCSAqIG9ubHkgdmFsaWQgYml0cyBmb3IgdGhvc2UgcmVnaXN0ZXJzLCBleGNsdWRpbmcg cmVzZXJ2ZWQKLQkJICogYWx0aG91Z2ggdGhpcyBzZWVtcyB3cm9uZyBiZWNhdXNlIGl0IHdvdWxk IGxlYXZlIG1hbnkKLQkJICogc3Vic2xpY2VzIHdpdGhvdXQgQUNLLgotCQkgKi8KLQkJc19yZWdb c10gPSBJOTE1X1JFQUQoR0VOMTBfU0xJQ0VfUEdDVExfQUNLKHMpKSAmCi0JCQlHRU4xMF9QR0NU TF9WQUxJRF9TU19NQVNLKHMpOwotCQlldV9yZWdbMiAqIHNdID0gSTkxNV9SRUFEKEdFTjEwX1NT MDFfRVVfUEdDVExfQUNLKHMpKTsKLQkJZXVfcmVnWzIgKiBzICsgMV0gPSBJOTE1X1JFQUQoR0VO MTBfU1MyM19FVV9QR0NUTF9BQ0socykpOwotCX0KLQotCWV1X21hc2tbMF0gPSBHRU45X1BHQ1RM X1NTQV9FVTA4X0FDSyB8Ci0JCSAgICAgR0VOOV9QR0NUTF9TU0FfRVUxOV9BQ0sgfAotCQkgICAg IEdFTjlfUEdDVExfU1NBX0VVMjEwX0FDSyB8Ci0JCSAgICAgR0VOOV9QR0NUTF9TU0FfRVUzMTFf QUNLOwotCWV1X21hc2tbMV0gPSBHRU45X1BHQ1RMX1NTQl9FVTA4X0FDSyB8Ci0JCSAgICAgR0VO OV9QR0NUTF9TU0JfRVUxOV9BQ0sgfAotCQkgICAgIEdFTjlfUEdDVExfU1NCX0VVMjEwX0FDSyB8 Ci0JCSAgICAgR0VOOV9QR0NUTF9TU0JfRVUzMTFfQUNLOwotCi0JZm9yIChzID0gMDsgcyA8IGlu Zm8tPnNzZXUubWF4X3NsaWNlczsgcysrKSB7Ci0JCWlmICgoc19yZWdbc10gJiBHRU45X1BHQ1RM X1NMSUNFX0FDSykgPT0gMCkKLQkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KLQkJCWNvbnRp bnVlOwotCi0JCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwotCQlpbnRlbF9zc2V1X2NvcHlf c3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLCBzc2V1LT5zdWJzbGljZV9tYXNrKTsKLQotCQlmb3Ig KHNzID0gMDsgc3MgPCBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXM7IHNzKyspIHsKLQkJCXVuc2ln bmVkIGludCBldV9jbnQ7Ci0KLQkJCWlmIChpbmZvLT5zc2V1Lmhhc19zdWJzbGljZV9wZyAmJgot CQkJICAgICEoc19yZWdbc10gJiAoR0VOOV9QR0NUTF9TU19BQ0soc3MpKSkpCi0JCQkJLyogc2tp cCBkaXNhYmxlZCBzdWJzbGljZSAqLwotCQkJCWNvbnRpbnVlOwotCi0JCQlldV9jbnQgPSAyICog aHdlaWdodDMyKGV1X3JlZ1syICogcyArIHNzIC8gMl0gJgotCQkJCQkgICAgICAgZXVfbWFza1tz cyAlIDJdKTsKLQkJCXNzZXUtPmV1X3RvdGFsICs9IGV1X2NudDsKLQkJCXNzZXUtPmV1X3Blcl9z dWJzbGljZSA9IG1heF90KHVuc2lnbmVkIGludCwKLQkJCQkJCSAgICAgIHNzZXUtPmV1X3Blcl9z dWJzbGljZSwKLQkJCQkJCSAgICAgIGV1X2NudCk7Ci0JCX0KLQl9Ci0jdW5kZWYgU1NfTUFYCi19 Ci0KLXN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKLQkJCQkgICAgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCi17 Ci0jZGVmaW5lIFNTX01BWCAzCi0JY29uc3Qgc3RydWN0IGludGVsX3J1bnRpbWVfaW5mbyAqaW5m byA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdik7Ci0JdTMyIHNfcmVnW1NTX01BWF0sIGV1X3JlZ1sy ICogU1NfTUFYXSwgZXVfbWFza1syXTsKLQlpbnQgcywgc3M7Ci0KLQlmb3IgKHMgPSAwOyBzIDwg aW5mby0+c3NldS5tYXhfc2xpY2VzOyBzKyspIHsKLQkJc19yZWdbc10gPSBJOTE1X1JFQUQoR0VO OV9TTElDRV9QR0NUTF9BQ0socykpOwotCQlldV9yZWdbMipzXSA9IEk5MTVfUkVBRChHRU45X1NT MDFfRVVfUEdDVExfQUNLKHMpKTsKLQkJZXVfcmVnWzIqcyArIDFdID0gSTkxNV9SRUFEKEdFTjlf U1MyM19FVV9QR0NUTF9BQ0socykpOwotCX0KLQotCWV1X21hc2tbMF0gPSBHRU45X1BHQ1RMX1NT QV9FVTA4X0FDSyB8Ci0JCSAgICAgR0VOOV9QR0NUTF9TU0FfRVUxOV9BQ0sgfAotCQkgICAgIEdF TjlfUEdDVExfU1NBX0VVMjEwX0FDSyB8Ci0JCSAgICAgR0VOOV9QR0NUTF9TU0FfRVUzMTFfQUNL OwotCWV1X21hc2tbMV0gPSBHRU45X1BHQ1RMX1NTQl9FVTA4X0FDSyB8Ci0JCSAgICAgR0VOOV9Q R0NUTF9TU0JfRVUxOV9BQ0sgfAotCQkgICAgIEdFTjlfUEdDVExfU1NCX0VVMjEwX0FDSyB8Ci0J CSAgICAgR0VOOV9QR0NUTF9TU0JfRVUzMTFfQUNLOwotCi0JZm9yIChzID0gMDsgcyA8IGluZm8t PnNzZXUubWF4X3NsaWNlczsgcysrKSB7Ci0JCWlmICgoc19yZWdbc10gJiBHRU45X1BHQ1RMX1NM SUNFX0FDSykgPT0gMCkKLQkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KLQkJCWNvbnRpbnVl OwotCi0JCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwotCi0JCWlmIChJU19HRU45X0JDKGRl dl9wcml2KSkKLQkJCWludGVsX3NzZXVfY29weV9zdWJzbGljZXMoJmluZm8tPnNzZXUsIHMsCi0J CQkJCQkgIHNzZXUtPnN1YnNsaWNlX21hc2spOwotCi0JCWZvciAoc3MgPSAwOyBzcyA8IGluZm8t PnNzZXUubWF4X3N1YnNsaWNlczsgc3MrKykgewotCQkJdW5zaWduZWQgaW50IGV1X2NudDsKLQkJ CXU4IHNzX2lkeCA9IHMgKiBpbmZvLT5zc2V1LnNzX3N0cmlkZSArCi0JCQkJICAgIHNzIC8gQklU U19QRVJfQllURTsKLQotCQkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7Ci0JCQkJaWYgKCEo c19yZWdbc10gJiAoR0VOOV9QR0NUTF9TU19BQ0soc3MpKSkpCi0JCQkJCS8qIHNraXAgZGlzYWJs ZWQgc3Vic2xpY2UgKi8KLQkJCQkJY29udGludWU7Ci0KLQkJCQlzc2V1LT5zdWJzbGljZV9tYXNr W3NzX2lkeF0gfD0KLQkJCQkJQklUKHNzICUgQklUU19QRVJfQllURSk7Ci0JCQl9Ci0KLQkJCWV1 X2NudCA9IDIgKiBod2VpZ2h0MzIoZXVfcmVnWzIqcyArIHNzLzJdICYKLQkJCQkJICAgICAgIGV1 X21hc2tbc3MlMl0pOwotCQkJc3NldS0+ZXVfdG90YWwgKz0gZXVfY250OwotCQkJc3NldS0+ZXVf cGVyX3N1YnNsaWNlID0gbWF4X3QodW5zaWduZWQgaW50LAotCQkJCQkJICAgICAgc3NldS0+ZXVf cGVyX3N1YnNsaWNlLAotCQkJCQkJICAgICAgZXVfY250KTsKLQkJfQotCX0KLSN1bmRlZiBTU19N QVgKLX0KLQotc3RhdGljIHZvaWQgYmR3X3NzZXVfZGV2aWNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJICAgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUp Ci17Ci0JY29uc3Qgc3RydWN0IGludGVsX3J1bnRpbWVfaW5mbyAqaW5mbyA9IFJVTlRJTUVfSU5G TyhkZXZfcHJpdik7Ci0JdTMyIHNsaWNlX2luZm8gPSBJOTE1X1JFQUQoR0VOOF9HVF9TTElDRV9J TkZPKTsKLQlpbnQgczsKLQotCXNzZXUtPnNsaWNlX21hc2sgPSBzbGljZV9pbmZvICYgR0VOOF9M U0xJQ0VTVEFUX01BU0s7Ci0KLQlpZiAoc3NldS0+c2xpY2VfbWFzaykgewotCQlzc2V1LT5ldV9w ZXJfc3Vic2xpY2UgPSBpbmZvLT5zc2V1LmV1X3Blcl9zdWJzbGljZTsKLQkJZm9yIChzID0gMDsg cyA8IGZscyhzc2V1LT5zbGljZV9tYXNrKTsgcysrKQotCQkJaW50ZWxfc3NldV9jb3B5X3N1YnNs aWNlcygmaW5mby0+c3NldSwgcywKLQkJCQkJCSAgc3NldS0+c3Vic2xpY2VfbWFzayk7Ci0JCXNz ZXUtPmV1X3RvdGFsID0gc3NldS0+ZXVfcGVyX3N1YnNsaWNlICoKLQkJCQkgaW50ZWxfc3NldV9z dWJzbGljZV90b3RhbChzc2V1KTsKLQotCQkvKiBzdWJ0cmFjdCBmdXNlZCBvZmYgRVUocykgZnJv bSBlbmFibGVkIHNsaWNlKHMpICovCi0JCWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xpY2Vf bWFzayk7IHMrKykgewotCQkJdTggc3Vic2xpY2VfN2V1ID0gaW5mby0+c3NldS5zdWJzbGljZV83 ZXVbc107Ci0KLQkJCXNzZXUtPmV1X3RvdGFsIC09IGh3ZWlnaHQ4KHN1YnNsaWNlXzdldSk7Ci0J CX0KLQl9Ci19Ci0KLXN0YXRpYyB2b2lkIGk5MTVfcHJpbnRfc3NldV9pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSwgYm9vbCBpc19hdmFpbGFibGVfaW5mbywKLQkJCQkgY29uc3Qgc3RydWN0IHNzZXVf ZGV2X2luZm8gKnNzZXUpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g bm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwotCWNvbnN0IGNoYXIgKnR5cGUgPSBpc19hdmFpbGFi bGVfaW5mbyA/ICJBdmFpbGFibGUiIDogIkVuYWJsZWQiOwotCWludCBzOwotCi0Jc2VxX3ByaW50 ZihtLCAiICAlcyBTbGljZSBNYXNrOiAlMDR4XG4iLCB0eXBlLAotCQkgICBzc2V1LT5zbGljZV9t YXNrKTsKLQlzZXFfcHJpbnRmKG0sICIgICVzIFNsaWNlIFRvdGFsOiAldVxuIiwgdHlwZSwKLQkJ ICAgaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzaykpOwotCXNlcV9wcmludGYobSwgIiAgJXMgU3Vi c2xpY2UgVG90YWw6ICV1XG4iLCB0eXBlLAotCQkgICBpbnRlbF9zc2V1X3N1YnNsaWNlX3RvdGFs KHNzZXUpKTsKLQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBzKyspIHsK LQkJc2VxX3ByaW50ZihtLCAiICAlcyBTbGljZSVpIHN1YnNsaWNlczogJXVcbiIsIHR5cGUsCi0J CQkgICBzLCBpbnRlbF9zc2V1X3N1YnNsaWNlc19wZXJfc2xpY2Uoc3NldSwgcykpOwotCX0KLQlz ZXFfcHJpbnRmKG0sICIgICVzIEVVIFRvdGFsOiAldVxuIiwgdHlwZSwKLQkJICAgc3NldS0+ZXVf dG90YWwpOwotCXNlcV9wcmludGYobSwgIiAgJXMgRVUgUGVyIFN1YnNsaWNlOiAldVxuIiwgdHlw ZSwKLQkJICAgc3NldS0+ZXVfcGVyX3N1YnNsaWNlKTsKLQotCWlmICghaXNfYXZhaWxhYmxlX2lu Zm8pCi0JCXJldHVybjsKLQotCXNlcV9wcmludGYobSwgIiAgSGFzIFBvb2xlZCBFVTogJXNcbiIs IHllc25vKEhBU19QT09MRURfRVUoZGV2X3ByaXYpKSk7Ci0JaWYgKEhBU19QT09MRURfRVUoZGV2 X3ByaXYpKQotCQlzZXFfcHJpbnRmKG0sICIgIE1pbiBFVSBpbiBwb29sOiAldVxuIiwgc3NldS0+ bWluX2V1X2luX3Bvb2wpOwotCi0Jc2VxX3ByaW50ZihtLCAiICBIYXMgU2xpY2UgUG93ZXIgR2F0 aW5nOiAlc1xuIiwKLQkJICAgeWVzbm8oc3NldS0+aGFzX3NsaWNlX3BnKSk7Ci0Jc2VxX3ByaW50 ZihtLCAiICBIYXMgU3Vic2xpY2UgUG93ZXIgR2F0aW5nOiAlc1xuIiwKLQkJICAgeWVzbm8oc3Nl dS0+aGFzX3N1YnNsaWNlX3BnKSk7Ci0Jc2VxX3ByaW50ZihtLCAiICBIYXMgRVUgUG93ZXIgR2F0 aW5nOiAlc1xuIiwKLQkJICAgeWVzbm8oc3NldS0+aGFzX2V1X3BnKSk7Ci19Ci0KLXN0YXRpYyBp bnQgaTkxNV9zc2V1X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKLXsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJp dmF0ZSk7Ci0JY29uc3Qgc3RydWN0IGludGVsX3J1bnRpbWVfaW5mbyAqaW5mbyA9IFJVTlRJTUVf SU5GTyhkZXZfcHJpdik7Ci0Jc3RydWN0IHNzZXVfZGV2X2luZm8gc3NldTsKLQlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZjsKLQotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkKLQkJcmV0dXJu IC1FTk9ERVY7Ci0KLQlzZXFfcHV0cyhtLCAiU1NFVSBEZXZpY2UgSW5mb1xuIik7Ci0JaTkxNV9w cmludF9zc2V1X2luZm8obSwgdHJ1ZSwgJmluZm8tPnNzZXUpOwotCi0Jc2VxX3B1dHMobSwgIlNT RVUgRGV2aWNlIFN0YXR1c1xuIik7Ci0JbWVtc2V0KCZzc2V1LCAwLCBzaXplb2Yoc3NldSkpOwot CWludGVsX3NzZXVfc2V0X2luZm8oJnNzZXUsIGluZm8tPnNzZXUubWF4X3NsaWNlcywKLQkJCSAg ICBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXMsCi0JCQkgICAgaW5mby0+c3NldS5tYXhfZXVzX3Bl cl9zdWJzbGljZSk7Ci0KLQl3aXRoX2ludGVsX3J1bnRpbWVfcG0oJmRldl9wcml2LT5ydW50aW1l X3BtLCB3YWtlcmVmKSB7Ci0JCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKLQkJCWNoZXJy eXZpZXdfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAmc3NldSk7Ci0JCWVsc2UgaWYgKElT X0JST0FEV0VMTChkZXZfcHJpdikpCi0JCQliZHdfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2 LCAmc3NldSk7Ci0JCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgOSkpCi0JCQlnZW45X3NzZXVf ZGV2aWNlX3N0YXR1cyhkZXZfcHJpdiwgJnNzZXUpOwotCQllbHNlIGlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDEwKQotCQkJZ2VuMTBfc3NldV9kZXZpY2Vfc3RhdHVzKGRldl9wcml2LCAmc3Nl dSk7Ci0JfQotCi0JaTkxNV9wcmludF9zc2V1X2luZm8obSwgZmFsc2UsICZzc2V1KTsKLQotCXJl dHVybiAwOwotfQotCi1zdGF0aWMgaW50IGk5MTVfZm9yY2V3YWtlX29wZW4oc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBpbm9kZS0+aV9wcml2YXRlOwotCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSAmaTkxNS0+ Z3Q7Ci0KLQlhdG9taWNfaW5jKCZndC0+dXNlcl93YWtlcmVmKTsKLQlpbnRlbF9ndF9wbV9nZXQo Z3QpOwotCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNikKLQkJaW50ZWxfdW5jb3JlX2ZvcmNld2Fr ZV91c2VyX2dldChndC0+dW5jb3JlKTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgaW50IGk5 MTVfZm9yY2V3YWtlX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZp bGUpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBpbm9kZS0+aV9wcml2YXRl OwotCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSAmaTkxNS0+Z3Q7Ci0KLQlpZiAoSU5URUxfR0VOKGk5 MTUpID49IDYpCi0JCWludGVsX3VuY29yZV9mb3JjZXdha2VfdXNlcl9wdXQoJmk5MTUtPnVuY29y ZSk7Ci0JaW50ZWxfZ3RfcG1fcHV0KGd0KTsKLQlhdG9taWNfZGVjKCZndC0+dXNlcl93YWtlcmVm KTsKLQotCXJldHVybiAwOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9u cyBpOTE1X2ZvcmNld2FrZV9mb3BzID0gewotCS5vd25lciA9IFRISVNfTU9EVUxFLAotCS5vcGVu ID0gaTkxNV9mb3JjZXdha2Vfb3BlbiwKLQkucmVsZWFzZSA9IGk5MTVfZm9yY2V3YWtlX3JlbGVh c2UsCi19OwotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pbmZvX2xpc3QgaTkxNV9kZWJ1Z2Zz X2xpc3RbXSA9IHsKIAl7Imk5MTVfY2FwYWJpbGl0aWVzIiwgaTkxNV9jYXBhYmlsaXRpZXMsIDB9 LAogCXsiaTkxNV9nZW1fb2JqZWN0cyIsIGk5MTVfZ2VtX29iamVjdF9pbmZvLCAwfSwKQEAgLTE4 NjIsMTAgKzE0ODQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pbmZvX2xpc3QgaTkxNV9k ZWJ1Z2ZzX2xpc3RbXSA9IHsKIAl7Imk5MTVfbGxjIiwgaTkxNV9sbGMsIDB9LAogCXsiaTkxNV9y dW50aW1lX3BtX3N0YXR1cyIsIGk5MTVfcnVudGltZV9wbV9zdGF0dXMsIDB9LAogCXsiaTkxNV9l bmdpbmVfaW5mbyIsIGk5MTVfZW5naW5lX2luZm8sIDB9LAotCXsiaTkxNV9yY3NfdG9wb2xvZ3ki LCBpOTE1X3Jjc190b3BvbG9neSwgMH0sCiAJeyJpOTE1X3Nocmlua2VyX2luZm8iLCBpOTE1X3No cmlua2VyX2luZm8sIDB9LAogCXsiaTkxNV93YV9yZWdpc3RlcnMiLCBpOTE1X3dhX3JlZ2lzdGVy cywgMH0sCi0JeyJpOTE1X3NzZXVfc3RhdHVzIiwgaTkxNV9zc2V1X3N0YXR1cywgMH0sCiAJeyJp OTE1X3Jwc19ib29zdF9pbmZvIiwgaTkxNV9ycHNfYm9vc3RfaW5mbywgMH0sCiB9OwogI2RlZmlu ZSBJOTE1X0RFQlVHRlNfRU5UUklFUyBBUlJBWV9TSVpFKGk5MTVfZGVidWdmc19saXN0KQpAQCAt MTg5MSw4ICsxNTExLDYgQEAgdm9pZCBpOTE1X2RlYnVnZnNfcmVnaXN0ZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJaTkxNV9kZWJ1Z2ZzX3BhcmFtcyhkZXZfcHJpdik7 CiAKLQlkZWJ1Z2ZzX2NyZWF0ZV9maWxlKCJpOTE1X2ZvcmNld2FrZV91c2VyIiwgU19JUlVTUiwg bWlub3ItPmRlYnVnZnNfcm9vdCwKLQkJCSAgICB0b19pOTE1KG1pbm9yLT5kZXYpLCAmaTkxNV9m b3JjZXdha2VfZm9wcyk7CiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaTkxNV9kZWJ1Z2Zz X2ZpbGVzKTsgaSsrKSB7CiAJCWRlYnVnZnNfY3JlYXRlX2ZpbGUoaTkxNV9kZWJ1Z2ZzX2ZpbGVz W2ldLm5hbWUsCiAJCQkJICAgIFNfSVJVR08gfCBTX0lXVVNSLAotLSAKMi4yNS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK