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,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 41946C433ED for ; Sat, 15 May 2021 00:23:22 +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 D86EB61370 for ; Sat, 15 May 2021 00:23:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D86EB61370 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 5B1046F4C4; Sat, 15 May 2021 00:23:21 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 35BDA6F4C2; Sat, 15 May 2021 00:23:20 +0000 (UTC) IronPort-SDR: iZnjq8bQhO/TNVkQVLEJ2f3jId1Hd84+0T7hhUCt8lQttSvhcygyZBvRcwSuzQLGJsgLra9Bpl oxdLmX4d93Gg== X-IronPort-AV: E=McAfee;i="6200,9189,9984"; a="199942446" X-IronPort-AV: E=Sophos;i="5.82,300,1613462400"; d="scan'208";a="199942446" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2021 17:23:19 -0700 IronPort-SDR: PD6X7ziFQQQG3vIwH64YuXGIf5oP7HIh/OrdU1AOlGGvPa7GDKb/yZvlDJDGt7/ypwY7KTm5tr yg5scKNRwQVA== X-IronPort-AV: E=Sophos;i="5.82,300,1613462400"; d="scan'208";a="539189442" Received: from dbstims-dev.fm.intel.com ([10.1.27.177]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 May 2021 17:23:19 -0700 From: Dale B Stimson To: intel-gfx@lists.freedesktop.org Date: Fri, 14 May 2021 17:22:47 -0700 Message-Id: <20210515002247.94609-2-dale.b.stimson@intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210515002247.94609-1-dale.b.stimson@intel.com> References: <20210515002247.94609-1-dale.b.stimson@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v3 1/1] drm/i915/dg1: Add HWMON power 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: dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" QXMgcGFydCBvZiB0aGUgU3lzdGVtIE1hbmFnZW1lbmVudCBJbnRlcmZhY2UgKFNNSSksIHVzZSB0 aGUgSFdNT04Kc3Vic3lzdGVtIHRvIGRpc3BsYXkgcG93ZXIgdXRpbGl6YXRpb24uCgpUaGUgZm9s bG93aW5nIHN0YW5kYXJkIEhXTU9OIGVudHJpZXMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQKKGFu ZCBhcHByb3ByaWF0ZWx5IHNjYWxlZCk6CiAgL3N5cy9jbGFzcy9kcm0vY2FyZDAvZGV2aWNlL2h3 bW9uL2h3bW9uPGk+CgktIGVuZXJneTFfaW5wdXQKCS0gcG93ZXIxX2NhcAoJLSBwb3dlcjFfbWF4 CgpTb21lIG5vbi1zdGFuZGFyZCBIV01PTiBwb3dlciBpbmZvcm1hdGlvbiBpcyBhbHNvIHByb3Zp ZGVkLCBzdWNoIGFzCmVuYWJsZSBiaXRzIGFuZCBpbnRlcnZhbHMuCgpTaWduZWQtb2ZmLWJ5OiBE YWxlIEIgU3RpbXNvbiA8ZGFsZS5iLnN0aW1zb25AaW50ZWwuY29tPgotLS0KIC4uLi9BQkkvdGVz dGluZy9zeXNmcy1kcml2ZXItaW50ZWwtaTkxNS1od21vbiB8IDExNiArKysKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L0tjb25maWcgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2h3bW9uLmMgICAgICAgICAgICAgfCA3OTkgKysrKysrKysrKysrKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2h3bW9uLmggICAgICAgICAgICAgfCAgNDQgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgICAgIHwgIDUzICsrCiA4IGZpbGVz IGNoYW5nZWQsIDEwMjMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50 YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWludGVsLWk5MTUtaHdtb24KIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2h3bW9uLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2h3bW9uLmgKCmRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1pbnRlbC1pOTE1LWh3bW9uIGIv RG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaW50ZWwtaTkxNS1od21vbgpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4yZWU3YzQxM2NhMTkwCi0t LSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXIt aW50ZWwtaTkxNS1od21vbgpAQCAtMCwwICsxLDExNiBAQAorV2hhdDogICAgICAgICAgIC9zeXMv ZGV2aWNlcy8uLi4vaHdtb24vaHdtb248aT4vZW5lcmd5MV9pbnB1dAorRGF0ZTogICAgICAgICAg IEp1bmUgMjAyMQorS2VybmVsVmVyc2lvbjogIDUuMTQKK0NvbnRhY3Q6ICAgICAgICBkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBS Ty4gRW5lcmd5IGlucHV0IG9mIGRldmljZSBpbiBtaWNyb2pvdWxlcy4KKworCQlUaGUgcmV0dXJu ZWQgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBpcyBhbiB1bnNpZ25lZCBpbnRlZ2VyCisJCW51bWJl ciB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gNjQtYml0cy4gIFdhcm5pbmc6IFRoZSBoYXJkd2FyZQor CQlyZWdpc3RlciBpcyAzMi1iaXRzIHdpZGUgYW5kIGNhbiBvdmVyZmxvdyBieSB3cmFwcGluZyBh cm91bmQuCisJCUEgc2luZ2xlIHdyYXAtYXJvdW5kIGJldHdlZW4gY2FsbHMgdG8gcmVhZCB0aGlz IHZhbHVlIGNhbgorCQliZSBkZXRlY3RlZCBhbmQgd2lsbCBiZSBhY2NvdW50ZWQgZm9yIGluIHRo ZSByZXR1cm5lZCB2YWx1ZS4KKwkJQXQgYSBwb3dlciBjb25zdW1wdGlvbiBvZiAxIHdhdHQsIHRo ZSAzMi1iaXQgaGFyZHdhcmUgcmVnaXN0ZXIKKwkJd291bGQgd3JhcC1hcm91bmQgYXBwcm94aW1h dGVseSBldmVyeSAzIGRheXMuCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3VsYXIgSW50 ZWwgaTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2Rldmlj ZXMvLi4uL2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9tYXhfZW5hYmxlCitEYXRlOiAgICAgICAgICAg SnVuZSAyMDIxCitLZXJuZWxWZXJzaW9uOiAgNS4xNAorQ29udGFjdDogICAgICAgIGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIFJX LiAgU3VzdGFpbmVkIHBvd2VyIGxpbWl0IGlzIGVuYWJsZWQgLSB0cnVlIG9yIGZhbHNlLgorCisg ICAgICAgICAgICAgICAgVGhlIHBvd2VyIGNvbnRyb2xsZXIgd2lsbCB0aHJvdHRsZSB0aGUgb3Bl cmF0aW5nIGZyZXF1ZW5jeQorICAgICAgICAgICAgICAgIGlmIHRoZSBwb3dlciBhdmVyYWdlZCBv dmVyIGEgd2luZG93ICh0eXBpY2FsbHkgc2Vjb25kcykKKyAgICAgICAgICAgICAgICBleGNlZWRz IHRoaXMgbGltaXQuCisKKyAgICAgICAgICAgICAgICBTZWUgcG93ZXIxX21heF9lbmFibGUgcG93 ZXIxX21heCBwb3dlcjFfbWF4X2ludGVydmFsCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRp Y3VsYXIgSW50ZWwgaTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAgICAgICAv c3lzL2RldmljZXMvLi4uL2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9tYXgKK0RhdGU6ICAgICAgICAg ICBKdW5lIDIwMjEKK0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAg UlcuICBTdXN0YWluZWQgcG93ZXIgbGltaXQgaW4gbWlsbGl3YXR0cworCisgICAgICAgICAgICAg ICAgVGhlIHBvd2VyIGNvbnRyb2xsZXIgd2lsbCB0aHJvdHRsZSB0aGUgb3BlcmF0aW5nIGZyZXF1 ZW5jeQorICAgICAgICAgICAgICAgIGlmIHRoZSBwb3dlciBhdmVyYWdlZCBvdmVyIGEgd2luZG93 ICh0eXBpY2FsbHkgc2Vjb25kcykKKyAgICAgICAgICAgICAgICBleGNlZWRzIHRoaXMgbGltaXQu CisKKyAgICAgICAgICAgICAgICBTZWUgcG93ZXIxX21heF9lbmFibGUgcG93ZXIxX21heCBwb3dl cjFfbWF4X2ludGVydmFsCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3VsYXIgSW50ZWwg aTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2RldmljZXMv Li4uL2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9tYXhfaW50ZXJ2YWwKK0RhdGU6ICAgICAgICAgICBK dW5lIDIwMjEKK0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgUlcu IFN1c3RhaW5lZCBwb3dlciBsaW1pdCBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgb3ZlcgorICAg ICAgICAgICAgICAgIHdoaWNoIHN1c3RhaW5lZCBwb3dlciBpcyBhdmVyYWdlZC4KKworICAgICAg ICAgICAgICAgIFNlZSBwb3dlcjFfbWF4X2VuYWJsZSBwb3dlcjFfbWF4IHBvd2VyMV9tYXhfaW50 ZXJ2YWwKKworCQlPbmx5IHN1cHBvcnRlZCBmb3IgcGFydGljdWxhciBJbnRlbCBpOTE1IGdyYXBo aWNzIHBsYXRmb3Jtcy4KKworV2hhdDogICAgICAgICAgIC9zeXMvZGV2aWNlcy8uLi4vaHdtb24v aHdtb248aT4vcG93ZXIxX2NhcF9lbmFibGUKK0RhdGU6ICAgICAgICAgICBKdW5lIDIwMjEKK0tl cm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisJCVJXLiAgUG93ZXIgYnVyc3QgbGltaXQgaXMgZW5h YmxlZCAtIHRydWUgb3IgZmFsc2UKKworICAgICAgICAgICAgICAgIFNlZSBwb3dlcjFfY2FwX2Vu YWJsZSBwb3dlcjFfY2FwCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3VsYXIgSW50ZWwg aTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2RldmljZXMv Li4uL2h3bW9uL2h3bW9uPGk+L3Bvd2VyMV9jYXAKK0RhdGU6ICAgICAgICAgICBKdW5lIDIwMjEK K0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisJCVJXLiAgUG93ZXIgYnVyc3QgbGltaXQgaW4g bWlsbGl3YXR0cy4KKworICAgICAgICAgICAgICAgIFNlZSBwb3dlcjFfY2FwX2VuYWJsZSBwb3dl cjFfY2FwCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3VsYXIgSW50ZWwgaTkxNSBncmFw aGljcyBwbGF0Zm9ybXMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2RldmljZXMvLi4uL2h3bW9u L2h3bW9uPGk+L3Bvd2VyX2RlZmF1bHRfbGltaXQKK0RhdGU6ICAgICAgICAgICBKdW5lIDIwMjEK K0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgUk8uICBEZWZhdWx0 IHBvd2VyIGxpbWl0LgorCisJCU9ubHkgc3VwcG9ydGVkIGZvciBwYXJ0aWN1bGFyIEludGVsIGk5 MTUgZ3JhcGhpY3MgcGxhdGZvcm1zLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9kZXZpY2VzLy4u Li9od21vbi9od21vbjxpPi9wb3dlcl9taW5fbGltaXQKK0RhdGU6ICAgICAgICAgICBKdW5lIDIw MjEKK0tlcm5lbFZlcnNpb246ICA1LjE0CitDb250YWN0OiAgICAgICAgZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgUk8uICBEZWZh dWx0IG1pbmltdW0gcG93ZXIgbGltaXQuCisKKwkJT25seSBzdXBwb3J0ZWQgZm9yIHBhcnRpY3Vs YXIgSW50ZWwgaTkxNSBncmFwaGljcyBwbGF0Zm9ybXMuCisKKwkJSWYgbm90IHN1cHBvcnRlZCwg dGhlbiBhdHRyaWJ1dGUgd2lsbCBiZSBhYnNlbnQsIG9yIGF0dGVtcHRlZAorCQlhY2Nlc3Mgd2ls bCBnaXZlIGVycm9yIHJldHVybiBvciByZXR1cm4gdmFsdWUgYXMgMC4KKworV2hhdDogICAgICAg ICAgIC9zeXMvZGV2aWNlcy8uLi4vaHdtb24vaHdtb248aT4vcG93ZXJfbWF4X2xpbWl0CitEYXRl OiAgICAgICAgICAgSnVuZSAyMDIxCitLZXJuZWxWZXJzaW9uOiAgNS4xNAorQ29udGFjdDogICAg ICAgIGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0Rlc2NyaXB0aW9uOgorICAgICAg ICAgICAgICAgIFJPLiAgRGVmYXVsdCBtYXhpbXVtIHBvd2VyIGxpbWl0LgorCisJCU9ubHkgc3Vw cG9ydGVkIGZvciBwYXJ0aWN1bGFyIEludGVsIGk5MTUgZ3JhcGhpY3MgcGxhdGZvcm1zLgorCisJ CUlmIG5vdCBzdXBwb3J0ZWQsIHRoZW4gb25lIG9mOiBhYnNlbnQsIGVycm9yIHJldHVybiBvciB2 YWx1ZQorCQlyZXR1cm5lZCBhcyAwIG9yIFVJTlRfTUFYLgorCisJCUlmIG5vdCBzdXBwb3J0ZWQs IHRoZW4gYXR0cmlidXRlIHdpbGwgYmUgYWJzZW50LCBvciBhdHRlbXB0ZWQKKwkJYWNjZXNzIHdp bGwgZ2l2ZSBlcnJvciByZXR1cm4gb3IgcmV0dXJuIHZhbHVlIGFzIDAgb3IgVUlOVF9NQVguCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvS2NvbmZpZwppbmRleCA2OWY1N2NhOWM2OGQ3Li42MGJkMjdmNjkyMjdkIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L0tjb25maWcKQEAgLTE0LDYgKzE0LDcgQEAgY29uZmlnIERSTV9JOTE1CiAJc2VsZWN0IERS TV9NSVBJX0RTSQogCXNlbGVjdCBSRUxBWQogCXNlbGVjdCBJUlFfV09SSworCXNlbGVjdCBIV01P TgogCSMgaTkxNSBkZXBlbmRzIG9uIEFDUElfVklERU8gd2hlbiBBQ1BJIGlzIGVuYWJsZWQKIAkj IGJ1dCBmb3Igc2VsZWN0IHRvIHdvcmssIG5lZWQgdG8gc2VsZWN0IEFDUElfVklERU8ncyBkZXBl bmRlbmNpZXMsIGljawogCXNlbGVjdCBCQUNLTElHSFRfQ0xBU1NfREVWSUNFIGlmIEFDUEkKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKaW5kZXggZDBkOTM2ZDkxMzdiYy4uZTIxM2UyYjEyOWUyMCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKQEAgLTM3LDYgKzM3LDcgQEAgaTkxNS15ICs9IGk5MTVfZHJ2Lm8gXAog CSAgaTkxNV9jb25maWcubyBcCiAJICBpOTE1X2lycS5vIFwKIAkgIGk5MTVfZ2V0cGFyYW0ubyBc CisJICBpOTE1X2h3bW9uLm8gXAogCSAgaTkxNV9taXRpZ2F0aW9ucy5vIFwKIAkgIGk5MTVfcGFy YW1zLm8gXAogCSAgaTkxNV9wY2kubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCA1MTE4 ZGM4Mzg2YjI3Li41NDMzNWI5MDQ3ZmNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTcw LDYgKzcwLDcgQEAKIAogI2luY2x1ZGUgImk5MTVfZGVidWdmcy5oIgogI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9od21vbi5oIgogI2luY2x1ZGUgImk5MTVfaW9jMzIuaCIK ICNpbmNsdWRlICJpOTE1X2lycS5oIgogI2luY2x1ZGUgImk5MTVfbWVtY3B5LmgiCkBAIC02NzYs NiArNjc3LDggQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWk5MTVfZGVidWdmc19yZWdpc3RlcihkZXZfcHJpdik7 CiAJaTkxNV9zZXR1cF9zeXNmcyhkZXZfcHJpdik7CiAKKwlpOTE1X2h3bW9uX3JlZ2lzdGVyKGRl dl9wcml2KTsKKwogCS8qIERlcGVuZHMgb24gc3lzZnMgaGF2aW5nIGJlZW4gaW5pdGlhbGl6ZWQg Ki8KIAlpOTE1X3BlcmZfcmVnaXN0ZXIoZGV2X3ByaXYpOwogCkBAIC03MTAsNiArNzEzLDkgQEAg c3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJaW50ZWxfZ3RfZHJpdmVyX3VucmVnaXN0ZXIoJmRldl9wcml2LT5ndCk7 CiAKIAlpOTE1X3BlcmZfdW5yZWdpc3RlcihkZXZfcHJpdik7CisKKwlpOTE1X2h3bW9uX3VucmVn aXN0ZXIoZGV2X3ByaXYpOworCiAJaTkxNV9wbXVfdW5yZWdpc3RlcihkZXZfcHJpdik7CiAKIAlp OTE1X3RlYXJkb3duX3N5c2ZzKGRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4 IDYxMzA4Y2UxOTA1OTMuLmRlZGQzYzU5NDNhYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApA QCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgPGRybS9kcm1fY29ubmVjdG9yLmg+CiAjaW5jbHVk ZSA8ZHJtL2k5MTVfbWVpX2hkY3BfaW50ZXJmYWNlLmg+CiAKKyNpbmNsdWRlICJpOTE1X2h3bW9u LmgiCiAjaW5jbHVkZSAiaTkxNV9wYXJhbXMuaCIKICNpbmNsdWRlICJpOTE1X3JlZy5oIgogI2lu Y2x1ZGUgImk5MTVfdXRpbHMuaCIKQEAgLTExMTcsNiArMTExOCw4IEBAIHN0cnVjdCBkcm1faTkx NV9wcml2YXRlIHsKIAogCXN0cnVjdCBpOTE1X3BlcmYgcGVyZjsKIAorCXN0cnVjdCBpOTE1X2h3 bW9uIGh3bW9uOworCiAJLyogQWJzdHJhY3QgdGhlIHN1Ym1pc3Npb24gbWVjaGFuaXNtIChsZWdh Y3kgcmluZ2J1ZmZlciBvciBleGVjbGlzdHMpIGF3YXkgKi8KIAlzdHJ1Y3QgaW50ZWxfZ3QgZ3Q7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaHdtb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAwLi5hNTE5ODVlM2IzOGE1Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9od21vbi5jCkBAIC0wLDAgKzEsNzk5IEBACisvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9y YXRpb24KKyAqLworCisvKgorICogUG93ZXItcmVsYXRlZCBod21vbiBlbnRyaWVzLgorICovCisK KyNpbmNsdWRlIDxsaW51eC9od21vbi5oPgorI2luY2x1ZGUgPGxpbnV4L2h3bW9uLXN5c2ZzLmg+ CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5j bHVkZSAiZ3QvaW50ZWxfZ3QuaCIKKyNpbmNsdWRlICJpOTE1X2h3bW9uLmgiCisKKy8qCisgKiBT Rl8qIC0gc2NhbGUgZmFjdG9ycyBmb3IgcGFydGljdWxhciBxdWFudGl0aWVzLgorICogVGhlIGh3 bW9uIHN0YW5kYXJkIHNheXMgdGhhdCBxdWFudGl0aWVzIG9mIHRoZSBnaXZlbiB0eXBlcyBhcmUg c3BlY2lmaWVkCisgKiBpbiB0aGUgZ2l2ZW4gdW5pdHM6CisgKiAtIHRpbWUgICAtIG1pbGxpc2Vj b25kcworICogLSBwb3dlciAgLSBtaWNyb3dhdHRzCisgKiAtIGVuZXJneSAtIG1pY3Jvam91bGVz CisgKi8KKworI2RlZmluZSBTRl9USU1FCQkgICAxMDAwCisjZGVmaW5lIFNGX1BPV0VSCTEwMDAw MDAKKyNkZWZpbmUgU0ZfRU5FUkdZCTEwMDAwMDAKKworI2RlZmluZSBGSUVMRF9TSElGVChfX21h c2spCQkJCSAgICBcCisJKEJVSUxEX0JVR19PTl9aRVJPKCFfX2J1aWx0aW5fY29uc3RhbnRfcChf X21hc2spKSArIFwKKwkJQlVJTERfQlVHX09OX1pFUk8oKF9fbWFzaykgPT0gMCkgKwkgICAgXAor CQlfX2JmX3NoZihfX21hc2spKQorCitzdGF0aWMgdm9pZAorX2xvY2tlZF93aXRoX3BtX2ludGVs X3VuY29yZV9ybXcoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAorCQkJCSBpOTE1X3JlZ190 IHJlZywgdTMyIGNsZWFyLCB1MzIgc2V0KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gdW5jb3JlLT5pOTE1OworCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9ICZpOTE1LT5o d21vbjsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKworCW11dGV4X2xvY2soJmh3bW9uLT5o d21vbl9sb2NrKTsKKworCXdpdGhfaW50ZWxfcnVudGltZV9wbSh1bmNvcmUtPnJwbSwgd2FrZXJl ZikKKwkJaW50ZWxfdW5jb3JlX3Jtdyh1bmNvcmUsIHJlZywgY2xlYXIsIHNldCk7CisKKwltdXRl eF91bmxvY2soJmh3bW9uLT5od21vbl9sb2NrKTsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24n cyByZXR1cm4gdHlwZSBvZiB1NjQgYWxsb3dzIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgc2NhbGlu ZworICogb2YgdGhlIGZpZWxkIHRha2VuIGZyb20gdGhlIDMyLWJpdCByZWdpc3RlciB2YWx1ZSBt aWdodCBjYXVzZSBhIHJlc3VsdCB0bworICogZXhjZWVkIDMyIGJpdHMuCisgKi8KK3N0YXRpYyB1 NjQKK19maWVsZF9yZWFkX2FuZF9zY2FsZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsIGk5 MTVfcmVnX3QgcmdhZHIsCisJCSAgICAgIHUzMiBmaWVsZF9tc2ssIGludCBmaWVsZF9zaGlmdCwK KwkJICAgICAgaW50IG5zaGlmdCwgdW5zaWduZWQgaW50IHNjYWxlX2ZhY3RvcikKK3sKKwlpbnRl bF93YWtlcmVmX3Qgd2FrZXJlZjsKKwl1MzIgcmVnX3ZhbHVlOworCXU2NCBzY2FsZWRfdmFsOwor CisJd2l0aF9pbnRlbF9ydW50aW1lX3BtKHVuY29yZS0+cnBtLCB3YWtlcmVmKQorCQlyZWdfdmFs dWUgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIHJnYWRyKTsKKworCXJlZ192YWx1ZSA9IChy ZWdfdmFsdWUgJiBmaWVsZF9tc2spID4+IGZpZWxkX3NoaWZ0OworCXNjYWxlZF92YWwgPSBtdWxf dTMyX3UzMihzY2FsZV9mYWN0b3IsIHJlZ192YWx1ZSk7CisKKwkvKiBTaGlmdCwgcm91bmRpbmcg dG8gbmVhcmVzdCAqLworCWlmIChuc2hpZnQgPiAwKQorCQlzY2FsZWRfdmFsID0gKHNjYWxlZF92 YWwgKyAoMSA8PCAobnNoaWZ0IC0gMSkpKSA+PiBuc2hpZnQ7CisKKwlyZXR1cm4gc2NhbGVkX3Zh bDsKK30KKworc3RhdGljIHU2NAorX2ZpZWxkX3JlYWQ2NF9hbmRfc2NhbGUoc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlLCBpOTE1X3JlZ190IHJnYWRyLAorCQkJdTY0IGZpZWxkX21zaywgaW50 IGZpZWxkX3NoaWZ0LAorCQkJaW50IG5zaGlmdCwgdW5zaWduZWQgaW50IHNjYWxlX2ZhY3RvcikK K3sKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwl1NjQgcmVnX3ZhbHVlOworCXU2NCBzY2Fs ZWRfdmFsOworCisJd2l0aF9pbnRlbF9ydW50aW1lX3BtKHVuY29yZS0+cnBtLCB3YWtlcmVmKQor CQlyZWdfdmFsdWUgPSBpbnRlbF91bmNvcmVfcmVhZDY0KHVuY29yZSwgcmdhZHIpOworCisJcmVn X3ZhbHVlID0gKHJlZ192YWx1ZSAmIGZpZWxkX21zaykgPj4gZmllbGRfc2hpZnQ7CisJc2NhbGVk X3ZhbCA9IHNjYWxlX2ZhY3RvciAqIHJlZ192YWx1ZTsKKworCS8qIFNoaWZ0LCByb3VuZGluZyB0 byBuZWFyZXN0ICovCisJaWYgKG5zaGlmdCA+IDApCisJCXNjYWxlZF92YWwgPSAoc2NhbGVkX3Zh bCArICgxIDw8IChuc2hpZnQgLSAxKSkpID4+IG5zaGlmdDsKKworCXJldHVybiBzY2FsZWRfdmFs OworfQorCitzdGF0aWMgdm9pZAorX2ZpZWxkX3NjYWxlX2FuZF93cml0ZShzdHJ1Y3QgaW50ZWxf dW5jb3JlICp1bmNvcmUsCisJCSAgICAgICBpOTE1X3JlZ190IHJnYWRyLAorCQkgICAgICAgdTMy IGZpZWxkX21zaywgaW50IGZpZWxkX3NoaWZ0LAorCQkgICAgICAgaW50IG5zaGlmdCwgdW5zaWdu ZWQgaW50IHNjYWxlX2ZhY3RvciwgbG9uZyBsdmFsKQoreworCXUzMiBudmFsOworCXUzMiBiaXRz X3RvX2NsZWFyOworCXUzMiBiaXRzX3RvX3NldDsKKworCS8qIENvbXB1dGF0aW9uIGluIDY0LWJp dHMgdG8gYXZvaWQgb3ZlcmZsb3cuIFJvdW5kIHRvIG5lYXJlc3QuICovCisJbnZhbCA9IERJVl9S T1VORF9DTE9TRVNUX1VMTCgodTY0KWx2YWwgPDwgbnNoaWZ0LCBzY2FsZV9mYWN0b3IpOworCisJ Yml0c190b19jbGVhciA9IGZpZWxkX21zazsKKwliaXRzX3RvX3NldCA9IChudmFsIDw8IGZpZWxk X3NoaWZ0KSB8IGZpZWxkX21zazsKKworCV9sb2NrZWRfd2l0aF9wbV9pbnRlbF91bmNvcmVfcm13 KHVuY29yZSwgcmdhZHIsCisJCQkJCSBiaXRzX3RvX2NsZWFyLCBiaXRzX3RvX3NldCk7Cit9CisK Ky8qCisgKiBpOTE1X2VuZXJneTFfaW5wdXRfc2hvdyAtIEEgY3VzdG9tIGZ1bmN0aW9uIHRvIG9i dGFpbiBlbmVyZ3kxX2lucHV0LgorICogVXNlIGEgY3VzdG9tIGZ1bmN0aW9uIGluc3RlYWQgb2Yg dGhlIHVzdWFsIGh3bW9uIGhlbHBlcnMgaW4gb3JkZXIgdG8KKyAqIGd1YXJhbnRlZSA2NC1iaXRz IG9mIHJlc3VsdCB0byB1c2VyLXNwYWNlLgorICogVW5pdHMgYXJlIG1pY3Jvam91bGVzLgorICoK KyAqIFRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHJlZ2lzdGVyIGlzIDMyLWJpdHMgYW5kIGlzIHN1 YmplY3QgdG8gb3ZlcmZsb3cuCisgKiBUaGlzIGZ1bmN0aW9uIGNvbXBlbnNhdGVzIGZvciBvdmVy ZmxvdyBvZiB0aGUgMzItYml0IHJlZ2lzdGVyIGJ5IGRldGVjdGluZworICogd3JhcC1hcm91bmQg YW5kIGluY3JlbWVudGluZyBhbiBvdmVyZmxvdyBjb3VudGVyLgorICogVGhpcyBvbmx5IHdvcmtz IGlmIHRoZSByZWdpc3RlciBpcyBzYW1wbGVkIG9mdGVuIGVub3VnaCB0byBhdm9pZAorICogbWlz c2luZyBhbiBpbnN0YW5jZSBvZiBvdmVyZmxvdyAtIGFjaGlldmVkIGVpdGhlciBieSByZXBlYXRl ZAorICogcXVlcmllcyB0aHJvdWdoIHRoZSBBUEksIG9yIHZpYSBhIHBvc3NpYmxlIHRpbWVyIChm dXR1cmUgLSBUQkQpIHRoYXQKKyAqIGVuc3VyZXMgdmFsdWVzIGFyZSByZWFkIG9mdGVuIGVub3Vn aCB0byBjYXRjaCBhbGwgb3ZlcmZsb3dzLgorICoKKyAqIEhvdyBsb25nIGJlZm9yZSBvdmVyZmxv dz8gIEZvciBleGFtcGxlLCB3aXRoIGFuIGV4YW1wbGUgc2NhbGluZyBiaXQKKyAqIHNoaWZ0IG9m IDE0IGJpdHMgKHNlZSByZWdpc3RlciAqUEFDS0FHRV9QT1dFUl9TS1VfVU5JVCkgYW5kIGEgcG93 ZXIgZHJhdyBvZgorICogMTAwMCB3YXR0cywgdGhlIDMyLWJpdCBjb3VudGVyIHdpbGwgb3ZlcmZs b3cgaW4gYXBwcm94aW1hdGVseSA0LjM2IG1pbnV0ZXMuCisgKgorICogRXhhbXBsZXM6CisgKiAg ICAxIHdhdHQ6ICAoMl4zMiA+PiAxNCkgLyAgICAxIFcgLyAoNjAgKiA2MCAqIDI0KSBzZWNzL2Rh eSAtPiAzIGRheXMKKyAqIDEwMDAgd2F0dHM6ICgyXjMyID4+IDE0KSAvIDEwMDAgVyAvIDYwICAg ICAgICAgICAgIHNlY3MvbWluIC0+IDQuMzYgbWludXRlcworICovCitzdGF0aWMgc3NpemVfdAor aTkxNV9lbmVyZ3kxX2lucHV0X3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwKKwkJCWNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSA9ICZpOTE1LT51bmNvcmU7CisJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5 MTUtPmh3bW9uOworCWludCBuc2hpZnQgPSBod21vbi0+c2NsX3NoaWZ0X2VuZXJneTsKKwlzc2l6 ZV90IHJldDsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKKwl1MzIgcmVnX3ZhbHVlOworCXU2 NCB2bG87CisJdTY0IHZoaTsKKworCW11dGV4X2xvY2soJmh3bW9uLT5od21vbl9sb2NrKTsKKwor CXdpdGhfaW50ZWxfcnVudGltZV9wbSh1bmNvcmUtPnJwbSwgd2FrZXJlZikKKwkJcmVnX3ZhbHVl ID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAorCQkJCQkgICAgICBod21vbi0+cmcucmVnX2Vu ZXJneV9zdGF0dXMpOworCisJLyoKKwkgKiBUaGUgdTMyIHJlZ2lzdGVyIGNvbmNhdGVuYXRlZCB3 aXRoIHRoZSB1MzIgb3ZlcmZsb3cgY291bnRlcgorCSAqIGdpdmVzIGFuIGVmZmVjdGl2ZSBlbmVy Z3kgY291bnRlciBzaXplIG9mIDY0LWJpdHMuICBIb3dldmVyLCB0aGUKKwkgKiBjb21wdXRhdGlv bnMgYmVsb3cgYXJlIGRvbmUgbW9kdWxvIDJeOTYgdG8gYXZvaWQgb3ZlcmZsb3cgZHVyaW5nCisJ ICogc2NhbGluZyBpbiB0aGUgY29udmVyc2lvbiB0byBtaWNyb2pvdWxlcy4KKwkgKgorCSAqIFRo ZSBsb3ctb3JkZXIgNjQtYml0cyBvZiB0aGUgcmVzdWx0aW5nIHF1YW50aXR5IGFyZSByZXR1cm5l ZCB0bworCSAqIHRoZSBjYWxsZXIgaW4gdW5pdHMgb2YgbWljcm9qb3VsZXMsIGVuY29kZWQgaW50 byBhIGRlY2ltYWwgc3RyaW5nLgorCSAqCisJICogRm9yIGEgcG93ZXIgb2YgMTAwMCB3YXR0cywg NjQgYml0cyBpbiB1bml0cyBvZiBtaWNyb2pvdWxlcyB3aWxsCisJICogb3ZlcmZsb3cgYWZ0ZXIg NTg0IHllYXJzLgorCSAqLworCisJaWYgKGh3bW9uLT5lbmVyZ3lfY291bnRlcl9wcmV2ID4gcmVn X3ZhbHVlKQorCQlod21vbi0+ZW5lcmd5X2NvdW50ZXJfb3ZlcmZsb3crKzsKKworCWh3bW9uLT5l bmVyZ3lfY291bnRlcl9wcmV2ID0gcmVnX3ZhbHVlOworCisJLyoKKwkgKiA2NC1iaXQgdmFyaWFi bGVzIHZsbyBhbmQgdmhpIGFyZSB1c2VkIGZvciB0aGUgc2NhbGluZyBwcm9jZXNzLgorCSAqIFRo ZSA5Ni1iaXQgY291bnRlciB2YWx1ZSBpcyBjb21wb3NlZCBmcm9tIHRoZSB0d28gNjQtYml0IHZh cmlhYmxlcworCSAqIHZoaSBhbmQgdmxvIHRodXNseTogIGNvdW50ZXIgPT0gdmhpIDw8IDMyICsg dmxvIC4KKwkgKiBUaGUgMzItYml0cyBvZiBvdmVybGFwIGJldHdlZW4gdGhlIHR3byB2YXJpYWJs ZXMgaXMgY29udmVuaWVudCBmb3IKKwkgKiBoYW5kbGluZyBvdmVyZmxvd3Mgb3V0IG9mIHZsby4K KwkgKi8KKworCXZsbyA9IHJlZ192YWx1ZTsKKwl2aGkgPSBod21vbi0+ZW5lcmd5X2NvdW50ZXJf b3ZlcmZsb3c7CisKKwltdXRleF91bmxvY2soJmh3bW9uLT5od21vbl9sb2NrKTsKKworCXZsbyA9 IFNGX0VORVJHWSAqIHZsbzsKKworCS8qIFByZXBhcmUgdG8gcm91bmQgdG8gbmVhcmVzdCAqLwor CWlmIChuc2hpZnQgPiAwKQorCQl2bG8gKz0gMSA8PCAobnNoaWZ0IC0gMSk7CisKKwkvKgorCSAq IEFueXRoaW5nIGluIHRoZSB1cHBlci0zMiBiaXRzIG9mIHZsbyBnZXRzIGFkZGVkIGludG8gdmhp IGhlcmUsCisJICogYW5kIHRoZW4gY2xlYXJlZCBmcm9tIHZsby4KKwkgKi8KKwl2aGkgPSAoU0Zf RU5FUkdZICogdmhpKSArICh2bG8gPj4gMzIpOworCXZsbyAmPSAweGZmZmZmZmZmVUxMOworCisJ LyoKKwkgKiBBcHBseSB0aGUgcmlnaHQgc2hpZnQuCisJICogLSB2bG8gc2hpZnRlZCBieSBpdHNl bGYuCisJICogLSB2bG8gcmVjZWl2aW5nIHdoYXQncyBzaGlmdGVkIG91dCBvZiB2aGkuCisJICog LSB2aGkgc2hpZnRlZCBieSBpdHNlbGYKKwkgKi8KKwl2bG8gPSB2bG8gPj4gbnNoaWZ0OworCXZs byB8PSAodmhpIDw8ICgzMiAtIG5zaGlmdCkpICYgMHhmZmZmZmZmZlVMTDsKKwl2aGkgPSB2aGkg Pj4gbnNoaWZ0OworCisJLyogQ29tYmluZWQgdG8gZ2V0IGEgNjQtYml0IHJlc3VsdCBpbiB2bG8u ICovCisJdmxvIHw9ICh2aGkgPDwgMzIpOworCisJcmV0ID0gc3lzZnNfZW1pdChidWYsICIlbGx1 XG4iLCB2bG8pOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHNzaXplX3QKK2k5MTVfcG93 ZXIxX21heF9lbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLAorCQkJICAgIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF91bmNvcmUg KnVuY29yZSA9ICZpOTE1LT51bmNvcmU7CisJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CisJc3Np emVfdCByZXQ7CisJdTMyIHJlZ192YWx1ZTsKKwlib29sIGlzX2VuYWJsZWQ7CisKKwl3aXRoX2lu dGVsX3J1bnRpbWVfcG0odW5jb3JlLT5ycG0sIHdha2VyZWYpCisJCXJlZ192YWx1ZSA9IGludGVs X3VuY29yZV9yZWFkKHVuY29yZSwKKwkJCQkJICAgICAgaTkxNS0+aHdtb24ucmcucGtnX3JhcGxf bGltaXQpOworCisJaXNfZW5hYmxlZCA9ICEhKHJlZ192YWx1ZSAmIFBLR19QV1JfTElNXzFfRU4p OworCisJcmV0ID0gc3lzZnNfZW1pdChidWYsICIldVxuIiwgaXNfZW5hYmxlZCk7CisKKwlyZXR1 cm4gcmV0OworfQorCitzdGF0aWMgc3NpemVfdAoraTkxNV9wb3dlcjFfbWF4X2VuYWJsZV9zdG9y ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJ ICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF91bmNv cmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7CisJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0g Jmk5MTUtPmh3bW9uOworCXNzaXplX3QgcmV0OworCXUzMiB2YWw7CisJdTMyIGJpdHNfdG9fY2xl YXI7CisJdTMyIGJpdHNfdG9fc2V0OworCisJcmV0ID0ga3N0cnRvdTMyKGJ1ZiwgMCwgJnZhbCk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWJpdHNfdG9fY2xlYXIgPSBQS0dfUFdSX0xJ TV8xX0VOOworCWlmICghdmFsKQorCQliaXRzX3RvX3NldCA9IDA7CisJZWxzZQorCQliaXRzX3Rv X3NldCA9IFBLR19QV1JfTElNXzFfRU47CisKKwlfbG9ja2VkX3dpdGhfcG1faW50ZWxfdW5jb3Jl X3Jtdyh1bmNvcmUsIGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdCwKKwkJCQkJIGJpdHNfdG9fY2xl YXIsIGJpdHNfdG9fc2V0KTsKKworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIHNzaXplX3QK K2k5MTVfcG93ZXIxX21heF9pbnRlcnZhbF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICAgICBjaGFyICpidWYpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOworCXN0cnVjdCBpOTE1X2h3bW9u ICpod21vbiA9ICZpOTE1LT5od21vbjsKKwlzc2l6ZV90IHJldDsKKwl1NjQgdWxsdmFsOworCisJ dWxsdmFsID0gX2ZpZWxkX3JlYWRfYW5kX3NjYWxlKHVuY29yZSwgaHdtb24tPnJnLnBrZ19yYXBs X2xpbWl0LAorCQkJCSAgICAgICBQS0dfUFdSX0xJTV8xX1RJTUUsCisJCQkJICAgICAgIEZJRUxE X1NISUZUKFBLR19QV1JfTElNXzFfVElNRSksCisJCQkJICAgICAgIGh3bW9uLT5zY2xfc2hpZnRf dGltZSwgU0ZfVElNRSk7CisKKwlyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgIiVsbHVcbiIsIHVsbHZh bCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3NpemVfdAoraTkxNV9wb3dlcjFfbWF4 X2ludGVydmFsX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCSAgICAgICBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBj b3VudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOworCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7CisJ c3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5MTUtPmh3bW9uOworCXNzaXplX3QgcmV0Owor CWxvbmcgdmFsOworCisJcmV0ID0ga3N0cnRvdWwoYnVmLCAwLCAmdmFsKTsKKwlpZiAocmV0KQor CQlyZXR1cm4gcmV0OworCisJX2ZpZWxkX3NjYWxlX2FuZF93cml0ZSh1bmNvcmUsIGh3bW9uLT5y Zy5wa2dfcmFwbF9saW1pdCwKKwkJCSAgICAgICBQS0dfUFdSX0xJTV8yX1RJTUUsCisJCQkgICAg ICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1fMl9USU1FKSwKKwkJCSAgICAgICBod21vbi0+c2Ns X3NoaWZ0X3RpbWUsIFNGX1RJTUUsIHZhbCk7CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRp YyBzc2l6ZV90CitpOTE1X3Bvd2VyMV9jYXBfZW5hYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICBjaGFyICpidWYpCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOworCXN0cnVjdCBpOTE1 X2h3bW9uICpod21vbiA9ICZpOTE1LT5od21vbjsKKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsK Kwlzc2l6ZV90IHJldDsKKwl1MzIgcmVnX3ZhbHVlOworCWJvb2wgaXNfZW5hYmxlZDsKKworCXdp dGhfaW50ZWxfcnVudGltZV9wbSh1bmNvcmUtPnJwbSwgd2FrZXJlZikKKwkJcmVnX3ZhbHVlID0g aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAorCQkJCQkgICAgICBod21vbi0+cmcucGtnX3JhcGxf bGltaXRfdWR3KTsKKworCWlzX2VuYWJsZWQgPSAhIShyZWdfdmFsdWUgJiBQS0dfUFdSX0xJTV8y X0VOKTsKKworCXJldCA9IHN5c2ZzX2VtaXQoYnVmLCAiJXVcbiIsIGlzX2VuYWJsZWQpOworCisJ cmV0dXJuIHJldDsKK30KKworc3RhdGljIHNzaXplX3QKK2k5MTVfcG93ZXIxX2NhcF9lbmFibGVf c3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwK KwkJCSAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxf dW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOworCXN0cnVjdCBpOTE1X2h3bW9uICpod21v biA9ICZpOTE1LT5od21vbjsKKwlzc2l6ZV90IHJldDsKKwl1MzIgdmFsOworCXUzMiBiaXRzX3Rv X2NsZWFyOworCXUzMiBiaXRzX3RvX3NldDsKKworCXJldCA9IGtzdHJ0b3UzMihidWYsIDAsICZ2 YWwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwliaXRzX3RvX2NsZWFyID0gUEtHX1BX Ul9MSU1fMl9FTjsKKwlpZiAoIXZhbCkKKwkJYml0c190b19zZXQgPSAwOworCWVsc2UKKwkJYml0 c190b19zZXQgPSBQS0dfUFdSX0xJTV8yX0VOOworCisJX2xvY2tlZF93aXRoX3BtX2ludGVsX3Vu Y29yZV9ybXcodW5jb3JlLCBod21vbi0+cmcucGtnX3JhcGxfbGltaXRfdWR3LAorCQkJCQkgYml0 c190b19jbGVhciwgYml0c190b19zZXQpOworCisJcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMg c3NpemVfdAoraTkxNV9wb3dlcl9kZWZhdWx0X2xpbWl0X3Nob3coc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSAgICAgIGNoYXIgKmJ1ZikKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwor CXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9ICZpOTE1LT5od21vbjsKKwlzc2l6ZV90IHJldDsK KworCXJldCA9IHN5c2ZzX2VtaXQoYnVmLCAiJXVcbiIsIGh3bW9uLT5wb3dlcl9tYXhfaW5pdGlh bF92YWx1ZSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3NpemVfdAoraTkxNV9wb3dl cl9taW5fbGltaXRfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLAorCQkJICBjaGFyICpidWYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUgPSAmaTkxNS0+dW5jb3JlOworCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9ICZpOTE1LT5o d21vbjsKKwlzc2l6ZV90IHJldDsKKwl1MzIgdXZhbDsKKworCS8qCisJICogVGhpcyBpcyBhIDY0 LWJpdCByZWdpc3RlciBidXQgdGhlIGluZGl2aWR1YWwgZmllbGRzIGFyZSB1bmRlciAzMiBiaXRz CisJICogaW4gc2l6ZSBldmVuIGFmdGVyIHNjYWxpbmcuCisJICogVGhlIFVBUEkgc3BlY2lmaWVz IGEgc2l6ZSBvZiAzMiBiaXRzLgorCSAqIFRoZSBVQVBJIHNwZWNpZmllcyB0aGF0IDAgc2hvdWxk IGJlIHJldHVybmVkIGlmIHVuc3VwcG9ydGVkLgorCSAqIFNvLCB1c2luZyB1MzIgYW5kICV1IGlz IHN1ZmZpY2llbnQuCisJICovCisJaWYgKGk5MTVfbW1pb19yZWdfdmFsaWQoaHdtb24tPnJnLnBr Z19wb3dlcl9za3UpKQorCQl1dmFsID0gKHUzMilfZmllbGRfcmVhZDY0X2FuZF9zY2FsZSh1bmNv cmUsCisJCQkJCQkgICAgaHdtb24tPnJnLnBrZ19wb3dlcl9za3UsCisJCQkJCQkgICAgUEtHX01J Tl9QV1IsCisJCQkJCQkgICAgRklFTERfU0hJRlQoUEtHX01JTl9QV1IpLAorCQkJCQkJICAgIGh3 bW9uLT5zY2xfc2hpZnRfcG93ZXIsCisJCQkJCQkgICAgU0ZfUE9XRVIpOworCWVsc2UKKwkJdXZh bCA9IDA7CisKKwlyZXQgPSBzeXNmc19lbWl0KGJ1ZiwgIiV1XG4iLCB1dmFsKTsKKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90CitpOTE1X3Bvd2VyX21heF9saW1pdF9zaG93KHN0 cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgIGNo YXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOworCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7 CisJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5MTUtPmh3bW9uOworCXNzaXplX3QgcmV0 OworCXUzMiB1dmFsOworCisJLyoKKwkgKiBUaGlzIGlzIGEgNjQtYml0IHJlZ2lzdGVyIGJ1dCB0 aGUgaW5kaXZpZHVhbCBmaWVsZHMgYXJlIHVuZGVyIDMyIGJpdHMKKwkgKiBpbiBzaXplIGV2ZW4g YWZ0ZXIgc2NhbGluZy4KKwkgKiBUaGUgVUFQSSBzcGVjaWZpZXMgYSBzaXplIG9mIDMyIGJpdHMu CisJICogVGhlIFVBUEkgc3BlY2lmaWVzIHRoYXQgVUlOVF9NQVggc2hvdWxkIGJlIHJldHVybmVk IGlmIHVuc3VwcG9ydGVkLgorCSAqIFNvLCB1c2luZyB1MzIgYW5kICV1IGlzIHN1ZmZpY2llbnQu CisJICovCisJaWYgKGk5MTVfbW1pb19yZWdfdmFsaWQoaHdtb24tPnJnLnBrZ19wb3dlcl9za3Up KQorCQl1dmFsID0gKHUzMilfZmllbGRfcmVhZDY0X2FuZF9zY2FsZSh1bmNvcmUsCisJCQkJCQkg ICAgaHdtb24tPnJnLnBrZ19wb3dlcl9za3UsCisJCQkJCQkgICAgUEtHX01BWF9QV1IsCisJCQkJ CQkgICAgRklFTERfU0hJRlQoUEtHX01BWF9QV1IpLAorCQkJCQkJICAgIGh3bW9uLT5zY2xfc2hp ZnRfcG93ZXIsCisJCQkJCQkgICAgU0ZfUE9XRVIpOworCWVsc2UKKwkJdXZhbCA9IFVJTlRfTUFY OworCisJcmV0ID0gc3lzZnNfZW1pdChidWYsICIldVxuIiwgdXZhbCk7CisKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgU0VOU09SX0RFVklDRV9BVFRSKHBvd2VyMV9tYXhfZW5hYmxlLCAwNjY0 LAorCQkJICBpOTE1X3Bvd2VyMV9tYXhfZW5hYmxlX3Nob3csCisJCQkgIGk5MTVfcG93ZXIxX21h eF9lbmFibGVfc3RvcmUsIDApOworc3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUihwb3dlcjFfbWF4 X2ludGVydmFsLCAwNjY0LAorCQkJICBpOTE1X3Bvd2VyMV9tYXhfaW50ZXJ2YWxfc2hvdywKKwkJ CSAgaTkxNV9wb3dlcjFfbWF4X2ludGVydmFsX3N0b3JlLCAwKTsKK3N0YXRpYyBTRU5TT1JfREVW SUNFX0FUVFIocG93ZXIxX2NhcF9lbmFibGUsIDA2NjQsCisJCQkgIGk5MTVfcG93ZXIxX2NhcF9l bmFibGVfc2hvdywKKwkJCSAgaTkxNV9wb3dlcjFfY2FwX2VuYWJsZV9zdG9yZSwgMCk7CitzdGF0 aWMgU0VOU09SX0RFVklDRV9BVFRSKHBvd2VyX2RlZmF1bHRfbGltaXQsIDA0NDQsCisJCQkgIGk5 MTVfcG93ZXJfZGVmYXVsdF9saW1pdF9zaG93LCBOVUxMLCAwKTsKK3N0YXRpYyBTRU5TT1JfREVW SUNFX0FUVFIocG93ZXJfbWluX2xpbWl0LCAwNDQ0LAorCQkJICBpOTE1X3Bvd2VyX21pbl9saW1p dF9zaG93LCBOVUxMLCAwKTsKK3N0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIocG93ZXJfbWF4X2xp bWl0LCAwNDQ0LAorCQkJICBpOTE1X3Bvd2VyX21heF9saW1pdF9zaG93LCBOVUxMLCAwKTsKK3N0 YXRpYyBTRU5TT1JfREVWSUNFX0FUVFIoZW5lcmd5MV9pbnB1dCwgMDQ0NCwKKwkJCSAgaTkxNV9l bmVyZ3kxX2lucHV0X3Nob3csIE5VTEwsIDApOworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAq aHdtb25fYXR0cmlidXRlc1tdID0geworCSZzZW5zb3JfZGV2X2F0dHJfcG93ZXIxX21heF9lbmFi bGUuZGV2X2F0dHIuYXR0ciwKKwkmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyMV9tYXhfaW50ZXJ2YWwu ZGV2X2F0dHIuYXR0ciwKKwkmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyMV9jYXBfZW5hYmxlLmRldl9h dHRyLmF0dHIsCisJJnNlbnNvcl9kZXZfYXR0cl9wb3dlcl9kZWZhdWx0X2xpbWl0LmRldl9hdHRy LmF0dHIsCisJJnNlbnNvcl9kZXZfYXR0cl9wb3dlcl9taW5fbGltaXQuZGV2X2F0dHIuYXR0ciwK Kwkmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyX21heF9saW1pdC5kZXZfYXR0ci5hdHRyLAorCSZzZW5z b3JfZGV2X2F0dHJfZW5lcmd5MV9pbnB1dC5kZXZfYXR0ci5hdHRyLAorCU5VTEwKK307CisKK3N0 YXRpYyB1bW9kZV90IGh3bW9uX2F0dHJpYnV0ZXNfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29i aiwKKwkJCQkJc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgaW50IGluZGV4KQoreworCXN0cnVjdCBk ZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGk5MTVfaHdtb24gKmh3bW9u ID0gJmk5MTUtPmh3bW9uOworCWk5MTVfcmVnX3QgcmdhZHI7CisKKwlpZiAoYXR0ciA9PSAmc2Vu c29yX2Rldl9hdHRyX2VuZXJneTFfaW5wdXQuZGV2X2F0dHIuYXR0cikKKwkJcmdhZHIgPSBod21v bi0+cmcucmVnX2VuZXJneV9zdGF0dXM7CisJZWxzZSBpZiAoYXR0ciA9PSAmc2Vuc29yX2Rldl9h dHRyX3Bvd2VyMV9tYXhfZW5hYmxlLmRldl9hdHRyLmF0dHIpCisJCXJnYWRyID0gaHdtb24tPnJn LnBrZ19yYXBsX2xpbWl0OworCWVsc2UgaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wb3dl cjFfbWF4X2ludGVydmFsLmRldl9hdHRyLmF0dHIpCisJCXJnYWRyID0gaHdtb24tPnJnLnBrZ19y YXBsX2xpbWl0OworCWVsc2UgaWYgKGF0dHIgPT0gJnNlbnNvcl9kZXZfYXR0cl9wb3dlcjFfY2Fw X2VuYWJsZS5kZXZfYXR0ci5hdHRyKQorCQlyZ2FkciA9IGh3bW9uLT5yZy5wa2dfcmFwbF9saW1p dF91ZHc7CisJZWxzZSBpZiAoYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyX2RlZmF1bHRf bGltaXQuZGV2X2F0dHIuYXR0cikKKwkJcmdhZHIgPSBod21vbi0+cmcucGtnX3JhcGxfbGltaXQ7 CisJZWxzZSBpZiAoYXR0ciA9PSAmc2Vuc29yX2Rldl9hdHRyX3Bvd2VyX21pbl9saW1pdC5kZXZf YXR0ci5hdHRyKQorCQlyZXR1cm4gYXR0ci0+bW9kZTsKKwllbHNlIGlmIChhdHRyID09ICZzZW5z b3JfZGV2X2F0dHJfcG93ZXJfbWF4X2xpbWl0LmRldl9hdHRyLmF0dHIpCisJCXJldHVybiBhdHRy LT5tb2RlOworCWVsc2UKKwkJcmV0dXJuIDA7CisKKwlpZiAoIWk5MTVfbW1pb19yZWdfdmFsaWQo cmdhZHIpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBhdHRyLT5tb2RlOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBod21vbl9hdHRyZ3JvdXAgPSB7CisJLmF0dHJz ID0gaHdtb25fYXR0cmlidXRlcywKKwkuaXNfdmlzaWJsZSA9IGh3bW9uX2F0dHJpYnV0ZXNfdmlz aWJsZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpod21vbl9n cm91cHNbXSA9IHsKKwkmaHdtb25fYXR0cmdyb3VwLAorCU5VTEwKK307CisKKy8qCisgKiBIV01P TiBTRU5TT1IgVFlQRSA9IGh3bW9uX3Bvd2VyCisgKiAgLSBTdXN0YWluZWQgUG93ZXIgKHBvd2Vy MV9tYXgpCisgKiAgLSBCdXJzdCBwb3dlciAgICAgKHBvd2VyMV9jYXApCisgKiAgLSBQZWFrIHBv d2VyICAgICAgKHBvd2VyMV9jcml0KQorICovCitzdGF0aWMgY29uc3QgdTMyIGk5MTVfY29uZmln X3Bvd2VyW10gPSB7CisJSFdNT05fUF9DQVAgfCBIV01PTl9QX01BWCwKKwkwCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IGh3bW9uX2NoYW5uZWxfaW5mbyBpOTE1X3Bvd2VyID0geworCS50eXBl ID0gaHdtb25fcG93ZXIsCisJLmNvbmZpZyA9IGk5MTVfY29uZmlnX3Bvd2VyLAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGFubmVsX2luZm8gKmk5MTVfaW5mb1tdID0geworCSZp OTE1X3Bvd2VyLAorCU5VTEwKK307CisKK3N0YXRpYyB1bW9kZV90CitpOTE1X3Bvd2VyX2lzX3Zp c2libGUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHUzMiBhdHRyLCBpbnQg Y2hhbikKK3sKKwlpOTE1X3JlZ190IHJnYWRyOworCisJc3dpdGNoIChhdHRyKSB7CisJY2FzZSBo d21vbl9wb3dlcl9tYXg6CisJCXJnYWRyID0gaTkxNS0+aHdtb24ucmcucGtnX3JhcGxfbGltaXQ7 CisJCWJyZWFrOworCWNhc2UgaHdtb25fcG93ZXJfY2FwOgorCQlyZ2FkciA9IGk5MTUtPmh3bW9u LnJnLnBrZ19yYXBsX2xpbWl0X3VkdzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7 CisJfQorCisJaWYgKCFpOTE1X21taW9fcmVnX3ZhbGlkKHJnYWRyKSkKKwkJcmV0dXJuIDA7CisK KwlyZXR1cm4gMDY2NDsKK30KKworc3RhdGljIGludAoraTkxNV9wb3dlcl9yZWFkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgYXR0ciwgaW50IGNoYW4sIGxvbmcgKnZhbCkKK3sK KwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3JlOworCXN0cnVjdCBp OTE1X2h3bW9uICpod21vbiA9ICZpOTE1LT5od21vbjsKKwlpbnQgcmV0ID0gMDsKKworCXN3aXRj aCAoYXR0cikgeworCWNhc2UgaHdtb25fcG93ZXJfbWF4OgorCQkqdmFsID0gKGxvbmcpX2ZpZWxk X3JlYWRfYW5kX3NjYWxlKHVuY29yZSwKKwkJCQkJCSAgIGh3bW9uLT5yZy5wa2dfcmFwbF9saW1p dCwKKwkJCQkJCSAgIFBLR19QV1JfTElNXzEsCisJCQkJCQkgICBGSUVMRF9TSElGVChQS0dfUFdS X0xJTV8xKSwKKwkJCQkJCSAgIGh3bW9uLT5zY2xfc2hpZnRfcG93ZXIsCisJCQkJCQkgICBTRl9Q T1dFUik7CisJCWJyZWFrOworCWNhc2UgaHdtb25fcG93ZXJfY2FwOgorCQkqdmFsID0gKGxvbmcp X2ZpZWxkX3JlYWRfYW5kX3NjYWxlKHVuY29yZSwKKwkJCQkJCSAgIGh3bW9uLT5yZy5wa2dfcmFw bF9saW1pdF91ZHcsCisJCQkJCQkgICBQS0dfUFdSX0xJTV8yLAorCQkJCQkJICAgRklFTERfU0hJ RlQoUEtHX1BXUl9MSU1fMiksCisJCQkJCQkgICBod21vbi0+c2NsX3NoaWZ0X3Bvd2VyLAorCQkJ CQkJICAgU0ZfUE9XRVIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXQgPSAtRU9QTk9UU1VQ UDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitpOTE1X3Bvd2VyX3dyaXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1MzIgYXR0ciwgaW50IGNoYW4sIGxvbmcg dmFsKQoreworCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9ICZpOTE1LT51bmNvcmU7CisJ c3RydWN0IGk5MTVfaHdtb24gKmh3bW9uID0gJmk5MTUtPmh3bW9uOworCWludCByZXQgPSAwOwor CisJc3dpdGNoIChhdHRyKSB7CisJY2FzZSBod21vbl9wb3dlcl9tYXg6CisJCV9maWVsZF9zY2Fs ZV9hbmRfd3JpdGUodW5jb3JlLAorCQkJCSAgICAgICBod21vbi0+cmcucGtnX3JhcGxfbGltaXQs CisJCQkJICAgICAgIFBLR19QV1JfTElNXzEsCisJCQkJICAgICAgIEZJRUxEX1NISUZUKFBLR19Q V1JfTElNXzEpLAorCQkJCSAgICAgICBod21vbi0+c2NsX3NoaWZ0X3Bvd2VyLAorCQkJCSAgICAg ICBTRl9QT1dFUiwgdmFsKTsKKwkJYnJlYWs7CisJY2FzZSBod21vbl9wb3dlcl9jYXA6CisJCV9m aWVsZF9zY2FsZV9hbmRfd3JpdGUodW5jb3JlLAorCQkJCSAgICAgICBod21vbi0+cmcucGtnX3Jh cGxfbGltaXRfdWR3LAorCQkJCSAgICAgICBQS0dfUFdSX0xJTV8yLAorCQkJCSAgICAgICBGSUVM RF9TSElGVChQS0dfUFdSX0xJTV8yKSwKKwkJCQkgICAgICAgaHdtb24tPnNjbF9zaGlmdF9wb3dl ciwKKwkJCQkgICAgICAgU0ZfUE9XRVIsIHZhbCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJl dCA9IC1FT1BOT1RTVVBQOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB1bW9kZV90 CitpOTE1X2lzX3Zpc2libGUoY29uc3Qgdm9pZCAqZGF0YSwgZW51bSBod21vbl9zZW5zb3JfdHlw ZXMgdHlwZSwKKwkJdTMyIGF0dHIsIGludCBjaGFubmVsKQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICopZGF0YTsKKworCXN3aXRj aCAodHlwZSkgeworCWNhc2UgaHdtb25fcG93ZXI6CisJCXJldHVybiBpOTE1X3Bvd2VyX2lzX3Zp c2libGUoaTkxNSwgYXR0ciwgY2hhbm5lbCk7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJfQor fQorCitzdGF0aWMgaW50CitpOTE1X3JlYWQoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGh3bW9u X3NlbnNvcl90eXBlcyB0eXBlLCB1MzIgYXR0ciwKKwkgIGludCBjaGFubmVsLCBsb25nICp2YWwp Cit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBrZGV2X3RvX2k5MTUoZGV2KTsK KworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgaHdtb25fcG93ZXI6CisJCXJldHVybiBpOTE1X3Bv d2VyX3JlYWQoaTkxNSwgYXR0ciwgY2hhbm5lbCwgdmFsKTsKKwlkZWZhdWx0OgorCQlyZXR1cm4g LUVPUE5PVFNVUFA7CisJfQorfQorCitzdGF0aWMgaW50CitpOTE1X3dyaXRlKHN0cnVjdCBkZXZp Y2UgKmRldiwgZW51bSBod21vbl9zZW5zb3JfdHlwZXMgdHlwZSwgdTMyIGF0dHIsCisJICAgaW50 IGNoYW5uZWwsIGxvbmcgdmFsKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g a2Rldl90b19pOTE1KGRldik7CisKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIGh3bW9uX3Bvd2Vy OgorCQlyZXR1cm4gaTkxNV9wb3dlcl93cml0ZShpOTE1LCBhdHRyLCBjaGFubmVsLCB2YWwpOwor CWRlZmF1bHQ6CisJCXJldHVybiAtRU9QTk9UU1VQUDsKKwl9Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaHdtb25fb3BzIGk5MTVfaHdtb25fb3BzID0geworCS5pc192aXNpYmxlID0gaTkxNV9p c192aXNpYmxlLAorCS5yZWFkID0gaTkxNV9yZWFkLAorCS53cml0ZSA9IGk5MTVfd3JpdGUsCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGh3bW9uX2NoaXBfaW5mbyBpOTE1X2NoaXBfaW5mbyA9 IHsKKwkub3BzID0gJmk5MTVfaHdtb25fb3BzLAorCS5pbmZvID0gaTkxNV9pbmZvLAorfTsKKwor c3RhdGljIHZvaWQKK2k5MTVfaHdtb25fZ2V0X3ByZXJlZ2lzdHJhdGlvbl9pbmZvKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9ICZp OTE1LT5od21vbjsKKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmaTkxNS0+dW5jb3Jl OworCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCXUzMiB2YWxfc2t1X3VuaXQ7CisJX19sZTMy IGxlX3NrdV91bml0OworCisJaWYgKElTX0RHMShpOTE1KSkgeworCQlod21vbi0+cmcucGtnX3Bv d2VyX3NrdV91bml0ID0gUENVX1BBQ0tBR0VfUE9XRVJfU0tVX1VOSVQ7CisJCWh3bW9uLT5yZy5w a2dfcG93ZXJfc2t1ID0gUENVX1BBQ0tBR0VfUE9XRVJfU0tVOworCQlod21vbi0+cmcucGtnX2Vu ZXJneV9zdGF0dXMgPSBQQ1VfUEFDS0FHRV9FTkVSR1lfU1RBVFVTOworCQlod21vbi0+cmcucGtn X3JhcGxfbGltaXQgPSBQQ1VfUEFDS0FHRV9SQVBMX0xJTUlUOworCQlod21vbi0+cmcucGtnX3Jh cGxfbGltaXRfdWR3ID0gUENVX1BBQ0tBR0VfUkFQTF9MSU1JVF9VRFc7CisJCWh3bW9uLT5yZy5w bHRfZW5lcmd5X3N0YXR1cyA9IFBDVV9QTEFURk9STV9FTkVSR1lfU1RBVFVTOworCX0gZWxzZSB7 CisJCWh3bW9uLT5yZy5wa2dfcG93ZXJfc2t1X3VuaXQgPSBJTlZBTElEX01NSU9fUkVHOworCQlo d21vbi0+cmcucGtnX3Bvd2VyX3NrdSA9IElOVkFMSURfTU1JT19SRUc7CisJCWh3bW9uLT5yZy5w a2dfZW5lcmd5X3N0YXR1cyA9IElOVkFMSURfTU1JT19SRUc7CisJCWh3bW9uLT5yZy5wa2dfcmFw bF9saW1pdCA9IElOVkFMSURfTU1JT19SRUc7CisJCWh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdF91 ZHcgPSBJTlZBTElEX01NSU9fUkVHOworCQlod21vbi0+cmcucGx0X2VuZXJneV9zdGF0dXMgPSBJ TlZBTElEX01NSU9fUkVHOworCX0KKworCS8qCisJICogSWYgYSBwbGF0Zm9ybSBkb2VzIG5vdCBz dXBwb3J0ICpfUExBVEZPUk1fRU5FUkdZX1NUQVRVUywKKwkgKiB0cnkgKlBBQ0tBR0VfRU5FUkdZ X1NUQVRVUy4KKwkgKi8KKwlpZiAoaTkxNV9tbWlvX3JlZ192YWxpZChod21vbi0+cmcucGx0X2Vu ZXJneV9zdGF0dXMpKQorCQlod21vbi0+cmcucmVnX2VuZXJneV9zdGF0dXMgPSBod21vbi0+cmcu cGx0X2VuZXJneV9zdGF0dXM7CisJZWxzZQorCQlod21vbi0+cmcucmVnX2VuZXJneV9zdGF0dXMg PSBod21vbi0+cmcucGtnX2VuZXJneV9zdGF0dXM7CisKKwl3YWtlcmVmID0gaW50ZWxfcnVudGlt ZV9wbV9nZXQodW5jb3JlLT5ycG0pOworCisJLyoKKwkgKiBUaGUgY29udGVudHMgb2YgcmVnaXN0 ZXIgaHdtb24tPnJnLnBrZ19wb3dlcl9za3VfdW5pdCBkbyBub3QgY2hhbmdlLAorCSAqIHNvIHJl YWQgaXQgb25jZSBhbmQgc3RvcmUgdGhlIHNoaWZ0IHZhbHVlcy4KKwkgKi8KKwlpZiAoaTkxNV9t bWlvX3JlZ192YWxpZChod21vbi0+cmcucGtnX3Bvd2VyX3NrdV91bml0KSkKKwkJdmFsX3NrdV91 bml0ID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLAorCQkJCQkJIGh3bW9uLT5yZy5wa2dfcG93 ZXJfc2t1X3VuaXQpOworCWVsc2UKKwkJdmFsX3NrdV91bml0ID0gMDsKKworCWh3bW9uLT5lbmVy Z3lfY291bnRlcl9vdmVyZmxvdyA9IDA7CisKKwlpZiAoaTkxNV9tbWlvX3JlZ192YWxpZChod21v bi0+cmcucmVnX2VuZXJneV9zdGF0dXMpKQorCQlod21vbi0+ZW5lcmd5X2NvdW50ZXJfcHJldiA9 CisJCQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIGh3bW9uLT5yZy5yZWdfZW5lcmd5X3N0YXR1 cyk7CisJZWxzZQorCQlod21vbi0+ZW5lcmd5X2NvdW50ZXJfcHJldiA9IDA7CisKKwlpbnRlbF9y dW50aW1lX3BtX3B1dCh1bmNvcmUtPnJwbSwgd2FrZXJlZik7CisKKwlsZV9za3VfdW5pdCA9IGNw dV90b19sZTMyKHZhbF9za3VfdW5pdCk7CisJaHdtb24tPnNjbF9zaGlmdF9wb3dlciA9IGxlMzJf Z2V0X2JpdHMobGVfc2t1X3VuaXQsIFBLR19QV1JfVU5JVCk7CisJaHdtb24tPnNjbF9zaGlmdF9l bmVyZ3kgPSBsZTMyX2dldF9iaXRzKGxlX3NrdV91bml0LCBQS0dfRU5FUkdZX1VOSVQpOworCWh3 bW9uLT5zY2xfc2hpZnRfdGltZSA9IGxlMzJfZ2V0X2JpdHMobGVfc2t1X3VuaXQsIFBLR19USU1F X1VOSVQpOworCisJLyoKKwkgKiBUaGVyZSBpcyBubyBkaXJlY3Qgd2F5IHRvIG9idGFpbiB0aGUg cG93ZXIgZGVmYXVsdF9saW1pdC4KKwkgKiBUaGUgYmVzdCBrbm93biB3b3JrYXJvdW5kIGlzIHRv IHVzZSB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBwb3dlcjFfbWF4LgorCSAqCisJICogVGhlIHZhbHVl IG9mIHBvd2VyMV9tYXggaXMgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb24gcmVib290LCBidXQgaXMK KwkgKiBub3QgcmVzZXQgYnkgYSBtb2R1bGUgdW5sb2FkL2xvYWQgc2VxdWVuY2UuICBUbyBhbGxv dyBwcm9wZXIKKwkgKiBmdW5jdGlvbmluZyBhZnRlciBhIG1vZHVsZSByZWxvYWQsIHRoZSB2YWx1 ZSBmb3IgcG93ZXIxX21heCBpcworCSAqIHJlc3RvcmVkIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZSBh dCBtb2R1bGUgdW5sb2FkIHRpbWUgaW4KKwkgKiBpOTE1X2h3bW9uX3VucmVnaXN0ZXIoKS4KKwkg Ki8KKwlod21vbi0+cG93ZXJfbWF4X2luaXRpYWxfdmFsdWUgPQorCQkodTMyKV9maWVsZF9yZWFk X2FuZF9zY2FsZSh1bmNvcmUsCisJCQkJCSAgIGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdCwKKwkJ CQkJICAgUEtHX1BXUl9MSU1fMSwKKwkJCQkJICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1fMSks CisJCQkJCSAgIGh3bW9uLT5zY2xfc2hpZnRfcG93ZXIsIFNGX1BPV0VSKTsKK30KKwordm9pZCBp OTE1X2h3bW9uX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gJmk5MTUtPmRybTsKKwlzdHJ1Y3QgaTkxNV9od21v biAqaHdtb24gPSAmaTkxNS0+aHdtb247CisJc3RydWN0IGRldmljZSAqaHdtb25fZGV2OworCisJ bXV0ZXhfaW5pdCgmaHdtb24tPmh3bW9uX2xvY2spOworCisJaTkxNV9od21vbl9nZXRfcHJlcmVn aXN0cmF0aW9uX2luZm8oaTkxNSk7CisKKwlod21vbl9kZXYgPSBod21vbl9kZXZpY2VfcmVnaXN0 ZXJfd2l0aF9pbmZvKGRybV9kZXYtPmRldiwgImk5MTUiLAorCQkJCQkJICAgIGRybV9kZXYsCisJ CQkJCQkgICAgJmk5MTVfY2hpcF9pbmZvLAorCQkJCQkJICAgIGh3bW9uX2dyb3Vwcyk7CisKKwlp ZiAoSVNfRVJSKGh3bW9uX2RldikpIHsKKwkJbXV0ZXhfZGVzdHJveSgmaHdtb24tPmh3bW9uX2xv Y2spOworCQlkcm1faW5mbygmaTkxNS0+ZHJtLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGh3bW9uIGZv ciBpOTE1XG4iKTsKKwkJcmV0dXJuOworCX0KKworCWh3bW9uLT5kZXYgPSBod21vbl9kZXY7CisK KwlyZXR1cm47Cit9CisKK3ZvaWQgaTkxNV9od21vbl91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBpOTE1X2h3bW9uICpod21vbiA9ICZpOTE1LT5o d21vbjsKKworCWlmIChod21vbi0+cG93ZXJfbWF4X2luaXRpYWxfdmFsdWUpIHsKKwkJLyogUmVz dG9yZSBwb3dlcjFfbWF4LiAqLworCQlfZmllbGRfc2NhbGVfYW5kX3dyaXRlKCZpOTE1LT51bmNv cmUsIGh3bW9uLT5yZy5wa2dfcmFwbF9saW1pdCwKKwkJCQkgICAgICAgUEtHX1BXUl9MSU1fMSwK KwkJCQkgICAgICAgRklFTERfU0hJRlQoUEtHX1BXUl9MSU1fMSksCisJCQkJICAgICAgIGh3bW9u LT5zY2xfc2hpZnRfcG93ZXIsCisJCQkJICAgICAgIFNGX1BPV0VSLAorCQkJCSAgICAgICBod21v bi0+cG93ZXJfbWF4X2luaXRpYWxfdmFsdWUpOworCX0KKworCWlmIChod21vbi0+ZGV2KQorCQlo d21vbl9kZXZpY2VfdW5yZWdpc3Rlcihod21vbi0+ZGV2KTsKKworCW11dGV4X2Rlc3Ryb3koJmh3 bW9uLT5od21vbl9sb2NrKTsKKworCW1lbXNldChod21vbiwgMCwgc2l6ZW9mKCpod21vbikpOwor fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9od21vbi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9od21vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMDAuLjBiYTQxYTUyNmUzYmQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2h3bW9uLmgKQEAgLTAsMCArMSw0NCBAQAorLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVCAqLworCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29y cG9yYXRpb24KKyAqLworCisjaWZuZGVmIF9fSU5URUxfSFdNT05fSF9fCisjZGVmaW5lIF9fSU5U RUxfSFdNT05fSF9fCisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4 L211dGV4Lmg+CisjaW5jbHVkZSAiaTkxNV9yZWcuaCIKKworc3RydWN0IGk5MTVfaHdtb25fcmVn IHsKKwlpOTE1X3JlZ190IHBrZ19wb3dlcl9za3VfdW5pdDsKKwlpOTE1X3JlZ190IHBrZ19wb3dl cl9za3U7CisJaTkxNV9yZWdfdCBwa2dfZW5lcmd5X3N0YXR1czsKKwlpOTE1X3JlZ190IHBrZ19y YXBsX2xpbWl0OworCWk5MTVfcmVnX3QgcGtnX3JhcGxfbGltaXRfdWR3OworCWk5MTVfcmVnX3Qg cGx0X2VuZXJneV9zdGF0dXM7CisJaTkxNV9yZWdfdCByZWdfZW5lcmd5X3N0YXR1czsKK307CisK K3N0cnVjdCBpOTE1X2h3bW9uIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IG11dGV4 IGh3bW9uX2xvY2s7CS8qIGNvdW50ZXIgb3ZlcmZsb3cgbG9naWMgYW5kIHJtdyAqLworCisJc3Ry dWN0IGk5MTVfaHdtb25fcmVnIHJnOworCisJdTMyIGVuZXJneV9jb3VudGVyX292ZXJmbG93Owor CXUzMiBlbmVyZ3lfY291bnRlcl9wcmV2OworCXUzMiBwb3dlcl9tYXhfaW5pdGlhbF92YWx1ZTsK KworCWludCBzY2xfc2hpZnRfcG93ZXI7CisJaW50IHNjbF9zaGlmdF9lbmVyZ3k7CisJaW50IHNj bF9zaGlmdF90aW1lOworfTsKKworc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7CisKK3ZvaWQgaTkx NV9od21vbl9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cit2b2lkIGk5 MTVfaHdtb25fdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CisKKyNl bmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggODcxZDgzOWRmY2I4Ni4uN2Q0YzUwZmYz NjBkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC00MDc0LDYgKzQwNzQsNTkgQEAgc3Rh dGljIGlubGluZSBib29sIGk5MTVfbW1pb19yZWdfdmFsaWQoaTkxNV9yZWdfdCByZWcpCiAjZGVm aW5lIEJYVF9SUF9TVEFURV9DQVAgICAgICAgIF9NTUlPKDB4MTM4MTcwKQogI2RlZmluZSBHRU45 X1JQX1NUQVRFX0xJTUlUUwlfTU1JTygweDEzODE0OCkKIAorLyogREcxICovCisKKy8qIGJhc2Vk IG9uIE1DSEJBUl9NSVJST1JfQkFTRV9TTkIgPT0gMHgxNDAwMDAgKi8KKyNkZWZpbmUgUENVX1BB Q0tBR0VfUE9XRVJfU0tVX1VOSVQJX01NSU8oTUNIQkFSX01JUlJPUl9CQVNFX1NOQiArIDB4NTkz OCkKKyNkZWZpbmUgUENVX1BBQ0tBR0VfRU5FUkdZX1NUQVRVUwlfTU1JTyhNQ0hCQVJfTUlSUk9S X0JBU0VfU05CICsgMHg1OTNjKQorI2RlZmluZSBQQ1VfUEFDS0FHRV9SQVBMX0xJTUlUCQlfTU1J TyhNQ0hCQVJfTUlSUk9SX0JBU0VfU05CICsgMHg1OWEwKQorI2RlZmluZSBQQ1VfUEFDS0FHRV9S QVBMX0xJTUlUX1VEVwlfTU1JTyhNQ0hCQVJfTUlSUk9SX0JBU0VfU05CICsgMHg1OWE0KQorI2Rl ZmluZSBQQ1VfUEFDS0FHRV9QT1dFUl9TS1UJCUlOVkFMSURfTU1JT19SRUcKKyNkZWZpbmUgUENV X1BMQVRGT1JNX0VORVJHWV9TVEFUVVMJSU5WQUxJRF9NTUlPX1JFRworCisvKiBGaWVsZHMgZm9y ICpfUEFDS0FHRV9SQVBMX0xJTUlUOiAqLworI2RlZmluZSAgIFBLR19QV1JfTElNXzEJCQlSRUdf R0VOTUFTSygxNCwgMCkKKyNkZWZpbmUgICBQS0dfUFdSX0xJTV8xX0VOCQlSRUdfQklUKDE1KQor I2RlZmluZSAgIFBLR19QV1JfTElNXzFfVElNRQkJUkVHX0dFTk1BU0soMjMsIDE3KQorCisvKgor ICogRmllbGRzIGZvciAqX1BBQ0tBR0VfUkFQTF9MSU1JVF9VRFc6CisgKiBJbiBkb2NzLCB0aGVz ZSBmaWVsZHMgbWF5IGJlIGRlZmluZWQgcmVsYXRpdmUgdG8gdGhlIGVudGlyZSA2NC1iaXQKKyAq IHJlZ2lzdGVyLCBidXQgaGVyZSB0aGV5IGFyZSBkZWZpbmVkIHJlbGF0aXZlIHRvIHRoZSAzMi1i aXQgYm91bmRhcnkuCisgKi8KKyNkZWZpbmUgICBQS0dfUFdSX0xJTV8yCQkJUkVHX0dFTk1BU0so MTQsIDApCS8vIDQ2OjMyCisjZGVmaW5lICAgUEtHX1BXUl9MSU1fMl9FTgkJUkVHX0JJVCgxNSkJ CS8vIDQ3OjQ3CisjZGVmaW5lICAgUEtHX1BXUl9MSU1fMl9USU1FCQlSRUdfR0VOTUFTSygyMywg MTcpCS8vIDU1OjQ5CisKKy8qCisgKiAqX1BBQ0tBR0VfUE9XRVJfU0tVX1VOSVQgLSBmaWVsZHMg c3BlY2lmeWluZyBzY2FsaW5nIGZvciBQQ1UgcXVhbnRpdGllcy4KKyAqIC0gUEtHX1BXUl9VTklU IC0gUG93ZXIgVW5pdHMgdXNlZCBmb3IgcG93ZXIgY29udHJvbCByZWdpc3RlcnMuIFRoZQorICog ICBhY3R1YWwgdW5pdCB2YWx1ZSBpcyBjYWxjdWxhdGVkIGJ5IDEgVyAvIFBvd2VyKDIsUEtHX1BX Ul9VTklUKS4KKyAqIC0gUEtHX0VORVJHWV9VTklUIC0gRW5lcmd5IFVuaXRzIHVzZWQgZm9yIHBv d2VyIGNvbnRyb2wgcmVnaXN0ZXJzLiBUaGUKKyAqICAgYWN0dWFsIHVuaXQgdmFsdWUgaXMgY2Fs Y3VsYXRlZCBieSAxIEogLyBQb3dlcigyLFBLR19FTkVSR1lfVU5JVCkuCisgKiAtIFBLR19USU1F X1VOSVQgLSBUaW1lIFVuaXRzIHVzZWQgZm9yIHBvd2VyIGNvbnRyb2wgcmVnaXN0ZXJzLiBUaGUK KyAqICAgYWN0dWFsIHVuaXQgdmFsdWUgaXMgY2FsY3VsYXRlZCBieSAxIHMgLyBQb3dlcigyLFBL R19USU1FX1VOSVQpLgorICovCisjZGVmaW5lICAgUEtHX1BXUl9VTklUCQkJUkVHX0dFTk1BU0so MywgMCkKKyNkZWZpbmUgICBQS0dfRU5FUkdZX1VOSVQJCVJFR19HRU5NQVNLKDEyLCA4KQorI2Rl ZmluZSAgIFBLR19USU1FX1VOSVQJCQlSRUdfR0VOTUFTSygxOSwgMTYpCisKKy8qCisgKiAqX1BB Q0tBR0VfUE9XRVJfU0tVIC0gU0tVIHBvd2VyIGFuZCB0aW1pbmcgcGFyYW1ldGVycy4KKyAqIFVz ZWQgaGVyZWluIGFzIGEgNjQtYml0IGJpdCByZWdpc3Rlci4KKyAqIFRoZXNlIG1hc2tzIGFyZSBk ZWZpbmVkIHVzaW5nIEdFTk1BU0tfVUxMIGFzIFJFR19HRU5NQVNLIGlzIGxpbWl0ZWQgdG8gdTMy CisgKiBhbmQgYXMgR0VOTUFTSyBpcyAibG9uZyIgYW5kIHRoZXJlZm9yZSAzMi1iaXRzIG9uIGEg MzItYml0IHN5c3RlbS4KKyAqIFBLR19QS0dfVERQLCBQS0dfTUlOX1BXUiwgYW5kIFBLR19NQVhf UFdSIGFyZSBzY2FsZWQgaW4gdGhlIHNhbWUgd2F5IGFzCisgKiBQS0dfUFdSX0xJTV8qLCBhYm92 ZS4KKyAqIFBLR19NQVhfV0lOIGhhcyBzdWItZmllbGRzIGZvciB4IGFuZCB5LCBhbmQgaGFzIHRo ZSB2YWx1ZTogaXMgMS54ICogMl55LgorICovCisjZGVmaW5lICAgUEtHX1BLR19URFAJCQlHRU5N QVNLX1VMTCgxNCwgMCkKKyNkZWZpbmUgICBQS0dfTUlOX1BXUgkJCUdFTk1BU0tfVUxMKDMwLCAx NikKKyNkZWZpbmUgICBQS0dfTUFYX1BXUgkJCUdFTk1BU0tfVUxMKDQ2LCAzMikKKyNkZWZpbmUg ICBQS0dfTUFYX1dJTgkJCUdFTk1BU0tfVUxMKDU0LCA0OCkKKyNkZWZpbmUgICAgIFBLR19NQVhf V0lOX1kJCUdFTk1BU0tfVUxMKDU0LCA1MykKKyNkZWZpbmUgICAgIFBLR19NQVhfV0lOX1gJCUdF Tk1BU0tfVUxMKDUyLCA0OCkKKwogLyoKICAqIExvZ2ljYWwgQ29udGV4dCByZWdzCiAgKi8KLS0g CjIuMzEuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==