From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90D5EC48BE5 for ; Thu, 17 Jun 2021 06:43:23 +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 515B0613CE for ; Thu, 17 Jun 2021 06:43:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 515B0613CE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DC2E06E883; Thu, 17 Jun 2021 06:43:22 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id E5D7D6E883; Thu, 17 Jun 2021 06:43:21 +0000 (UTC) IronPort-SDR: C6SE+/flmBCAAWCNU9xFkww0ZxydDo9L89etmScsEISu0v38EEyQ1+6bRjVt+e9lap1gFucG4Q U7qQJaE/SsGg== X-IronPort-AV: E=McAfee;i="6200,9189,10017"; a="206349070" X-IronPort-AV: E=Sophos;i="5.83,278,1616482800"; d="scan'208";a="206349070" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jun 2021 23:43:21 -0700 IronPort-SDR: 0tc6L0qZKRKz9bLs/gQtmLdu/h2Ci5z5o0CjkF2H4dfnRr+El82DJjmZeD6kTj31H8KQccQ8AC +96PRJi3yBnw== X-IronPort-AV: E=Sophos;i="5.83,278,1616482800"; d="scan'208";a="404565523" Received: from dbstims-dev.fm.intel.com ([10.1.27.177]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jun 2021 23:43:20 -0700 From: Dale B Stimson To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Wed, 16 Jun 2021 23:43:09 -0700 Message-Id: <20210617064309.33420-2-dale.b.stimson@intel.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210617064309.33420-1-dale.b.stimson@intel.com> References: <20210617064309.33420-1-dale.b.stimson@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v5 1/1] drm/i915/dg1: Add HWMON power sensor support 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" QXMgcGFydCBvZiB0aGUgU3lzdGVtIE1hbmFnZW1lbmVudCBJbnRlcmZhY2UgKFNNSSksIHVzZSB0 aGUgSFdNT04Kc3Vic3lzdGVtIHRvIGRpc3BsYXkgcG93ZXIgdXRpbGl6YXRpb24uCgpUaGUgZm9s bG93aW5nIHN0YW5kYXJkIEhXTU9OIHBvd2VyIHNlbnNvcnMgYXJlIGN1cnJlbnRseSBzdXBwb3J0 ZWQKKGFuZCBhcHByb3ByaWF0ZWx5IHNjYWxlZCk6CiAgL3N5cy9jbGFzcy9kcm0vY2FyZDAvZGV2 aWNlL2h3bW9uL2h3bW9uPGk+CgktIGVuZXJneTFfaW5wdXQKCS0gcG93ZXIxX2NhcAoJLSBwb3dl cjFfbWF4CgpTb21lIG5vbi1zdGFuZGFyZCBIV01PTiBwb3dlciBpbmZvcm1hdGlvbiBpcyBhbHNv IHByb3ZpZGVkLCBzdWNoIGFzCmVuYWJsZSBiaXRzIGFuZCBpbnRlcnZhbHMuCgpTaWduZWQtb2Zm LWJ5OiBEYWxlIEIgU3RpbXNvbiA8ZGFsZS5iLnN0aW1zb25AaW50ZWwuY29tPgotLS0KIC4uLi9B QkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaW50ZWwtaTkxNS1od21vbiB8IDExNiArKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L0tjb25maWcgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2h3bW9uLmMgICAgICAgICAgICAgfCA3NzAgKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2h3bW9uLmggICAgICAgICAgICAgfCAgNDkgKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICAgICAgICB8ICA1MiArKwog OCBmaWxlcyBjaGFuZ2VkLCA5OTcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IERv Y3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWludGVsLWk5MTUtaHdtb24KIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2h3bW9uLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2h3bW9uLmgKCmRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1pbnRlbC1pOTE1LWh3 bW9uIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaW50ZWwtaTkxNS1o d21vbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi45MTBmYjhlNDZm NzRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1k cml2ZXItaW50ZWwtaTkxNS1od21vbgpAQCAtMCwwICsxLDExNiBAQAorV2hhdDogICAgICAgICAg IC9zeXMvZGV2aWNlcy8uLi4vaHdtb24vaHdtb248aT4vZW5lcmd5MV9pbnB1dAorRGF0ZTogICAg ICAgICAgIEp1bmUgMjAyMQorS2VybmVsVmVyc2lvbjogIDUuMTQKK0NvbnRhY3Q6ICAgICAgICBk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAg ICAgICBSTy4gRW5lcmd5IGlucHV0IG9mIGRldmljZSBpbiBtaWNyb2pvdWxlcy4KKworCQlUaGUg cmV0dXJuZWQgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBpcyBhbiB1bnNpZ25lZCBpbnRlZ2VyCisJ CW51bWJlciB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gNjQtYml0cy4gIFdhcm5pbmc6IFRoZSBoYXJk d2FyZQorCQlyZWdpc3RlciBpcyAzMi1iaXRzIHdpZGUgYW5kIGNhbiBvdmVyZmxvdyBieSB3cmFw cGluZyBhcm91bmQuCisJCUEgc2luZ2xlIHdyYXAtYXJvdW5kIGJldHdlZW4gY2FsbHMgdG8gcmVh ZCB0aGlzIHZhbHVlIGNhbgorCQliZSBkZXRlY3RlZCBhbmQgd2lsbCBiZSBhY2NvdW50ZWQgZm9y IGluIHRoZSByZXR1cm5lZCB2YWx1ZS4KKwkJQXQgYSBwb3dlciBjb25zdW1wdGlvbiBvZiAxIHdh dHQsIHRoZSAzMi1iaXQgaGFyZHdhcmUgcmVnaXN0ZXIKKwkJd291bGQgd3JhcC1hcm91bmQgYXBw cm94aW1hdGVseSBldmVyeSAzIGRheXMuCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3Vs YXIgSW50ZWwgaTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAgICAgICAvc3lz L2RldmljZXMvLi4uL2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9tYXhfZW5hYmxlCitEYXRlOiAgICAg ICAgICAgSnVuZSAyMDIxCitLZXJuZWxWZXJzaW9uOiAgNS4xNAorQ29udGFjdDogICAgICAgIGRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAg ICAgIFJPLiAgU3VzdGFpbmVkIHBvd2VyIGxpbWl0IGlzIGVuYWJsZWQgLSB0cnVlIG9yIGZhbHNl LgorCisgICAgICAgICAgICAgICAgVGhlIHBvd2VyIGNvbnRyb2xsZXIgd2lsbCB0aHJvdHRsZSB0 aGUgb3BlcmF0aW5nIGZyZXF1ZW5jeQorICAgICAgICAgICAgICAgIGlmIHRoZSBwb3dlciBhdmVy YWdlZCBvdmVyIGEgd2luZG93ICh0eXBpY2FsbHkgc2Vjb25kcykKKyAgICAgICAgICAgICAgICBl eGNlZWRzIHRoaXMgbGltaXQuCisKKyAgICAgICAgICAgICAgICBTZWUgcG93ZXIxX21heF9lbmFi bGUgcG93ZXIxX21heCBwb3dlcjFfbWF4X2ludGVydmFsCisKKwkJT25seSBzdXBwb3J0ZWQgZm9y IHBhcnRpY3VsYXIgSW50ZWwgaTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAg ICAgICAvc3lzL2RldmljZXMvLi4uL2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9tYXgKK0RhdGU6ICAg ICAgICAgICBKdW5lIDIwMjEKK0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAg ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAg ICAgICAgUlcuICBTdXN0YWluZWQgcG93ZXIgbGltaXQgaW4gbWlsbGl3YXR0cworCisgICAgICAg ICAgICAgICAgVGhlIHBvd2VyIGNvbnRyb2xsZXIgd2lsbCB0aHJvdHRsZSB0aGUgb3BlcmF0aW5n IGZyZXF1ZW5jeQorICAgICAgICAgICAgICAgIGlmIHRoZSBwb3dlciBhdmVyYWdlZCBvdmVyIGEg d2luZG93ICh0eXBpY2FsbHkgc2Vjb25kcykKKyAgICAgICAgICAgICAgICBleGNlZWRzIHRoaXMg bGltaXQuCisKKyAgICAgICAgICAgICAgICBTZWUgcG93ZXIxX21heF9lbmFibGUgcG93ZXIxX21h eCBwb3dlcjFfbWF4X2ludGVydmFsCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3VsYXIg SW50ZWwgaTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2Rl dmljZXMvLi4uL2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9tYXhfaW50ZXJ2YWwKK0RhdGU6ICAgICAg ICAgICBKdW5lIDIwMjEKK0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAg ICAgUlcuIFN1c3RhaW5lZCBwb3dlciBsaW1pdCBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgb3Zl cgorICAgICAgICAgICAgICAgIHdoaWNoIHN1c3RhaW5lZCBwb3dlciBpcyBhdmVyYWdlZC4KKwor ICAgICAgICAgICAgICAgIFNlZSBwb3dlcjFfbWF4X2VuYWJsZSBwb3dlcjFfbWF4IHBvd2VyMV9t YXhfaW50ZXJ2YWwKKworCQlPbmx5IHN1cHBvcnRlZCBmb3IgcGFydGljdWxhciBJbnRlbCBpOTE1 IGdyYXBoaWNzIHBsYXRmb3Jtcy4KKworV2hhdDogICAgICAgICAgIC9zeXMvZGV2aWNlcy8uLi4v aHdtb24vaHdtb248aT4vcG93ZXIxX2NhcF9lbmFibGUKK0RhdGU6ICAgICAgICAgICBKdW5lIDIw MjEKK0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisJCVJXLiAgUG93ZXIgYnVyc3QgbGltaXQg aXMgZW5hYmxlZCAtIHRydWUgb3IgZmFsc2UKKworICAgICAgICAgICAgICAgIFNlZSBwb3dlcjFf Y2FwX2VuYWJsZSBwb3dlcjFfY2FwCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3VsYXIg SW50ZWwgaTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2Rl dmljZXMvLi4uL2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9jYXAKK0RhdGU6ICAgICAgICAgICBKdW5l IDIwMjEKK0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisJCVJXLiAgUG93ZXIgYnVyc3QgbGlt aXQgaW4gbWlsbGl3YXR0cy4KKworICAgICAgICAgICAgICAgIFNlZSBwb3dlcjFfY2FwX2VuYWJs ZSBwb3dlcjFfY2FwCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3VsYXIgSW50ZWwgaTkx NSBncmFwaGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2RldmljZXMvLi4u L2h3bW9uL2h3bW9uPGk+L3Bvd2VyX2RlZmF1bHRfbGltaXQKK0RhdGU6ICAgICAgICAgICBKdW5l IDIwMjEKK0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgUk8uICBE ZWZhdWx0IHBvd2VyIGxpbWl0LgorCisJCU9ubHkgc3VwcG9ydGVkIGZvciBwYXJ0aWN1bGFyIElu dGVsIGk5MTUgZ3JhcGhpY3MgcGxhdGZvcm1zLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9kZXZp Y2VzLy4uLi9od21vbi9od21vbjxpPi9wb3dlcl9taW5fbGltaXQKK0RhdGU6ICAgICAgICAgICBK dW5lIDIwMjEKK0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgUk8u ICBEZWZhdWx0IG1pbmltdW0gcG93ZXIgbGltaXQuCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBh cnRpY3VsYXIgSW50ZWwgaTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKKwkJSWYgbm90IHN1cHBv cnRlZCwgdGhlbiBhdHRyaWJ1dGUgd2lsbCBiZSBhYnNlbnQsIG9yIGF0dGVtcHRlZAorCQlhY2Nl c3Mgd2lsbCBnaXZlIGVycm9yIHJldHVybiBvciByZXR1cm4gdmFsdWUgYXMgMC4KKworV2hhdDog ICAgICAgICAgIC9zeXMvZGV2aWNlcy8uLi4vaHdtb24vaHdtb248aT4vcG93ZXJfbWF4X2xpbWl0 CitEYXRlOiAgICAgICAgICAgSnVuZSAyMDIxCitLZXJuZWxWZXJzaW9uOiAgNS4xNAorQ29udGFj dDogICAgICAgIGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0Rlc2NyaXB0aW9uOgor ICAgICAgICAgICAgICAgIFJPLiAgRGVmYXVsdCBtYXhpbXVtIHBvd2VyIGxpbWl0LgorCisJCU9u bHkgc3VwcG9ydGVkIGZvciBwYXJ0aWN1bGFyIEludGVsIGk5MTUgZ3JhcGhpY3MgcGxhdGZvcm1z LgorCisJCUlmIG5vdCBzdXBwb3J0ZWQsIHRoZW4gb25lIG9mOiBhYnNlbnQsIGVycm9yIHJldHVy biBvciB2YWx1ZQorCQlyZXR1cm5lZCBhcyAwIG9yIFVJTlRfTUFYLgorCisJCUlmIG5vdCBzdXBw b3J0ZWQsIHRoZW4gYXR0cmlidXRlIHdpbGwgYmUgYWJzZW50LCBvciBhdHRlbXB0ZWQKKwkJYWNj ZXNzIHdpbGwgZ2l2ZSBlcnJvciByZXR1cm4gb3IgcmV0dXJuIHZhbHVlIGFzIDAgb3IgVUlOVF9N QVguCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvS2NvbmZpZwppbmRleCBiNjNkMzc0ZGZmMjNmLi40N2EwYTgyNzc0Y2M4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L0tjb25maWcKQEAgLTE0LDYgKzE0LDcgQEAgY29uZmlnIERSTV9JOTE1CiAJc2Vs ZWN0IERSTV9NSVBJX0RTSQogCXNlbGVjdCBSRUxBWQogCXNlbGVjdCBJUlFfV09SSworCXNlbGVj dCBIV01PTgogCSMgaTkxNSBkZXBlbmRzIG9uIEFDUElfVklERU8gd2hlbiBBQ1BJIGlzIGVuYWJs ZWQKIAkjIGJ1dCBmb3Igc2VsZWN0IHRvIHdvcmssIG5lZWQgdG8gc2VsZWN0IEFDUElfVklERU8n cyBkZXBlbmRlbmNpZXMsIGljawogCXNlbGVjdCBCQUNLTElHSFRfQ0xBU1NfREVWSUNFIGlmIEFD UEkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggZjU3ZGZjNzRkNmNlMC4uOGNkYWUwYzMyN2UyNyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTM3LDYgKzM3LDcgQEAgaTkxNS15ICs9IGk5MTVfZHJ2 Lm8gXAogCSAgaTkxNV9jb25maWcubyBcCiAJICBpOTE1X2lycS5vIFwKIAkgIGk5MTVfZ2V0cGFy YW0ubyBcCisJICBpOTE1X2h3bW9uLm8gXAogCSAgaTkxNV9taXRpZ2F0aW9ucy5vIFwKIAkgIGk5 MTVfcGFyYW1zLm8gXAogCSAgaTkxNV9wY2kubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRl eCA4NTBiNDk5YzcxYzhlLi5hZDA3MDZjNjUxZTdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK QEAgLTcwLDYgKzcwLDcgQEAKIAogI2luY2x1ZGUgImk5MTVfZGVidWdmcy5oIgogI2luY2x1ZGUg Imk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9od21vbi5oIgogI2luY2x1ZGUgImk5MTVfaW9j MzIuaCIKICNpbmNsdWRlICJpOTE1X2lycS5oIgogI2luY2x1ZGUgImk5MTVfbWVtY3B5LmgiCkBA IC02OTEsNiArNjkyLDggQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJaW50ZWxfZ3RfZHJpdmVyX3JlZ2lzdGVy KCZkZXZfcHJpdi0+Z3QpOwogCisJaTkxNV9od21vbl9yZWdpc3RlcihkZXZfcHJpdik7CisKIAlp bnRlbF9kaXNwbGF5X2RyaXZlcl9yZWdpc3RlcihkZXZfcHJpdik7CiAKIAlpbnRlbF9wb3dlcl9k b21haW5zX2VuYWJsZShkZXZfcHJpdik7CkBAIC03MTcsOSArNzIwLDEyIEBAIHN0YXRpYyB2b2lk IGk5MTVfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCiAJaW50ZWxfZGlzcGxheV9kcml2ZXJfdW5yZWdpc3RlcihkZXZfcHJpdik7CiAKKwlpOTE1 X2h3bW9uX3VucmVnaXN0ZXIoZGV2X3ByaXYpOworCiAJaW50ZWxfZ3RfZHJpdmVyX3VucmVnaXN0 ZXIoJmRldl9wcml2LT5ndCk7CiAKIAlpOTE1X3BlcmZfdW5yZWdpc3RlcihkZXZfcHJpdik7CisK IAlpOTE1X3BtdV91bnJlZ2lzdGVyKGRldl9wcml2KTsKIAogCWk5MTVfdGVhcmRvd25fc3lzZnMo ZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMDFlMTFmZTM4NjQyZC4uM2Q2 NWQ5NWVlNjRmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xMTA0LDYgKzExMDQsOCBA QCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAlzdHJ1Y3QgaTkxNV9wZXJmIHBlcmY7CiAK KwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb247CisKIAkvKiBBYnN0cmFjdCB0aGUgc3VibWlzc2lv biBtZWNoYW5pc20gKGxlZ2FjeSByaW5nYnVmZmVyIG9yIGV4ZWNsaXN0cykgYXdheSAqLwogCXN0 cnVjdCBpbnRlbF9ndCBndDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9od21vbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9od21vbi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjhkMDgwNTE5NmI5YmYKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2h3bW9uLmMKQEAgLTAsMCArMSw3NzAg QEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKy8qCisgKiBQb3dlci1yZWxhdGVkIGh3bW9u IGVudHJpZXMuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2h3bW9uLmg+CisjaW5jbHVkZSA8bGlu dXgvaHdtb24tc3lzZnMuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisjaW5jbHVkZSAi aTkxNV9kcnYuaCIKKyNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgorI2luY2x1ZGUgImk5MTVfaHdt b24uaCIKKworLyoKKyAqIFNGXyogLSBzY2FsZSBmYWN0b3JzIGZvciBwYXJ0aWN1bGFyIHF1YW50 aXRpZXMuCisgKiBUaGUgaHdtb24gc3RhbmRhcmQgc2F5cyB0aGF0IHF1YW50aXRpZXMgb2YgdGhl IGdpdmVuIHR5cGVzIGFyZSBzcGVjaWZpZWQKKyAqIGluIHRoZSBnaXZlbiB1bml0czoKKyAqIC0g dGltZSAgIC0gbWlsbGlzZWNvbmRzCisgKiAtIHBvd2VyICAtIG1pY3Jvd2F0dHMKKyAqIC0gZW5l cmd5IC0gbWljcm9qb3VsZXMKKyAqLworCisjZGVmaW5lIFNGX1RJTUUJCSAgIDEwMDAKKyNkZWZp bmUgU0ZfUE9XRVIJMTAwMDAwMAorI2RlZmluZSBTRl9FTkVSR1kJMTAwMDAwMAorCisjZGVmaW5l IEZJRUxEX1NISUZUKF9fbWFzaykJCQkJICAgIFwKKwkoQlVJTERfQlVHX09OX1pFUk8oIV9fYnVp bHRpbl9jb25zdGFudF9wKF9fbWFzaykpICsgXAorCQlCVUlMRF9CVUdfT05fWkVSTygoX19tYXNr KSA9PSAwKSArCSAgICBcCisJCV9fYmZfc2hmKF9fbWFzaykpCisKK3N0YXRpYyB2b2lkCitfbG9j a2VkX3dpdGhfcG1faW50ZWxfdW5jb3JlX3JtdyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUs CisJCQkJIGk5MTVfcmVnX3QgcmVnLCB1MzIgY2xlYXIsIHUzMiBzZXQpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB1bmNvcmUtPmk5MTU7CisJc3RydWN0IGk5MTVfaHdtb24g Kmh3bW9uID0gaTkxNS0+aHdtb247CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisKKwltdXRl eF9sb2NrKCZod21vbi0+aHdtb25fbG9jayk7CisKKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0odW5j b3JlLT5ycG0sIHdha2VyZWYpCisJCWludGVsX3VuY29yZV9ybXcodW5jb3JlLCByZWcsIGNsZWFy LCBzZXQpOworCisJbXV0ZXhfdW5sb2NrKCZod21vbi0+aHdtb25fbG9jayk7Cit9CisKKy8qCisg KiBUaGlzIGZ1bmN0aW9uJ3MgcmV0dXJuIHR5cGUgb2YgdTY0IGFsbG93cyBmb3IgdGhlIGNhc2Ug d2hlcmUgdGhlIHNjYWxpbmcKKyAqIG9mIHRoZSBmaWVsZCB0YWtlbiBmcm9tIHRoZSAzMi1iaXQg cmVnaXN0ZXIgdmFsdWUgbWlnaHQgY2F1c2UgYSByZXN1bHQgdG8KKyAqIGV4Y2VlZCAzMiBiaXRz LgorICovCitzdGF0aWMgdTY0CitfZmllbGRfcmVhZF9hbmRfc2NhbGUoc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlLCBpOTE1X3JlZ190IHJnYWRyLAorCQkgICAgICB1MzIgZmllbGRfbXNrLCBp bnQgZmllbGRfc2hpZnQsCisJCSAgICAgIGludCBuc2hpZnQsIHVuc2lnbmVkIGludCBzY2FsZV9m YWN0b3IpCit7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJdTMyIHJlZ192YWx1ZTsKKwl1 NjQgc2NhbGVkX3ZhbDsKKworCXdpdGhfaW50ZWxfcnVudGltZV9wbSh1bmNvcmUtPnJwbSwgd2Fr ZXJlZikKKwkJcmVnX3ZhbHVlID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCByZ2Fkcik7CisK KwlyZWdfdmFsdWUgPSAocmVnX3ZhbHVlICYgZmllbGRfbXNrKSA+PiBmaWVsZF9zaGlmdDsKKwlz Y2FsZWRfdmFsID0gbXVsX3UzMl91MzIoc2NhbGVfZmFjdG9yLCByZWdfdmFsdWUpOworCisJLyog U2hpZnQsIHJvdW5kaW5nIHRvIG5lYXJlc3QgKi8KKwlpZiAobnNoaWZ0ID4gMCkKKwkJc2NhbGVk X3ZhbCA9IChzY2FsZWRfdmFsICsgKDEgPDwgKG5zaGlmdCAtIDEpKSkgPj4gbnNoaWZ0OworCisJ cmV0dXJuIHNjYWxlZF92YWw7Cit9CisKK3N0YXRpYyB1NjQKK19maWVsZF9yZWFkNjRfYW5kX3Nj YWxlKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwgaTkxNV9yZWdfdCByZ2FkciwKKwkJCXU2 NCBmaWVsZF9tc2ssIGludCBmaWVsZF9zaGlmdCwKKwkJCWludCBuc2hpZnQsIHVuc2lnbmVkIGlu dCBzY2FsZV9mYWN0b3IpCit7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJdTY0IHJlZ192 YWx1ZTsKKwl1NjQgc2NhbGVkX3ZhbDsKKworCXdpdGhfaW50ZWxfcnVudGltZV9wbSh1bmNvcmUt PnJwbSwgd2FrZXJlZikKKwkJcmVnX3ZhbHVlID0gaW50ZWxfdW5jb3JlX3JlYWQ2NCh1bmNvcmUs IHJnYWRyKTsKKworCXJlZ192YWx1ZSA9IChyZWdfdmFsdWUgJiBmaWVsZF9tc2spID4+IGZpZWxk X3NoaWZ0OworCXNjYWxlZF92YWwgPSBzY2FsZV9mYWN0b3IgKiByZWdfdmFsdWU7CisKKwkvKiBT aGlmdCwgcm91bmRpbmcgdG8gbmVhcmVzdCAqLworCWlmIChuc2hpZnQgPiAwKQorCQlzY2FsZWRf dmFsID0gKHNjYWxlZF92YWwgKyAoMSA8PCAobnNoaWZ0IC0gMSkpKSA+PiBuc2hpZnQ7CisKKwly ZXR1cm4gc2NhbGVkX3ZhbDsKK30KKworc3RhdGljIHZvaWQKK19maWVsZF9zY2FsZV9hbmRfd3Jp dGUoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAorCQkgICAgICAgaTkxNV9yZWdfdCByZ2Fk ciwKKwkJICAgICAgIHUzMiBmaWVsZF9tc2ssIGludCBmaWVsZF9zaGlmdCwKKwkJICAgICAgIGlu dCBuc2hpZnQsIHVuc2lnbmVkIGludCBzY2FsZV9mYWN0b3IsIGxvbmcgbHZhbCkKK3sKKwl1MzIg bnZhbDsKKwl1MzIgYml0c190b19jbGVhcjsKKwl1MzIgYml0c190b19zZXQ7CisKKwkvKiBDb21w dXRhdGlvbiBpbiA2NC1iaXRzIHRvIGF2b2lkIG92ZXJmbG93LiBSb3VuZCB0byBuZWFyZXN0LiAq LworCW52YWwgPSBESVZfUk9VTkRfQ0xPU0VTVF9VTEwoKHU2NClsdmFsIDw8IG5zaGlmdCwgc2Nh bGVfZmFjdG9yKTsKKworCWJpdHNfdG9fY2xlYXIgPSBmaWVsZF9tc2s7CisJYml0c190b19zZXQg PSAobnZhbCA8PCBmaWVsZF9zaGlmdCkgfCBmaWVsZF9tc2s7CisKKwlfbG9ja2VkX3dpdGhfcG1f aW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIHJnYWRyLAorCQkJCQkgYml0c190b19jbGVhciwgYml0 c190b19zZXQpOworfQorCisvKgorICogaTkxNV9lbmVyZ3kxX2lucHV0X3Nob3cgLSBBIGN1c3Rv bSBmdW5jdGlvbiB0byBvYnRhaW4gZW5lcmd5MV9pbnB1dC4KKyAqIFVzZSBhIGN1c3RvbSBmdW5j dGlvbiBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBod21vbiBoZWxwZXJzIGluIG9yZGVyIHRvCisgKiBn dWFyYW50ZWUgNjQtYml0cyBvZiByZXN1bHQgdG8gdXNlci1zcGFjZS4KKyAqIFVuaXRzIGFyZSBt aWNyb2pvdWxlcy4KKyAqCisgKiBUaGUgdW5kZXJseWluZyBoYXJkd2FyZSByZWdpc3RlciBpcyAz Mi1iaXRzIGFuZCBpcyBzdWJqZWN0IHRvIG92ZXJmbG93LgorICogVGhpcyBmdW5jdGlvbiBjb21w ZW5zYXRlcyBmb3Igb3ZlcmZsb3cgb2YgdGhlIDMyLWJpdCByZWdpc3RlciBieSBkZXRlY3RpbmcK KyAqIHdyYXAtYXJvdW5kIGFuZCBpbmNyZW1lbnRpbmcgYW4gb3ZlcmZsb3cgY291bnRlci4KKyAq IFRoaXMgb25seSB3b3JrcyBpZiB0aGUgcmVnaXN0ZXIgaXMgc2FtcGxlZCBvZnRlbiBlbm91Z2gg dG8gYXZvaWQKKyAqIG1pc3NpbmcgYW4gaW5zdGFuY2Ugb2Ygb3ZlcmZsb3cgLSBhY2hpZXZlZCBl aXRoZXIgYnkgcmVwZWF0ZWQKKyAqIHF1ZXJpZXMgdGhyb3VnaCB0aGUgQVBJLCBvciB2aWEgYSBw b3NzaWJsZSB0aW1lciAoZnV0dXJlIC0gVEJEKSB0aGF0CisgKiBlbnN1cmVzIHZhbHVlcyBhcmUg cmVhZCBvZnRlbiBlbm91Z2ggdG8gY2F0Y2ggYWxsIG92ZXJmbG93cy4KKyAqCisgKiBIb3cgbG9u ZyBiZWZvcmUgb3ZlcmZsb3c/ICBGb3IgZXhhbXBsZSwgd2l0aCBhbiBleGFtcGxlIHNjYWxpbmcg Yml0CisgKiBzaGlmdCBvZiAxNCBiaXRzIChzZWUgcmVnaXN0ZXIgKlBBQ0tBR0VfUE9XRVJfU0tV X1VOSVQpIGFuZCBhIHBvd2VyIGRyYXcgb2YKKyAqIDEwMDAgd2F0dHMsIHRoZSAzMi1iaXQgY291 bnRlciB3aWxsIG92ZXJmbG93IGluIGFwcHJveGltYXRlbHkgNC4zNiBtaW51dGVzLgorICoKKyAq IEV4YW1wbGVzOgorICogICAgMSB3YXR0OiAgKDJeMzIgPj4gMTQpIC8gICAgMSBXIC8gKDYwICog NjAgKiAyNCkgc2Vjcy9kYXkgLT4gMyBkYXlzCisgKiAxMDAwIHdhdHRzOiAoMl4zMiA+PiAxNCkg LyAxMDAwIFcgLyA2MCAgICAgICAgICAgICBzZWNzL21pbiAtPiA0LjM2IG1pbnV0ZXMKKyAqLwor c3RhdGljIHNzaXplX3QKK2k5MTVfZW5lcmd5MV9pbnB1dF9zaG93KHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQljaGFyICpidWYpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1 Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOworCXN0cnVjdCBpOTE1X2h3 bW9uICpod21vbiA9IGk5MTUtPmh3bW9uOworCWludCBuc2hpZnQgPSBod21vbi0+c2NsX3NoaWZ0 X2VuZXJneTsKKwlzc2l6ZV90IHJldDsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwl1MzIg cmVnX3ZhbHVlOworCXU2NCB2bG87CisJdTY0IHZoaTsKKworCW11dGV4X2xvY2soJmh3bW9uLT5o d21vbl9sb2NrKTsKKworCXdpdGhfaW50ZWxfcnVudGltZV9wbSh1bmNvcmUtPnJwbSwgd2FrZXJl ZikKKwkJcmVnX3ZhbHVlID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAorCQkJCQkgICAgICBo d21vbi0+cmcucGtnX2VuZXJneV9zdGF0dXMpOworCisJLyoKKwkgKiBUaGUgdTMyIHJlZ2lzdGVy IGNvbmNhdGVuYXRlZCB3aXRoIHRoZSB1MzIgb3ZlcmZsb3cgY291bnRlcgorCSAqIGdpdmVzIGFu IGVmZmVjdGl2ZSBlbmVyZ3kgY291bnRlciBzaXplIG9mIDY0LWJpdHMuICBIb3dldmVyLCB0aGUK KwkgKiBjb21wdXRhdGlvbnMgYmVsb3cgYXJlIGRvbmUgbW9kdWxvIDJeOTYgdG8gYXZvaWQgb3Zl cmZsb3cgZHVyaW5nCisJICogc2NhbGluZyBpbiB0aGUgY29udmVyc2lvbiB0byBtaWNyb2pvdWxl cy4KKwkgKgorCSAqIFRoZSBsb3ctb3JkZXIgNjQtYml0cyBvZiB0aGUgcmVzdWx0aW5nIHF1YW50 aXR5IGFyZSByZXR1cm5lZCB0bworCSAqIHRoZSBjYWxsZXIgaW4gdW5pdHMgb2YgbWljcm9qb3Vs ZXMsIGVuY29kZWQgaW50byBhIGRlY2ltYWwgc3RyaW5nLgorCSAqCisJICogRm9yIGEgcG93ZXIg b2YgMTAwMCB3YXR0cywgNjQgYml0cyBpbiB1bml0cyBvZiBtaWNyb2pvdWxlcyB3aWxsCisJICog b3ZlcmZsb3cgYWZ0ZXIgNTg0IHllYXJzLgorCSAqLworCisJaWYgKGh3bW9uLT5laS5lbmVyZ3lf Y291bnRlcl9wcmV2ID4gcmVnX3ZhbHVlKQorCQlod21vbi0+ZWkuZW5lcmd5X2NvdW50ZXJfb3Zl cmZsb3crKzsKKworCWh3bW9uLT5laS5lbmVyZ3lfY291bnRlcl9wcmV2ID0gcmVnX3ZhbHVlOwor CisJLyoKKwkgKiA2NC1iaXQgdmFyaWFibGVzIHZsbyBhbmQgdmhpIGFyZSB1c2VkIGZvciB0aGUg c2NhbGluZyBwcm9jZXNzLgorCSAqIFRoZSA5Ni1iaXQgY291bnRlciB2YWx1ZSBpcyBjb21wb3Nl ZCBmcm9tIHRoZSB0d28gNjQtYml0IHZhcmlhYmxlcworCSAqIHZoaSBhbmQgdmxvIHRodXNseTog IGNvdW50ZXIgPT0gdmhpIDw8IDMyICsgdmxvIC4KKwkgKiBUaGUgMzItYml0cyBvZiBvdmVybGFw IGJldHdlZW4gdGhlIHR3byB2YXJpYWJsZXMgaXMgY29udmVuaWVudCBmb3IKKwkgKiBoYW5kbGlu ZyBvdmVyZmxvd3Mgb3V0IG9mIHZsby4KKwkgKi8KKworCXZsbyA9IHJlZ192YWx1ZTsKKwl2aGkg PSBod21vbi0+ZWkuZW5lcmd5X2NvdW50ZXJfb3ZlcmZsb3c7CisKKwltdXRleF91bmxvY2soJmh3 bW9uLT5od21vbl9sb2NrKTsKKworCXZsbyA9IFNGX0VORVJHWSAqIHZsbzsKKworCS8qIFByZXBh cmUgdG8gcm91bmQgdG8gbmVhcmVzdCAqLworCWlmIChuc2hpZnQgPiAwKQorCQl2bG8gKz0gMSA8 PCAobnNoaWZ0IC0gMSk7CisKKwkvKgorCSAqIEFueXRoaW5nIGluIHRoZSB1cHBlci0zMiBiaXRz IG9mIHZsbyBnZXRzIGFkZGVkIGludG8gdmhpIGhlcmUsCisJICogYW5kIHRoZW4gY2xlYXJlZCBm cm9tIHZsby4KKwkgKi8KKwl2aGkgPSAoU0ZfRU5FUkdZICogdmhpKSArICh2bG8gPj4gMzIpOwor CXZsbyAmPSAweGZmZmZmZmZmVUxMOworCisJLyoKKwkgKiBBcHBseSB0aGUgcmlnaHQgc2hpZnQu CisJICogLSB2bG8gc2hpZnRlZCBieSBpdHNlbGYuCisJICogLSB2bG8gcmVjZWl2aW5nIHdoYXQn cyBzaGlmdGVkIG91dCBvZiB2aGkuCisJICogLSB2aGkgc2hpZnRlZCBieSBpdHNlbGYKKwkgKi8K Kwl2bG8gPSB2bG8gPj4gbnNoaWZ0OworCXZsbyB8PSAodmhpIDw8ICgzMiAtIG5zaGlmdCkpICYg MHhmZmZmZmZmZlVMTDsKKwl2aGkgPSB2aGkgPj4gbnNoaWZ0OworCisJLyogQ29tYmluZWQgdG8g Z2V0IGEgNjQtYml0IHJlc3VsdCBpbiB2bG8uICovCisJdmxvIHw9ICh2aGkgPDwgMzIpOworCisJ cmV0ID0gc3lzZnNfZW1pdChidWYsICIlbGx1XG4iLCB2bG8pOworCisJcmV0dXJuIHJldDsKK30K Kworc3RhdGljIHNzaXplX3QKK2k5MTVfcG93ZXIxX21heF9lbmFibGVfc2hvdyhzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJICAgIGNoYXIgKmJ1 ZikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShk ZXYpOworCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9IGk5MTUtPmh3bW9uOworCXN0cnVjdCBp bnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7CisJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7CisJc3NpemVfdCByZXQ7CisJdTMyIHJlZ192YWx1ZTsKKwlib29sIGlzX2VuYWJsZWQ7 CisKKwl3aXRoX2ludGVsX3J1bnRpbWVfcG0odW5jb3JlLT5ycG0sIHdha2VyZWYpCisJCXJlZ192 YWx1ZSA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKKwkJCQkJICAgICAgaHdtb24tPnJnLnBr Z19yYXBsX2xpbWl0KTsKKworCWlzX2VuYWJsZWQgPSAhIShyZWdfdmFsdWUgJiBQS0dfUFdSX0xJ TV8xX0VOKTsKKworCXJldCA9IHN5c2ZzX2VtaXQoYnVmLCAiJXVcbiIsIGlzX2VuYWJsZWQpOwor CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHNzaXplX3QKK2k5MTVfcG93ZXIxX21heF9pbnRl cnZhbF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsCisJCQkgICAgICBjaGFyICpidWYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUg PSAmaTkxNS0+dW5jb3JlOworCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9IGk5MTUtPmh3bW9u OworCXNzaXplX3QgcmV0OworCXU2NCB1bGx2YWw7CisKKwl1bGx2YWwgPSBfZmllbGRfcmVhZF9h bmRfc2NhbGUodW5jb3JlLCBod21vbi0+cmcucGtnX3JhcGxfbGltaXQsCisJCQkJICAgICAgIFBL R19QV1JfTElNXzFfVElNRSwKKwkJCQkgICAgICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1fMV9U SU1FKSwKKwkJCQkgICAgICAgaHdtb24tPnNjbF9zaGlmdF90aW1lLCBTRl9USU1FKTsKKworCXJl dCA9IHN5c2ZzX2VtaXQoYnVmLCAiJWxsdVxuIiwgdWxsdmFsKTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBzc2l6ZV90CitpOTE1X3Bvd2VyMV9tYXhfaW50ZXJ2YWxfc3RvcmUoc3RydWN0 IGRldmljZSAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAor CQkJICAgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKKwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdt b24gPSBpOTE1LT5od21vbjsKKwlzc2l6ZV90IHJldDsKKwlsb25nIHZhbDsKKworCXJldCA9IGtz dHJ0b3VsKGJ1ZiwgMCwgJnZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCV9maWVs ZF9zY2FsZV9hbmRfd3JpdGUodW5jb3JlLCBod21vbi0+cmcucGtnX3JhcGxfbGltaXQsCisJCQkg ICAgICAgUEtHX1BXUl9MSU1fMl9USU1FLAorCQkJICAgICAgIEZJRUxEX1NISUZUKFBLR19QV1Jf TElNXzJfVElNRSksCisJCQkgICAgICAgaHdtb24tPnNjbF9zaGlmdF90aW1lLCBTRl9USU1FLCB2 YWwpOworCisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3NpemVfdAoraTkxNV9wb3dlcjFf Y2FwX2VuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsCisJCQkgICAgY2hhciAqYnVmKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlID0gJmk5MTUtPnVuY29yZTsKKwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb24gPSBpOTE1LT5o d21vbjsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwlzc2l6ZV90IHJldDsKKwl1MzIgcmVn X3ZhbHVlOworCWJvb2wgaXNfZW5hYmxlZDsKKworCXdpdGhfaW50ZWxfcnVudGltZV9wbSh1bmNv cmUtPnJwbSwgd2FrZXJlZikKKwkJcmVnX3ZhbHVlID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3Jl LAorCQkJCQkgICAgICBod21vbi0+cmcucGtnX3JhcGxfbGltaXRfdWR3KTsKKworCWlzX2VuYWJs ZWQgPSAhIShyZWdfdmFsdWUgJiBQS0dfUFdSX0xJTV8yX0VOKTsKKworCXJldCA9IHN5c2ZzX2Vt aXQoYnVmLCAiJXVcbiIsIGlzX2VuYWJsZWQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGlj IHNzaXplX3QKK2k5MTVfcG93ZXIxX2NhcF9lbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICAgY29uc3QgY2hhciAqYnVm LCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZf Z2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+ dW5jb3JlOworCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9IGk5MTUtPmh3bW9uOworCXNzaXpl X3QgcmV0OworCXUzMiB2YWw7CisJdTMyIGJpdHNfdG9fY2xlYXI7CisJdTMyIGJpdHNfdG9fc2V0 OworCisJcmV0ID0ga3N0cnRvdTMyKGJ1ZiwgMCwgJnZhbCk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCWJpdHNfdG9fY2xlYXIgPSBQS0dfUFdSX0xJTV8yX0VOOworCWlmICghdmFsKQor CQliaXRzX3RvX3NldCA9IDA7CisJZWxzZQorCQliaXRzX3RvX3NldCA9IFBLR19QV1JfTElNXzJf RU47CisKKwlfbG9ja2VkX3dpdGhfcG1faW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIGh3bW9uLT5y Zy5wa2dfcmFwbF9saW1pdF91ZHcsCisJCQkJCSBiaXRzX3RvX2NsZWFyLCBiaXRzX3RvX3NldCk7 CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90CitpOTE1X3Bvd2VyX2RlZmF1 bHRfbGltaXRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLAorCQkJICAgICAgY2hhciAqYnVmKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9u ID0gaTkxNS0+aHdtb247CisJc3NpemVfdCByZXQ7CisKKwlyZXQgPSBzeXNmc19lbWl0KGJ1Ziwg IiV1XG4iLCBod21vbi0+cG93ZXJfbWF4X2luaXRpYWxfdmFsdWUpOworCisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIHNzaXplX3QKK2k5MTVfcG93ZXJfbWluX2xpbWl0X3Nob3coc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgY2hhciAqYnVm KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZGV2X2dldF9kcnZkYXRhKGRl dik7CisJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKKwlzdHJ1 Y3QgaTkxNV9od21vbiAqaHdtb24gPSBpOTE1LT5od21vbjsKKwlzc2l6ZV90IHJldDsKKwl1MzIg dXZhbDsKKworCS8qCisJICogVGhpcyBpcyBhIDY0LWJpdCByZWdpc3RlciBidXQgdGhlIGluZGl2 aWR1YWwgZmllbGRzIGFyZSB1bmRlciAzMiBiaXRzCisJICogaW4gc2l6ZSBldmVuIGFmdGVyIHNj YWxpbmcuCisJICogVGhlIFVBUEkgc3BlY2lmaWVzIGEgc2l6ZSBvZiAzMiBiaXRzLgorCSAqIFRo ZSBVQVBJIHNwZWNpZmllcyB0aGF0IDAgc2hvdWxkIGJlIHJldHVybmVkIGlmIHVuc3VwcG9ydGVk LgorCSAqIFNvLCB1c2luZyB1MzIgYW5kICV1IGlzIHN1ZmZpY2llbnQuCisJICovCisJaWYgKGk5 MTVfbW1pb19yZWdfdmFsaWQoaHdtb24tPnJnLnBrZ19wb3dlcl9za3UpKQorCQl1dmFsID0gKHUz MilfZmllbGRfcmVhZDY0X2FuZF9zY2FsZSh1bmNvcmUsCisJCQkJCQkgICAgaHdtb24tPnJnLnBr Z19wb3dlcl9za3UsCisJCQkJCQkgICAgUEtHX01JTl9QV1IsCisJCQkJCQkgICAgRklFTERfU0hJ RlQoUEtHX01JTl9QV1IpLAorCQkJCQkJICAgIGh3bW9uLT5zY2xfc2hpZnRfcG93ZXIsCisJCQkJ CQkgICAgU0ZfUE9XRVIpOworCWVsc2UKKwkJdXZhbCA9IDA7CisKKwlyZXQgPSBzeXNmc19lbWl0 KGJ1ZiwgIiV1XG4iLCB1dmFsKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90 CitpOTE1X3Bvd2VyX21heF9saW1pdF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF91 bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7CisJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9u ID0gaTkxNS0+aHdtb247CisJc3NpemVfdCByZXQ7CisJdTMyIHV2YWw7CisKKwkvKgorCSAqIFRo aXMgaXMgYSA2NC1iaXQgcmVnaXN0ZXIgYnV0IHRoZSBpbmRpdmlkdWFsIGZpZWxkcyBhcmUgdW5k ZXIgMzIgYml0cworCSAqIGluIHNpemUgZXZlbiBhZnRlciBzY2FsaW5nLgorCSAqIFRoZSBVQVBJ IHNwZWNpZmllcyBhIHNpemUgb2YgMzIgYml0cy4KKwkgKiBUaGUgVUFQSSBzcGVjaWZpZXMgdGhh dCBVSU5UX01BWCBzaG91bGQgYmUgcmV0dXJuZWQgaWYgdW5zdXBwb3J0ZWQuCisJICogU28sIHVz aW5nIHUzMiBhbmQgJXUgaXMgc3VmZmljaWVudC4KKwkgKi8KKwlpZiAoaTkxNV9tbWlvX3JlZ192 YWxpZChod21vbi0+cmcucGtnX3Bvd2VyX3NrdSkpCisJCXV2YWwgPSAodTMyKV9maWVsZF9yZWFk NjRfYW5kX3NjYWxlKHVuY29yZSwKKwkJCQkJCSAgICBod21vbi0+cmcucGtnX3Bvd2VyX3NrdSwK KwkJCQkJCSAgICBQS0dfTUFYX1BXUiwKKwkJCQkJCSAgICBGSUVMRF9TSElGVChQS0dfTUFYX1BX UiksCisJCQkJCQkgICAgaHdtb24tPnNjbF9zaGlmdF9wb3dlciwKKwkJCQkJCSAgICBTRl9QT1dF Uik7CisJZWxzZQorCQl1dmFsID0gVUlOVF9NQVg7CisKKwlyZXQgPSBzeXNmc19lbWl0KGJ1Ziwg IiV1XG4iLCB1dmFsKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBTRU5TT1JfREVWSUNF X0FUVFIocG93ZXIxX21heF9lbmFibGUsIDA0NDQsCisJCQkgIGk5MTVfcG93ZXIxX21heF9lbmFi bGVfc2hvdywgTlVMTCwgMCk7CitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHBvd2VyMV9tYXhf aW50ZXJ2YWwsIDA2NjQsCisJCQkgIGk5MTVfcG93ZXIxX21heF9pbnRlcnZhbF9zaG93LAorCQkJ ICBpOTE1X3Bvd2VyMV9tYXhfaW50ZXJ2YWxfc3RvcmUsIDApOworc3RhdGljIFNFTlNPUl9ERVZJ Q0VfQVRUUihwb3dlcjFfY2FwX2VuYWJsZSwgMDY2NCwKKwkJCSAgaTkxNV9wb3dlcjFfY2FwX2Vu YWJsZV9zaG93LAorCQkJICBpOTE1X3Bvd2VyMV9jYXBfZW5hYmxlX3N0b3JlLCAwKTsKK3N0YXRp YyBTRU5TT1JfREVWSUNFX0FUVFIocG93ZXJfZGVmYXVsdF9saW1pdCwgMDQ0NCwKKwkJCSAgaTkx NV9wb3dlcl9kZWZhdWx0X2xpbWl0X3Nob3csIE5VTEwsIDApOworc3RhdGljIFNFTlNPUl9ERVZJ Q0VfQVRUUihwb3dlcl9taW5fbGltaXQsIDA0NDQsCisJCQkgIGk5MTVfcG93ZXJfbWluX2xpbWl0 X3Nob3csIE5VTEwsIDApOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwb3dlcl9tYXhfbGlt aXQsIDA0NDQsCisJCQkgIGk5MTVfcG93ZXJfbWF4X2xpbWl0X3Nob3csIE5VTEwsIDApOworc3Rh dGljIFNFTlNPUl9ERVZJQ0VfQVRUUihlbmVyZ3kxX2lucHV0LCAwNDQ0LAorCQkJICBpOTE1X2Vu ZXJneTFfaW5wdXRfc2hvdywgTlVMTCwgMCk7CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpo d21vbl9hdHRyaWJ1dGVzW10gPSB7CisJJnNlbnNvcl9kZXZfYXR0cl9wb3dlcjFfbWF4X2VuYWJs ZS5kZXZfYXR0ci5hdHRyLAorCSZzZW5zb3JfZGV2X2F0dHJfcG93ZXIxX21heF9pbnRlcnZhbC5k ZXZfYXR0ci5hdHRyLAorCSZzZW5zb3JfZGV2X2F0dHJfcG93ZXIxX2NhcF9lbmFibGUuZGV2X2F0 dHIuYXR0ciwKKwkmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyX2RlZmF1bHRfbGltaXQuZGV2X2F0dHIu YXR0ciwKKwkmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyX21pbl9saW1pdC5kZXZfYXR0ci5hdHRyLAor CSZzZW5zb3JfZGV2X2F0dHJfcG93ZXJfbWF4X2xpbWl0LmRldl9hdHRyLmF0dHIsCisJJnNlbnNv cl9kZXZfYXR0cl9lbmVyZ3kxX2lucHV0LmRldl9hdHRyLmF0dHIsCisJTlVMTAorfTsKKworc3Rh dGljIHVtb2RlX3QgaHdtb25fYXR0cmlidXRlc192aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2Jq LAorCQkJCQlzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBpbnQgaW5kZXgpCit7CisJc3RydWN0IGRl dmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb24g PSBpOTE1LT5od21vbjsKKwlpOTE1X3JlZ190IHJnYWRyOworCisJaWYgKGF0dHIgPT0gJnNlbnNv cl9kZXZfYXR0cl9lbmVyZ3kxX2lucHV0LmRldl9hdHRyLmF0dHIpCisJCXJnYWRyID0gaHdtb24t PnJnLnBrZ19lbmVyZ3lfc3RhdHVzOworCWVsc2UgaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0 cl9wb3dlcjFfbWF4X2VuYWJsZS5kZXZfYXR0ci5hdHRyKQorCQlyZ2FkciA9IGh3bW9uLT5yZy5w a2dfcmFwbF9saW1pdDsKKwllbHNlIGlmIChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcG93ZXIx X21heF9pbnRlcnZhbC5kZXZfYXR0ci5hdHRyKQorCQlyZ2FkciA9IGh3bW9uLT5yZy5wa2dfcmFw bF9saW1pdDsKKwllbHNlIGlmIChhdHRyID09ICZzZW5zb3JfZGV2X2F0dHJfcG93ZXIxX2NhcF9l bmFibGUuZGV2X2F0dHIuYXR0cikKKwkJcmdhZHIgPSBod21vbi0+cmcucGtnX3JhcGxfbGltaXRf dWR3OworCWVsc2UgaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wb3dlcl9kZWZhdWx0X2xp bWl0LmRldl9hdHRyLmF0dHIpCisJCXJnYWRyID0gaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0Owor CWVsc2UgaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wb3dlcl9taW5fbGltaXQuZGV2X2F0 dHIuYXR0cikKKwkJcmV0dXJuIGF0dHItPm1vZGU7CisJZWxzZSBpZiAoYXR0ciA9PSAmc2Vuc29y X2Rldl9hdHRyX3Bvd2VyX21heF9saW1pdC5kZXZfYXR0ci5hdHRyKQorCQlyZXR1cm4gYXR0ci0+ bW9kZTsKKwllbHNlCisJCXJldHVybiAwOworCisJaWYgKCFpOTE1X21taW9fcmVnX3ZhbGlkKHJn YWRyKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gYXR0ci0+bW9kZTsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgaHdtb25fYXR0cmdyb3VwID0geworCS5hdHRycyA9 IGh3bW9uX2F0dHJpYnV0ZXMsCisJLmlzX3Zpc2libGUgPSBod21vbl9hdHRyaWJ1dGVzX3Zpc2li bGUsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqaHdtb25fZ3Jv dXBzW10gPSB7CisJJmh3bW9uX2F0dHJncm91cCwKKwlOVUxMCit9OworCisvKgorICogSFdNT04g U0VOU09SIFRZUEUgPSBod21vbl9wb3dlcgorICogIC0gU3VzdGFpbmVkIFBvd2VyIChwb3dlcjFf bWF4KQorICogIC0gQnVyc3QgcG93ZXIgICAgIChwb3dlcjFfY2FwKQorICogIC0gUGVhayBwb3dl ciAgICAgIChwb3dlcjFfY3JpdCkKKyAqLworc3RhdGljIGNvbnN0IHUzMiBpOTE1X2NvbmZpZ19w b3dlcltdID0geworCUhXTU9OX1BfQ0FQIHwgSFdNT05fUF9NQVgsCisJMAorfTsKKworc3RhdGlj IGNvbnN0IHN0cnVjdCBod21vbl9jaGFubmVsX2luZm8gaTkxNV9wb3dlciA9IHsKKwkudHlwZSA9 IGh3bW9uX3Bvd2VyLAorCS5jb25maWcgPSBpOTE1X2NvbmZpZ19wb3dlciwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgaHdtb25fY2hhbm5lbF9pbmZvICppOTE1X2luZm9bXSA9IHsKKwkmaTkx NV9wb3dlciwKKwlOVUxMCit9OworCitzdGF0aWMgdW1vZGVfdAoraTkxNV9wb3dlcl9pc192aXNp YmxlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgYXR0ciwgaW50IGNo YW4pCit7CisJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gaTkxNS0+aHdtb247CisJaTkxNV9y ZWdfdCByZ2FkcjsKKworCXN3aXRjaCAoYXR0cikgeworCWNhc2UgaHdtb25fcG93ZXJfbWF4Ogor CQlyZ2FkciA9IGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdDsKKwkJYnJlYWs7CisJY2FzZSBod21v bl9wb3dlcl9jYXA6CisJCXJnYWRyID0gaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0X3VkdzsKKwkJ YnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKCFpOTE1X21taW9fcmVn X3ZhbGlkKHJnYWRyKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gMDY2NDsKK30KKworc3RhdGlj IGludAoraTkxNV9wb3dlcl9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIg YXR0ciwgaW50IGNoYW4sIGxvbmcgKnZhbCkKK3sKKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUgPSAmaTkxNS0+dW5jb3JlOworCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9IGk5MTUtPmh3 bW9uOworCWludCByZXQgPSAwOworCisJc3dpdGNoIChhdHRyKSB7CisJY2FzZSBod21vbl9wb3dl cl9tYXg6CisJCSp2YWwgPSAobG9uZylfZmllbGRfcmVhZF9hbmRfc2NhbGUodW5jb3JlLAorCQkJ CQkJICAgaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0LAorCQkJCQkJICAgUEtHX1BXUl9MSU1fMSwK KwkJCQkJCSAgIEZJRUxEX1NISUZUKFBLR19QV1JfTElNXzEpLAorCQkJCQkJICAgaHdtb24tPnNj bF9zaGlmdF9wb3dlciwKKwkJCQkJCSAgIFNGX1BPV0VSKTsKKwkJYnJlYWs7CisJY2FzZSBod21v bl9wb3dlcl9jYXA6CisJCSp2YWwgPSAobG9uZylfZmllbGRfcmVhZF9hbmRfc2NhbGUodW5jb3Jl LAorCQkJCQkJICAgaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0X3VkdywKKwkJCQkJCSAgIFBLR19Q V1JfTElNXzIsCisJCQkJCQkgICBGSUVMRF9TSElGVChQS0dfUFdSX0xJTV8yKSwKKwkJCQkJCSAg IGh3bW9uLT5zY2xfc2hpZnRfcG93ZXIsCisJCQkJCQkgICBTRl9QT1dFUik7CisJCWJyZWFrOwor CWRlZmF1bHQ6CisJCXJldCA9IC1FT1BOT1RTVVBQOworCX0KKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBpbnQKK2k5MTVfcG93ZXJfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIHUzMiBhdHRyLCBpbnQgY2hhbiwgbG9uZyB2YWwpCit7CisJc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlID0gJmk5MTUtPnVuY29yZTsKKwlzdHJ1Y3QgaTkxNV9od21vbiAqaHdtb24gPSBp OTE1LT5od21vbjsKKwlpbnQgcmV0ID0gMDsKKworCXN3aXRjaCAoYXR0cikgeworCWNhc2UgaHdt b25fcG93ZXJfbWF4OgorCQlfZmllbGRfc2NhbGVfYW5kX3dyaXRlKHVuY29yZSwKKwkJCQkgICAg ICAgaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0LAorCQkJCSAgICAgICBQS0dfUFdSX0xJTV8xLAor CQkJCSAgICAgICBGSUVMRF9TSElGVChQS0dfUFdSX0xJTV8xKSwKKwkJCQkgICAgICAgaHdtb24t PnNjbF9zaGlmdF9wb3dlciwKKwkJCQkgICAgICAgU0ZfUE9XRVIsIHZhbCk7CisJCWJyZWFrOwor CWNhc2UgaHdtb25fcG93ZXJfY2FwOgorCQlfZmllbGRfc2NhbGVfYW5kX3dyaXRlKHVuY29yZSwK KwkJCQkgICAgICAgaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0X3VkdywKKwkJCQkgICAgICAgUEtH X1BXUl9MSU1fMiwKKwkJCQkgICAgICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1fMiksCisJCQkJ ICAgICAgIGh3bW9uLT5zY2xfc2hpZnRfcG93ZXIsCisJCQkJICAgICAgIFNGX1BPV0VSLCB2YWwp OworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXQgPSAtRU9QTk9UU1VQUDsKKwl9CisKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgdW1vZGVfdAoraTkxNV9pc192aXNpYmxlKGNvbnN0IHZvaWQg KmRhdGEsIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsCisJCXUzMiBhdHRyLCBpbnQgY2hh bm5lbCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqKWRhdGE7CisKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIGh3bW9uX3Bvd2Vy OgorCQlyZXR1cm4gaTkxNV9wb3dlcl9pc192aXNpYmxlKGk5MTUsIGF0dHIsIGNoYW5uZWwpOwor CWRlZmF1bHQ6CisJCXJldHVybiAwOworCX0KK30KKworc3RhdGljIGludAoraTkxNV9yZWFkKHN0 cnVjdCBkZXZpY2UgKmRldiwgZW51bSBod21vbl9zZW5zb3JfdHlwZXMgdHlwZSwgdTMyIGF0dHIs CisJICBpbnQgY2hhbm5lbCwgbG9uZyAqdmFsKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0ga2Rldl90b19pOTE1KGRldik7CisKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIGh3 bW9uX3Bvd2VyOgorCQlyZXR1cm4gaTkxNV9wb3dlcl9yZWFkKGk5MTUsIGF0dHIsIGNoYW5uZWws IHZhbCk7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCX0KK30KKworc3RhdGlj IGludAoraTkxNV93cml0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gaHdtb25fc2Vuc29yX3R5 cGVzIHR5cGUsIHUzMiBhdHRyLAorCSAgIGludCBjaGFubmVsLCBsb25nIHZhbCkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGtkZXZfdG9faTkxNShkZXYpOworCisJc3dpdGNo ICh0eXBlKSB7CisJY2FzZSBod21vbl9wb3dlcjoKKwkJcmV0dXJuIGk5MTVfcG93ZXJfd3JpdGUo aTkxNSwgYXR0ciwgY2hhbm5lbCwgdmFsKTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVPUE5PVFNV UFA7CisJfQorfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGh3bW9uX29wcyBpOTE1X2h3bW9uX29w cyA9IHsKKwkuaXNfdmlzaWJsZSA9IGk5MTVfaXNfdmlzaWJsZSwKKwkucmVhZCA9IGk5MTVfcmVh ZCwKKwkud3JpdGUgPSBpOTE1X3dyaXRlLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBod21v bl9jaGlwX2luZm8gaTkxNV9jaGlwX2luZm8gPSB7CisJLm9wcyA9ICZpOTE1X2h3bW9uX29wcywK KwkuaW5mbyA9IGk5MTVfaW5mbywKK307CisKK3N0YXRpYyB2b2lkCitpOTE1X2h3bW9uX2dldF9w cmVyZWdpc3RyYXRpb25faW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlz dHJ1Y3QgaTkxNV9od21vbiAqaHdtb24gPSBpOTE1LT5od21vbjsKKwlzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwor CXUzMiB2YWxfc2t1X3VuaXQ7CisJX19sZTMyIGxlX3NrdV91bml0OworCisJaWYgKElTX0RHMShp OTE1KSkgeworCQlod21vbi0+cmcucGtnX3Bvd2VyX3NrdV91bml0ID0gUENVX1BBQ0tBR0VfUE9X RVJfU0tVX1VOSVQ7CisJCWh3bW9uLT5yZy5wa2dfcG93ZXJfc2t1ID0gUENVX1BBQ0tBR0VfUE9X RVJfU0tVOworCQlod21vbi0+cmcucGtnX2VuZXJneV9zdGF0dXMgPSBQQ1VfUEFDS0FHRV9FTkVS R1lfU1RBVFVTOworCQlod21vbi0+cmcucGtnX3JhcGxfbGltaXQgPSBQQ1VfUEFDS0FHRV9SQVBM X0xJTUlUOworCQlod21vbi0+cmcucGtnX3JhcGxfbGltaXRfdWR3ID0gUENVX1BBQ0tBR0VfUkFQ TF9MSU1JVF9VRFc7CisJfSBlbHNlIHsKKwkJaHdtb24tPnJnLnBrZ19wb3dlcl9za3VfdW5pdCA9 IElOVkFMSURfTU1JT19SRUc7CisJCWh3bW9uLT5yZy5wa2dfcG93ZXJfc2t1ID0gSU5WQUxJRF9N TUlPX1JFRzsKKwkJaHdtb24tPnJnLnBrZ19lbmVyZ3lfc3RhdHVzID0gSU5WQUxJRF9NTUlPX1JF RzsKKwkJaHdtb24tPnJnLnBrZ19yYXBsX2xpbWl0ID0gSU5WQUxJRF9NTUlPX1JFRzsKKwkJaHdt b24tPnJnLnBrZ19yYXBsX2xpbWl0X3VkdyA9IElOVkFMSURfTU1JT19SRUc7CisJfQorCisJd2Fr ZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KHVuY29yZS0+cnBtKTsKKworCS8qCisJICogVGhl IGNvbnRlbnRzIG9mIHJlZ2lzdGVyIGh3bW9uLT5yZy5wa2dfcG93ZXJfc2t1X3VuaXQgZG8gbm90 IGNoYW5nZSwKKwkgKiBzbyByZWFkIGl0IG9uY2UgYW5kIHN0b3JlIHRoZSBzaGlmdCB2YWx1ZXMu CisJICovCisJaWYgKGk5MTVfbW1pb19yZWdfdmFsaWQoaHdtb24tPnJnLnBrZ19wb3dlcl9za3Vf dW5pdCkpCisJCXZhbF9za3VfdW5pdCA9IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKKwkJCQkJ CSBod21vbi0+cmcucGtnX3Bvd2VyX3NrdV91bml0KTsKKwllbHNlCisJCXZhbF9za3VfdW5pdCA9 IDA7CisKKwlod21vbi0+ZWkuZW5lcmd5X2NvdW50ZXJfb3ZlcmZsb3cgPSAwOworCisJaWYgKGk5 MTVfbW1pb19yZWdfdmFsaWQoaHdtb24tPnJnLnBrZ19lbmVyZ3lfc3RhdHVzKSkKKwkJaHdtb24t PmVpLmVuZXJneV9jb3VudGVyX3ByZXYgPQorCQkJaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBo d21vbi0+cmcucGtnX2VuZXJneV9zdGF0dXMpOworCWVsc2UKKwkJaHdtb24tPmVpLmVuZXJneV9j b3VudGVyX3ByZXYgPSAwOworCisJaW50ZWxfcnVudGltZV9wbV9wdXQodW5jb3JlLT5ycG0sIHdh a2VyZWYpOworCisJbGVfc2t1X3VuaXQgPSBjcHVfdG9fbGUzMih2YWxfc2t1X3VuaXQpOworCWh3 bW9uLT5zY2xfc2hpZnRfcG93ZXIgPSBsZTMyX2dldF9iaXRzKGxlX3NrdV91bml0LCBQS0dfUFdS X1VOSVQpOworCWh3bW9uLT5zY2xfc2hpZnRfZW5lcmd5ID0gbGUzMl9nZXRfYml0cyhsZV9za3Vf dW5pdCwgUEtHX0VORVJHWV9VTklUKTsKKwlod21vbi0+c2NsX3NoaWZ0X3RpbWUgPSBsZTMyX2dl dF9iaXRzKGxlX3NrdV91bml0LCBQS0dfVElNRV9VTklUKTsKKworCS8qCisJICogVGhlcmUgaXMg bm8gZGlyZWN0IHdheSB0byBvYnRhaW4gdGhlIHBvd2VyIGRlZmF1bHRfbGltaXQuCisJICogVGhl IGJlc3Qga25vd24gd29ya2Fyb3VuZCBpcyB0byB1c2UgdGhlIGluaXRpYWwgdmFsdWUgb2YgcG93 ZXIxX21heC4KKwkgKgorCSAqIFRoZSB2YWx1ZSBvZiBwb3dlcjFfbWF4IGlzIHJlc2V0IHRvIHRo ZSBkZWZhdWx0IG9uIHJlYm9vdCwgYnV0IGlzCisJICogbm90IHJlc2V0IGJ5IGEgbW9kdWxlIHVu bG9hZC9sb2FkIHNlcXVlbmNlLiAgVG8gYWxsb3cgcHJvcGVyCisJICogZnVuY3Rpb25pbmcgYWZ0 ZXIgYSBtb2R1bGUgcmVsb2FkLCB0aGUgdmFsdWUgZm9yIHBvd2VyMV9tYXggaXMKKwkgKiByZXN0 b3JlZCB0byBpdHMgb3JpZ2luYWwgdmFsdWUgYXQgbW9kdWxlIHVubG9hZCB0aW1lIGluCisJICog aTkxNV9od21vbl91bnJlZ2lzdGVyKCkuCisJICovCisJaHdtb24tPnBvd2VyX21heF9pbml0aWFs X3ZhbHVlID0KKwkJKHUzMilfZmllbGRfcmVhZF9hbmRfc2NhbGUodW5jb3JlLAorCQkJCQkgICBo d21vbi0+cmcucGtnX3JhcGxfbGltaXQsCisJCQkJCSAgIFBLR19QV1JfTElNXzEsCisJCQkJCSAg IEZJRUxEX1NISUZUKFBLR19QV1JfTElNXzEpLAorCQkJCQkgICBod21vbi0+c2NsX3NoaWZ0X3Bv d2VyLCBTRl9QT1dFUik7Cit9CisKK3ZvaWQgaTkxNV9od21vbl9yZWdpc3RlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpOTE1LT5kcm0u ZGV2OworCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbjsKKwlzdHJ1Y3QgZGV2aWNlICpod21vbl9k ZXY7CisKKwlod21vbiA9IGt6YWxsb2Moc2l6ZW9mKCpod21vbiksIEdGUF9LRVJORUwpOworCWlm ICghaHdtb24pCisJCXJldHVybjsKKworCWk5MTUtPmh3bW9uID0gaHdtb247CisKKwltdXRleF9p bml0KCZod21vbi0+aHdtb25fbG9jayk7CisKKwlpOTE1X2h3bW9uX2dldF9wcmVyZWdpc3RyYXRp b25faW5mbyhpOTE1KTsKKworCWh3bW9uX2RldiA9IGh3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRo X2luZm8oZGV2LCAiaTkxNSIsCisJCQkJCQkgICAgaTkxNSwKKwkJCQkJCSAgICAmaTkxNV9jaGlw X2luZm8sCisJCQkJCQkgICAgaHdtb25fZ3JvdXBzKTsKKworCWlmIChJU19FUlIoaHdtb25fZGV2 KSkgeworCQltdXRleF9kZXN0cm95KCZod21vbi0+aHdtb25fbG9jayk7CisJCWk5MTUtPmh3bW9u ID0gTlVMTDsKKwkJa2ZyZWUoaHdtb24pOworCQlyZXR1cm47CisJfQorCisJaHdtb24tPmRldiA9 IGh3bW9uX2RldjsKK30KKwordm9pZCBpOTE1X2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uOworCisJaHdt b24gPSBmZXRjaF9hbmRfemVybygmaTkxNS0+aHdtb24pOworCWlmICghaHdtb24pCisJCXJldHVy bjsKKworCWlmIChod21vbi0+cG93ZXJfbWF4X2luaXRpYWxfdmFsdWUpIHsKKwkJLyogUmVzdG9y ZSBwb3dlcjFfbWF4LiAqLworCQlfZmllbGRfc2NhbGVfYW5kX3dyaXRlKCZpOTE1LT51bmNvcmUs IGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdCwKKwkJCQkgICAgICAgUEtHX1BXUl9MSU1fMSwKKwkJ CQkgICAgICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1fMSksCisJCQkJICAgICAgIGh3bW9uLT5z Y2xfc2hpZnRfcG93ZXIsCisJCQkJICAgICAgIFNGX1BPV0VSLAorCQkJCSAgICAgICBod21vbi0+ cG93ZXJfbWF4X2luaXRpYWxfdmFsdWUpOworCX0KKworCWlmIChod21vbi0+ZGV2KQorCQlod21v bl9kZXZpY2VfdW5yZWdpc3Rlcihod21vbi0+ZGV2KTsKKworCW11dGV4X2Rlc3Ryb3koJmh3bW9u LT5od21vbl9sb2NrKTsKKworCWtmcmVlKGh3bW9uKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaHdtb24uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdt b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5kNGE1YmI0ZTky NGY0Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9od21vbi5o CkBAIC0wLDAgKzEsNDkgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKwor LyoKKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRl ZiBfX0lOVEVMX0hXTU9OX0hfXworI2RlZmluZSBfX0lOVEVMX0hXTU9OX0hfXworCisjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUgPGxp bnV4L2RldmljZS5oPgorI2luY2x1ZGUgImk5MTVfcmVnLmgiCisKK3N0cnVjdCBkcm1faTkxNV9w cml2YXRlOworCitzdHJ1Y3QgaTkxNV9od21vbl9yZWcgeworCWk5MTVfcmVnX3QgcGtnX3Bvd2Vy X3NrdV91bml0OworCWk5MTVfcmVnX3QgcGtnX3Bvd2VyX3NrdTsKKwlpOTE1X3JlZ190IHBrZ19l bmVyZ3lfc3RhdHVzOworCWk5MTVfcmVnX3QgcGtnX3JhcGxfbGltaXQ7CisJaTkxNV9yZWdfdCBw a2dfcmFwbF9saW1pdF91ZHc7Cit9OworCitzdHJ1Y3QgaTkxNV9lbmVyZ3lfaW5mbyB7CisJdTMy IGVuZXJneV9jb3VudGVyX292ZXJmbG93OworCXUzMiBlbmVyZ3lfY291bnRlcl9wcmV2OworfTsK Kworc3RydWN0IGk5MTVfaHdtb24geworCXN0cnVjdCBkZXZpY2UgKmRldjsKKworCXN0cnVjdCBp OTE1X2VuZXJneV9pbmZvIGVpOworCisJc3RydWN0IG11dGV4IGh3bW9uX2xvY2s7CS8qIGNvdW50 ZXIgb3ZlcmZsb3cgbG9naWMgYW5kIHJtdyAqLworCisJc3RydWN0IGk5MTVfaHdtb25fcmVnIHJn OworCisJdTMyIHBvd2VyX21heF9pbml0aWFsX3ZhbHVlOworCisJaW50IHNjbF9zaGlmdF9wb3dl cjsKKwlpbnQgc2NsX3NoaWZ0X2VuZXJneTsKKwlpbnQgc2NsX3NoaWZ0X3RpbWU7Cit9OworCit2 b2lkIGk5MTVfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwor dm9pZCBpOTE1X2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IDk1NTAyNzc5OWQxZGUuLmY2 MjUxMDA3NGFlNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaApAQCAtNDA4OSw2ICs0MDg5LDU4 IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X21taW9fcmVnX3ZhbGlkKGk5MTVfcmVnX3QgcmVn KQogI2RlZmluZSBCWFRfUlBfU1RBVEVfQ0FQICAgICAgICBfTU1JTygweDEzODE3MCkKICNkZWZp bmUgR0VOOV9SUF9TVEFURV9MSU1JVFMJX01NSU8oMHgxMzgxNDgpCiAKKy8qIERHMSAqLworCisv KiBiYXNlZCBvbiBNQ0hCQVJfTUlSUk9SX0JBU0VfU05CID09IDB4MTQwMDAwICovCisjZGVmaW5l IFBDVV9QQUNLQUdFX1BPV0VSX1NLVV9VTklUCV9NTUlPKE1DSEJBUl9NSVJST1JfQkFTRV9TTkIg KyAweDU5MzgpCisjZGVmaW5lIFBDVV9QQUNLQUdFX0VORVJHWV9TVEFUVVMJX01NSU8oTUNIQkFS X01JUlJPUl9CQVNFX1NOQiArIDB4NTkzYykKKyNkZWZpbmUgUENVX1BBQ0tBR0VfUkFQTF9MSU1J VAkJX01NSU8oTUNIQkFSX01JUlJPUl9CQVNFX1NOQiArIDB4NTlhMCkKKyNkZWZpbmUgUENVX1BB Q0tBR0VfUkFQTF9MSU1JVF9VRFcJX01NSU8oTUNIQkFSX01JUlJPUl9CQVNFX1NOQiArIDB4NTlh NCkKKyNkZWZpbmUgUENVX1BBQ0tBR0VfUE9XRVJfU0tVCQlJTlZBTElEX01NSU9fUkVHCisKKy8q IEZpZWxkcyBmb3IgKl9QQUNLQUdFX1JBUExfTElNSVQ6ICovCisjZGVmaW5lICAgUEtHX1BXUl9M SU1fMQkJCVJFR19HRU5NQVNLKDE0LCAwKQorI2RlZmluZSAgIFBLR19QV1JfTElNXzFfRU4JCVJF R19CSVQoMTUpCisjZGVmaW5lICAgUEtHX1BXUl9MSU1fMV9USU1FCQlSRUdfR0VOTUFTSygyMywg MTcpCisKKy8qCisgKiBGaWVsZHMgZm9yICpfUEFDS0FHRV9SQVBMX0xJTUlUX1VEVzoKKyAqIElu IGRvY3MsIHRoZXNlIGZpZWxkcyBtYXkgYmUgZGVmaW5lZCByZWxhdGl2ZSB0byB0aGUgZW50aXJl IDY0LWJpdAorICogcmVnaXN0ZXIsIGJ1dCBoZXJlIHRoZXkgYXJlIGRlZmluZWQgcmVsYXRpdmUg dG8gdGhlIDMyLWJpdCBib3VuZGFyeS4KKyAqLworI2RlZmluZSAgIFBLR19QV1JfTElNXzIJCQlS RUdfR0VOTUFTSygxNCwgMCkJLy8gNDY6MzIKKyNkZWZpbmUgICBQS0dfUFdSX0xJTV8yX0VOCQlS RUdfQklUKDE1KQkJLy8gNDc6NDcKKyNkZWZpbmUgICBQS0dfUFdSX0xJTV8yX1RJTUUJCVJFR19H RU5NQVNLKDIzLCAxNykJLy8gNTU6NDkKKworLyoKKyAqICpfUEFDS0FHRV9QT1dFUl9TS1VfVU5J VCAtIGZpZWxkcyBzcGVjaWZ5aW5nIHNjYWxpbmcgZm9yIFBDVSBxdWFudGl0aWVzLgorICogLSBQ S0dfUFdSX1VOSVQgLSBQb3dlciBVbml0cyB1c2VkIGZvciBwb3dlciBjb250cm9sIHJlZ2lzdGVy cy4gVGhlCisgKiAgIGFjdHVhbCB1bml0IHZhbHVlIGlzIGNhbGN1bGF0ZWQgYnkgMSBXIC8gUG93 ZXIoMixQS0dfUFdSX1VOSVQpLgorICogLSBQS0dfRU5FUkdZX1VOSVQgLSBFbmVyZ3kgVW5pdHMg dXNlZCBmb3IgcG93ZXIgY29udHJvbCByZWdpc3RlcnMuIFRoZQorICogICBhY3R1YWwgdW5pdCB2 YWx1ZSBpcyBjYWxjdWxhdGVkIGJ5IDEgSiAvIFBvd2VyKDIsUEtHX0VORVJHWV9VTklUKS4KKyAq IC0gUEtHX1RJTUVfVU5JVCAtIFRpbWUgVW5pdHMgdXNlZCBmb3IgcG93ZXIgY29udHJvbCByZWdp c3RlcnMuIFRoZQorICogICBhY3R1YWwgdW5pdCB2YWx1ZSBpcyBjYWxjdWxhdGVkIGJ5IDEgcyAv IFBvd2VyKDIsUEtHX1RJTUVfVU5JVCkuCisgKi8KKyNkZWZpbmUgICBQS0dfUFdSX1VOSVQJCQlS RUdfR0VOTUFTSygzLCAwKQorI2RlZmluZSAgIFBLR19FTkVSR1lfVU5JVAkJUkVHX0dFTk1BU0so MTIsIDgpCisjZGVmaW5lICAgUEtHX1RJTUVfVU5JVAkJCVJFR19HRU5NQVNLKDE5LCAxNikKKwor LyoKKyAqICpfUEFDS0FHRV9QT1dFUl9TS1UgLSBTS1UgcG93ZXIgYW5kIHRpbWluZyBwYXJhbWV0 ZXJzLgorICogVXNlZCBoZXJlaW4gYXMgYSA2NC1iaXQgYml0IHJlZ2lzdGVyLgorICogVGhlc2Ug bWFza3MgYXJlIGRlZmluZWQgdXNpbmcgR0VOTUFTS19VTEwgYXMgUkVHX0dFTk1BU0sgaXMgbGlt aXRlZCB0byB1MzIKKyAqIGFuZCBhcyBHRU5NQVNLIGlzICJsb25nIiBhbmQgdGhlcmVmb3JlIDMy LWJpdHMgb24gYSAzMi1iaXQgc3lzdGVtLgorICogUEtHX1BLR19URFAsIFBLR19NSU5fUFdSLCBh bmQgUEtHX01BWF9QV1IgYXJlIHNjYWxlZCBpbiB0aGUgc2FtZSB3YXkgYXMKKyAqIFBLR19QV1Jf TElNXyosIGFib3ZlLgorICogUEtHX01BWF9XSU4gaGFzIHN1Yi1maWVsZHMgZm9yIHggYW5kIHks IGFuZCBoYXMgdGhlIHZhbHVlOiBpcyAxLnggKiAyXnkuCisgKi8KKyNkZWZpbmUgICBQS0dfUEtH X1REUAkJCUdFTk1BU0tfVUxMKDE0LCAwKQorI2RlZmluZSAgIFBLR19NSU5fUFdSCQkJR0VOTUFT S19VTEwoMzAsIDE2KQorI2RlZmluZSAgIFBLR19NQVhfUFdSCQkJR0VOTUFTS19VTEwoNDYsIDMy KQorI2RlZmluZSAgIFBLR19NQVhfV0lOCQkJR0VOTUFTS19VTEwoNTQsIDQ4KQorI2RlZmluZSAg ICAgUEtHX01BWF9XSU5fWQkJR0VOTUFTS19VTEwoNTQsIDUzKQorI2RlZmluZSAgICAgUEtHX01B WF9XSU5fWAkJR0VOTUFTS19VTEwoNTIsIDQ4KQorCiAvKgogICogTG9naWNhbCBDb250ZXh0IHJl Z3MKICAqLwotLSAKMi4zMi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK