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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 14736C71135 for ; Fri, 13 Jun 2025 10:09:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=yNjGmq1XNQsUyDiwC4oQIcF9exEzG4C1L6oksbPclAo=; b=eJUVgS6XhxfiZl 8DTyqcmM6qUlZdWHZcFJUq+lnJg+Z5j/SVIGIaj6Bu4MM/l31lwnnW27mVu4KQVrD18/RMGWD9Ox8 lo8FGXHvCi5zbn1cLbGV6UhifiJslorgbr7uzBSRRuh7wSh4GSElgGo2MSGB5t4aa0D8tzmCpNtF4 fOuQkoUMYPzDR1AAECr88idDDHRFh0OesLUg4fhBdAJeka9ngNyjcZP+7zEhFKf8oPrQ7eScEY1us Q2QkvLAP4qM5O4MOK10C7d+zIkhZn4fMEfZHHh+AIM2gfp7mqEq6OKLPS63gOi+k2db71smVmlKpy unZLKBzrp95Bo2pfBlCw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uQ1Lr-0000000G1xa-186V; Fri, 13 Jun 2025 10:09:35 +0000 Received: from sender4-op-o15.zoho.com ([136.143.188.15]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uQ08b-0000000FobB-1en9 for linux-riscv@lists.infradead.org; Fri, 13 Jun 2025 08:51:51 +0000 ARC-Seal: i=1; a=rsa-sha256; t=1749804703; cv=none; d=zohomail.com; s=zohoarc; b=mjjlqmHJFdBoyQSQ+73Xpg9zdU2WLydvXYU57MjczH5SRcdjeqG3u9Bv49Rawq1qREok+LCGkjrCXiVZcbhGUyqYuEUHtUL7mFa8xD3Kk2LWxSmX3OTNgGaQ5yOtk4JL6JvxMrRempJUyrATVejPcSmvfgGmAmKSLUzJ/Albp+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1749804703; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=H0wdiQtQWoEeRWHN1Q+YS9SFQlz6oY7vutx5PBZCvNU=; b=eub3NCmhOBADTIyCgRWiRHCSRK3JfMTl8WYaaHz+nyvCht2W9s+lOGj+nRoPXPMCK2duAW/AiVRJ2Mrm052w+DD6wlMacrqT2qdPSnPc01SfpvJ7VJ5nuoZ3RkvuRM/WQ/sS4t0rIqyuY+LoWKIU0xIr35OgbGFGbxccXo+9+3c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=pigmoral.tech; spf=pass smtp.mailfrom=junhui.liu@pigmoral.tech; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1749804703; s=zmail; d=pigmoral.tech; i=junhui.liu@pigmoral.tech; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=H0wdiQtQWoEeRWHN1Q+YS9SFQlz6oY7vutx5PBZCvNU=; b=qA3jLTZE6DyjQhO66ccOlGNC0IHdQqZSWV7EJShnmx14PWXTqurn2AthqLkrq/S2 fA7xZs/lsydSiVHUkDPkJ7trsli+TE5ZYRbeXfoysUQhNDSUYmpD9johLfiaeiiageI y36NfwQ8cxrYIeDBJn7W4ALoFnyXoTAUqkpgQrsc= Received: by mx.zohomail.com with SMTPS id 1749804700289358.5263174845122; Fri, 13 Jun 2025 01:51:40 -0700 (PDT) From: Junhui Liu Date: Fri, 13 Jun 2025 16:49:24 +0800 Subject: [PATCH v4 2/2] reset: canaan: add reset driver for Kendryte K230 MIME-Version: 1.0 Message-Id: <20250613-k230-reset-v4-2-e5266d2be440@pigmoral.tech> References: <20250613-k230-reset-v4-0-e5266d2be440@pigmoral.tech> In-Reply-To: <20250613-k230-reset-v4-0-e5266d2be440@pigmoral.tech> To: Philipp Zabel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Junhui Liu Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, Chen Wang X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1749804649; l=15871; i=junhui.liu@pigmoral.tech; s=20250507; h=from:subject:message-id; bh=9W9APXg3+vhtmfMS0vgZtYO+hg6WerAmIGcJdJ1Z5pQ=; b=9fL9MrLBWj54BWJIqSy206/zqHq7LsqeVzG7EZo4wwxbG50TvCFwjpq/CXb+D3hBA/8Y2D1dt boyjUuvyt/PCfOTh6hqAfh026ZowEsaIAS1yckSxkYgSa38oj6F6x66 X-Developer-Key: i=junhui.liu@pigmoral.tech; a=ed25519; pk=d3i4H2mg9LUn4SQemoLAjLRQy0nTcyknIv6zgKMwiBA= X-ZohoMailClient: External X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250613_015149_499658_C5CD95AD X-CRM114-Status: GOOD ( 22.16 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org QWRkIHN1cHBvcnQgZm9yIHRoZSByZXNldHMgb24gQ2FuYWFuIEtlbmRyeXRlIEsyMzAgU29DLiBU aGUgZHJpdmVyCnN1cHBvcnQgQ1BVMCwgQ1BVMSwgTDIgY2FjaGUgZmx1c2gsIGhhcmR3YXJlIGF1 dG8gY2xlYXIgYW5kIHNvZnR3YXJlCmNsZWFyIHJlc2V0cy4KClRlc3RlZC1ieTogQ2hlbiBXYW5n IDx1bmljb3JuX3dhbmdAb3V0bG9vay5jb20+ClJldmlld2VkLWJ5OiBQaGlsaXBwIFphYmVsIDxw LnphYmVsQHBlbmd1dHJvbml4LmRlPgpTaWduZWQtb2ZmLWJ5OiBKdW5odWkgTGl1IDxqdW5odWku bGl1QHBpZ21vcmFsLnRlY2g+Ci0tLQogZHJpdmVycy9yZXNldC9LY29uZmlnICAgICAgfCAgIDkg KysKIGRyaXZlcnMvcmVzZXQvTWFrZWZpbGUgICAgIHwgICAxICsKIGRyaXZlcnMvcmVzZXQvcmVz ZXQtazIzMC5jIHwgMzcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogMyBmaWxlcyBjaGFuZ2VkLCAzODEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvcmVzZXQvS2NvbmZpZyBiL2RyaXZlcnMvcmVzZXQvS2NvbmZpZwppbmRleCBkODViZTU4 OTlkYTZhYmE5MmY4OWMyNWIwMGRhY2M2NjE4YmMyMjU1Li40NjQ5YzcyZTliNmU4MWViNWZjODkw NTkxNWVmYWY1YzY4NjNhNGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Jlc2V0L0tjb25maWcKKysr IGIvZHJpdmVycy9yZXNldC9LY29uZmlnCkBAIC0xNDAsNiArMTQwLDE1IEBAIGNvbmZpZyBSRVNF VF9LMjEwCiAJICBTYXkgWSBpZiB5b3Ugd2FudCB0byBjb250cm9sIHJlc2V0IHNpZ25hbHMgcHJv dmlkZWQgYnkgdGhpcwogCSAgY29udHJvbGxlci4KIAorY29uZmlnIFJFU0VUX0syMzAKKwl0cmlz dGF0ZSAiUmVzZXQgY29udHJvbGxlciBkcml2ZXIgZm9yIENhbmFhbiBLZW5kcnl0ZSBLMjMwIFNv QyIKKwlkZXBlbmRzIG9uIEFSQ0hfQ0FOQUFOIHx8IENPTVBJTEVfVEVTVAorCWRlcGVuZHMgb24g T0YKKwloZWxwCisJICBTdXBwb3J0IGZvciB0aGUgQ2FuYWFuIEtlbmRyeXRlIEsyMzAgUklTQy1W IFNvQyByZXNldCBjb250cm9sbGVyLgorCSAgU2F5IFkgaWYgeW91IHdhbnQgdG8gY29udHJvbCBy ZXNldCBzaWduYWxzIHByb3ZpZGVkIGJ5IHRoaXMKKwkgIGNvbnRyb2xsZXIuCisKIGNvbmZpZyBS RVNFVF9MQU5USVEKIAlib29sICJMYW50aXEgWFdBWSBSZXNldCBEcml2ZXIiIGlmIENPTVBJTEVf VEVTVAogCWRlZmF1bHQgU09DX1RZUEVfWFdBWQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9yZXNldC9N YWtlZmlsZSBiL2RyaXZlcnMvcmVzZXQvTWFrZWZpbGUKaW5kZXggOTFlNjM0OGUzMzUxMWJjZTFh MjVhMTljNzE4ZTkyMjFkODczMTU0Yi4uODI0ODhkYWMwZjM1ZWNhN2Y4NzQzMTlmOTkyODgyZDU5 YTQwZmM3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9yZXNldC9NYWtlZmlsZQorKysgYi9kcml2ZXJz L3Jlc2V0L01ha2VmaWxlCkBAIC0yMCw2ICsyMCw3IEBAIG9iai0kKENPTkZJR19SRVNFVF9JTVg3 KSArPSByZXNldC1pbXg3Lm8KIG9iai0kKENPTkZJR19SRVNFVF9JTVg4TVBfQVVESU9NSVgpICs9 IHJlc2V0LWlteDhtcC1hdWRpb21peC5vCiBvYmotJChDT05GSUdfUkVTRVRfSU5URUxfR1cpICs9 IHJlc2V0LWludGVsLWd3Lm8KIG9iai0kKENPTkZJR19SRVNFVF9LMjEwKSArPSByZXNldC1rMjEw Lm8KK29iai0kKENPTkZJR19SRVNFVF9LMjMwKSArPSByZXNldC1rMjMwLm8KIG9iai0kKENPTkZJ R19SRVNFVF9MQU5USVEpICs9IHJlc2V0LWxhbnRpcS5vCiBvYmotJChDT05GSUdfUkVTRVRfTFBD MThYWCkgKz0gcmVzZXQtbHBjMTh4eC5vCiBvYmotJChDT05GSUdfUkVTRVRfTUNIUF9TUEFSWDUp ICs9IHJlc2V0LW1pY3JvY2hpcC1zcGFyeDUubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9yZXNldC9y ZXNldC1rMjMwLmMgYi9kcml2ZXJzL3Jlc2V0L3Jlc2V0LWsyMzAuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODEw NDViYjRhMTQyYWY3ZWI1YWI2NDhmMDRkMDRjYzk1OTE5MjU1Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9yZXNldC9yZXNldC1rMjMwLmMKQEAgLTAsMCArMSwzNzEgQEAKKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCisvKgorICogQ29weXJpZ2h0IChDKSAy MDIyLTIwMjQgQ2FuYWFuIEJyaWdodCBTaWdodCBDby4sIEx0ZAorICogQ29weXJpZ2h0IChDKSAy MDI0LTIwMjUgSnVuaHVpIExpdSA8anVuaHVpLmxpdUBwaWdtb3JhbC50ZWNoPgorICoKKyAqIFRo ZSByZXNldCBtYW5hZ2VtZW50IG1vZHVsZSBpbiB0aGUgSzIzMCBTb0MgcHJvdmlkZXMgcmVzZXQg dGltZSBjb250cm9sCisgKiByZWdpc3RlcnMuIEZvciBSU1RfVFlQRV9DUFUwLCBSU1RfVFlQRV9D UFUxIGFuZCBSU1RfVFlQRV9TV19ET05FLCB0aGUgcGVyaW9kCisgKiBkdXJpbmcgd2hpY2ggcmVz ZXQgaXMgYXBwbGllZCBvciByZW1vdmVkIHdoaWxlIHRoZSBjbG9jayBpcyBzdG9wcGVkIGNhbiBi ZQorICogc2V0IHVwIHRvIDE1ICogMC4yNSA9IDMuNzUgwrVzLiBGb3IgUlNUX1RZUEVfSFdfRE9O RSwgdGhhdCBwZXJpb2QgY2FuIGJlIHNldAorICogdXAgdG8gMjU1ICogMC4yNSA9IDYzLjc1IMK1 cy4gRm9yIFJTVF9UWVBFX0ZMVVNILCB0aGUgcmVzZXQgYml0IGlzCisgKiBhdXRvbWF0aWNhbGx5 IGNsZWFyZWQgYnkgaGFyZHdhcmUgd2hlbiBmbHVzaCBjb21wbGV0ZXMuCisgKgorICogQWx0aG91 Z2ggdGhpcyBkcml2ZXIgZG9lcyBub3QgY29uZmlndXJlIHRoZSByZXNldCB0aW1lIHJlZ2lzdGVy cywgZGVsYXlzIGhhdmUKKyAqIGJlZW4gYWRkZWQgdG8gdGhlIGFzc2VydCwgZGVhc3NlcnQsIGFu ZCByZXNldCBvcGVyYXRpb25zIHRvIGNvdmVyIHRoZSBtYXhpbXVtCisgKiByZXNldCB0aW1lLiBT b21lIHJlc2V0IHR5cGVzIGluY2x1ZGUgZG9uZSBiaXRzIHdob3NlIHRvZ2dsZSBkb2VzIG5vdAor ICogdW5hbWJpZ3VvdXNseSBzaWduYWwgd2hldGhlciBoYXJkd2FyZSByZXNldCByZW1vdmFsIG9y IGNsb2NrLXN0b3AgcGVyaW9kCisgKiBleHBpcmF0aW9uIG9jY3VycmVkIGZpcnN0LiBEZWxheXMg YXJlIHRoZXJlZm9yZSByZXRhaW5lZCBmb3IgdHlwZXMgd2l0aCBkb25lCisgKiBiaXRzIHRvIGVu c3VyZSBzYWZlIHRpbWluZy4KKyAqCisgKiBSZWZlcmVuY2U6IEsyMzAgVGVjaG5pY2FsIFJlZmVy ZW5jZSBNYW51YWwgVjAuMy4xCisgKiBodHRwczovL2tlbmRyeXRlLWRvd25sb2FkLmNhbmFhbi1j cmVhdGl2ZS5jb20vZGV2ZWxvcGVyL2syMzAvSERLL0syMzAlRTclQTElQUMlRTQlQkIlQjYlRTYl OTYlODclRTYlQTElQTMvSzIzMF9UZWNobmljYWxfUmVmZXJlbmNlX01hbnVhbF9WMC4zLjFfMjAy NDExMTgucGRmCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2NsZWFudXAuaD4KKyNpbmNsdWRlIDxs aW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvaW9w b2xsLmg+CisjaW5jbHVkZSA8bGludXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k ZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9yZXNldC1jb250cm9sbGVyLmg+CisjaW5jbHVkZSA8 bGludXgvc3BpbmxvY2suaD4KKworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3Jlc2V0L2NhbmFhbixr MjMwLXJzdC5oPgorCisvKioKKyAqIGVudW0gazIzMF9yc3RfdHlwZSAtIEsyMzAgcmVzZXQgdHlw ZXMKKyAqIEBSU1RfVFlQRV9DUFUwOiBSZXNldCB0eXBlIGZvciBDUFUwCisgKglBdXRvbWF0aWNh bGx5IGNsZWFycywgaGFzIHdyaXRlIGVuYWJsZSBhbmQgZG9uZSBiaXQsIGFjdGl2ZSBoaWdoCisg KiBAUlNUX1RZUEVfQ1BVMTogUmVzZXQgdHlwZSBmb3IgQ1BVMQorICoJTWFudWFsbHkgY2xlYXJz LCBoYXMgd3JpdGUgZW5hYmxlIGFuZCBkb25lIGJpdCwgYWN0aXZlIGhpZ2gKKyAqIEBSU1RfVFlQ RV9GTFVTSDogUmVzZXQgdHlwZSBmb3IgQ1BVIEwyIGNhY2hlIGZsdXNoCisgKglBdXRvbWF0aWNh bGx5IGNsZWFycywgaGFzIHdyaXRlIGVuYWJsZSwgbm8gZG9uZSBiaXQsIGFjdGl2ZSBoaWdoCisg KiBAUlNUX1RZUEVfSFdfRE9ORTogUmVzZXQgdHlwZSBmb3IgaGFyZHdhcmUgYXV0byBjbGVhcgor ICoJQXV0b21hdGljYWxseSBjbGVhcnMsIG5vIHdyaXRlIGVuYWJsZSwgaGFzIGRvbmUgYml0LCBh Y3RpdmUgaGlnaAorICogQFJTVF9UWVBFX1NXX0RPTkU6IFJlc2V0IHR5cGUgZm9yIHNvZnR3YXJl IG1hbnVhbCBjbGVhcgorICoJTWFudWFsbHkgY2xlYXJzLCBubyB3cml0ZSBlbmFibGUgYW5kIGRv bmUgYml0LAorICoJYWN0aXZlIGhpZ2ggaWYgSUQgaXMgUlNUX1NQSTJBWEksIG90aGVyd2lzZSBh Y3RpdmUgbG93CisgKi8KK2VudW0gazIzMF9yc3RfdHlwZSB7CisJUlNUX1RZUEVfQ1BVMCwKKwlS U1RfVFlQRV9DUFUxLAorCVJTVF9UWVBFX0ZMVVNILAorCVJTVF9UWVBFX0hXX0RPTkUsCisJUlNU X1RZUEVfU1dfRE9ORSwKK307CisKK3N0cnVjdCBrMjMwX3JzdF9tYXAgeworCXUzMgkJCW9mZnNl dDsKKwllbnVtIGsyMzBfcnN0X3R5cGUJdHlwZTsKKwl1MzIJCQlkb25lOworCXUzMgkJCXJlc2V0 OworfTsKKworc3RydWN0IGsyMzBfcnN0IHsKKwlzdHJ1Y3QgcmVzZXRfY29udHJvbGxlcl9kZXYJ cmNkZXY7CisJdm9pZCBfX2lvbWVtCQkJKmJhc2U7CisJLyogcHJvdGVjdCByZWdpc3RlciByZWFk LW1vZGlmeS13cml0ZSAqLworCXNwaW5sb2NrX3QJCQlsb2NrOworfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBrMjMwX3JzdF9tYXAgazIzMF9yZXNldHNbXSA9IHsKKwlbUlNUX0NQVTBdCQk9IHsg MHg0LCAgUlNUX1RZUEVfQ1BVMCwgICAgQklUKDEyKSwgQklUKDApIH0sCisJW1JTVF9DUFUxXQkJ PSB7IDB4YywgIFJTVF9UWVBFX0NQVTEsICAgIEJJVCgxMiksIEJJVCgwKSB9LAorCVtSU1RfQ1BV MF9GTFVTSF0JPSB7IDB4NCwgIFJTVF9UWVBFX0ZMVVNILCAgIDAsICAgICAgIEJJVCg0KSB9LAor CVtSU1RfQ1BVMV9GTFVTSF0JPSB7IDB4YywgIFJTVF9UWVBFX0ZMVVNILCAgIDAsICAgICAgIEJJ VCg0KSB9LAorCVtSU1RfQUldCQk9IHsgMHgxNCwgUlNUX1RZUEVfSFdfRE9ORSwgQklUKDMxKSwg QklUKDApIH0sCisJW1JTVF9WUFVdCQk9IHsgMHgxYywgUlNUX1RZUEVfSFdfRE9ORSwgQklUKDMx KSwgQklUKDApIH0sCisJW1JTVF9ISVNZU10JCT0geyAweDJjLCBSU1RfVFlQRV9IV19ET05FLCBC SVQoNCksICBCSVQoMCkgfSwKKwlbUlNUX0hJU1lTX0FIQl0JCT0geyAweDJjLCBSU1RfVFlQRV9I V19ET05FLCBCSVQoNSksICBCSVQoMSkgfSwKKwlbUlNUX1NESU8wXQkJPSB7IDB4MzQsIFJTVF9U WVBFX0hXX0RPTkUsIEJJVCgyOCksIEJJVCgwKSB9LAorCVtSU1RfU0RJTzFdCQk9IHsgMHgzNCwg UlNUX1RZUEVfSFdfRE9ORSwgQklUKDI5KSwgQklUKDEpIH0sCisJW1JTVF9TRElPX0FYSV0JCT0g eyAweDM0LCBSU1RfVFlQRV9IV19ET05FLCBCSVQoMzApLCBCSVQoMikgfSwKKwlbUlNUX1VTQjBd CQk9IHsgMHgzYywgUlNUX1RZUEVfSFdfRE9ORSwgQklUKDI4KSwgQklUKDApIH0sCisJW1JTVF9V U0IxXQkJPSB7IDB4M2MsIFJTVF9UWVBFX0hXX0RPTkUsIEJJVCgyOSksIEJJVCgxKSB9LAorCVtS U1RfVVNCMF9BSEJdCQk9IHsgMHgzYywgUlNUX1RZUEVfSFdfRE9ORSwgQklUKDMwKSwgQklUKDAp IH0sCisJW1JTVF9VU0IxX0FIQl0JCT0geyAweDNjLCBSU1RfVFlQRV9IV19ET05FLCBCSVQoMzEp LCBCSVQoMSkgfSwKKwlbUlNUX1NQSTBdCQk9IHsgMHg0NCwgUlNUX1RZUEVfSFdfRE9ORSwgQklU KDI4KSwgQklUKDApIH0sCisJW1JTVF9TUEkxXQkJPSB7IDB4NDQsIFJTVF9UWVBFX0hXX0RPTkUs IEJJVCgyOSksIEJJVCgxKSB9LAorCVtSU1RfU1BJMl0JCT0geyAweDQ0LCBSU1RfVFlQRV9IV19E T05FLCBCSVQoMzApLCBCSVQoMikgfSwKKwlbUlNUX1NFQ10JCT0geyAweDRjLCBSU1RfVFlQRV9I V19ET05FLCBCSVQoMzEpLCBCSVQoMCkgfSwKKwlbUlNUX1BETUFdCQk9IHsgMHg1NCwgUlNUX1RZ UEVfSFdfRE9ORSwgQklUKDI4KSwgQklUKDApIH0sCisJW1JTVF9TRE1BXQkJPSB7IDB4NTQsIFJT VF9UWVBFX0hXX0RPTkUsIEJJVCgyOSksIEJJVCgxKSB9LAorCVtSU1RfREVDT01QUkVTU10JPSB7 IDB4NWMsIFJTVF9UWVBFX0hXX0RPTkUsIEJJVCgzMSksIEJJVCgwKSB9LAorCVtSU1RfU1JBTV0J CT0geyAweDY0LCBSU1RfVFlQRV9IV19ET05FLCBCSVQoMjgpLCBCSVQoMCkgfSwKKwlbUlNUX1NI Uk1fQVhJTV0JCT0geyAweDY0LCBSU1RfVFlQRV9IV19ET05FLCBCSVQoMzApLCBCSVQoMikgfSwK KwlbUlNUX1NIUk1fQVhJU10JCT0geyAweDY0LCBSU1RfVFlQRV9IV19ET05FLCBCSVQoMzEpLCBC SVQoMykgfSwKKwlbUlNUX05PTkFJMkRdCQk9IHsgMHg2YywgUlNUX1RZUEVfSFdfRE9ORSwgQklU KDMxKSwgQklUKDApIH0sCisJW1JTVF9NQ1RMXQkJPSB7IDB4NzQsIFJTVF9UWVBFX0hXX0RPTkUs IEJJVCgzMSksIEJJVCgwKSB9LAorCVtSU1RfSVNQXQkJPSB7IDB4ODAsIFJTVF9UWVBFX0hXX0RP TkUsIEJJVCgyOSksIEJJVCg2KSB9LAorCVtSU1RfSVNQX0RXXQkJPSB7IDB4ODAsIFJTVF9UWVBF X0hXX0RPTkUsIEJJVCgyOCksIEJJVCg1KSB9LAorCVtSU1RfRFBVXQkJPSB7IDB4ODgsIFJTVF9U WVBFX0hXX0RPTkUsIEJJVCgzMSksIEJJVCgwKSB9LAorCVtSU1RfRElTUF0JCT0geyAweDkwLCBS U1RfVFlQRV9IV19ET05FLCBCSVQoMzEpLCBCSVQoMCkgfSwKKwlbUlNUX0dQVV0JCT0geyAweDk4 LCBSU1RfVFlQRV9IV19ET05FLCBCSVQoMzEpLCBCSVQoMCkgfSwKKwlbUlNUX0FVRElPXQkJPSB7 IDB4YTQsIFJTVF9UWVBFX0hXX0RPTkUsIEJJVCgzMSksIEJJVCgwKSB9LAorCVtSU1RfVElNRVIw XQkJPSB7IDB4MjAsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgwKSB9LAorCVtSU1Rf VElNRVIxXQkJPSB7IDB4MjAsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgxKSB9LAor CVtSU1RfVElNRVIyXQkJPSB7IDB4MjAsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgy KSB9LAorCVtSU1RfVElNRVIzXQkJPSB7IDB4MjAsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAg IEJJVCgzKSB9LAorCVtSU1RfVElNRVI0XQkJPSB7IDB4MjAsIFJTVF9UWVBFX1NXX0RPTkUsIDAs ICAgICAgIEJJVCg0KSB9LAorCVtSU1RfVElNRVI1XQkJPSB7IDB4MjAsIFJTVF9UWVBFX1NXX0RP TkUsIDAsICAgICAgIEJJVCg1KSB9LAorCVtSU1RfVElNRVJfQVBCXQkJPSB7IDB4MjAsIFJTVF9U WVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCg2KSB9LAorCVtSU1RfSERJXQkJPSB7IDB4MjAsIFJT VF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCg3KSB9LAorCVtSU1RfV0RUMF0JCT0geyAweDIw LCBSU1RfVFlQRV9TV19ET05FLCAwLCAgICAgICBCSVQoMTIpIH0sCisJW1JTVF9XRFQxXQkJPSB7 IDB4MjAsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgxMykgfSwKKwlbUlNUX1dEVDBf QVBCXQkJPSB7IDB4MjAsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgxNCkgfSwKKwlb UlNUX1dEVDFfQVBCXQkJPSB7IDB4MjAsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgx NSkgfSwKKwlbUlNUX1RTX0FQQl0JCT0geyAweDIwLCBSU1RfVFlQRV9TV19ET05FLCAwLCAgICAg ICBCSVQoMTYpIH0sCisJW1JTVF9NQUlMQk9YXQkJPSB7IDB4MjAsIFJTVF9UWVBFX1NXX0RPTkUs IDAsICAgICAgIEJJVCgxNykgfSwKKwlbUlNUX1NUQ10JCT0geyAweDIwLCBSU1RfVFlQRV9TV19E T05FLCAwLCAgICAgICBCSVQoMTgpIH0sCisJW1JTVF9QTVVdCQk9IHsgMHgyMCwgUlNUX1RZUEVf U1dfRE9ORSwgMCwgICAgICAgQklUKDE5KSB9LAorCVtSU1RfTE9TWVNfQVBCXQkJPSB7IDB4MjQs IFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgwKSB9LAorCVtSU1RfVUFSVDBdCQk9IHsg MHgyNCwgUlNUX1RZUEVfU1dfRE9ORSwgMCwgICAgICAgQklUKDEpIH0sCisJW1JTVF9VQVJUMV0J CT0geyAweDI0LCBSU1RfVFlQRV9TV19ET05FLCAwLCAgICAgICBCSVQoMikgfSwKKwlbUlNUX1VB UlQyXQkJPSB7IDB4MjQsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgzKSB9LAorCVtS U1RfVUFSVDNdCQk9IHsgMHgyNCwgUlNUX1RZUEVfU1dfRE9ORSwgMCwgICAgICAgQklUKDQpIH0s CisJW1JTVF9VQVJUNF0JCT0geyAweDI0LCBSU1RfVFlQRV9TV19ET05FLCAwLCAgICAgICBCSVQo NSkgfSwKKwlbUlNUX0kyQzBdCQk9IHsgMHgyNCwgUlNUX1RZUEVfU1dfRE9ORSwgMCwgICAgICAg QklUKDYpIH0sCisJW1JTVF9JMkMxXQkJPSB7IDB4MjQsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAg ICAgIEJJVCg3KSB9LAorCVtSU1RfSTJDMl0JCT0geyAweDI0LCBSU1RfVFlQRV9TV19ET05FLCAw LCAgICAgICBCSVQoOCkgfSwKKwlbUlNUX0kyQzNdCQk9IHsgMHgyNCwgUlNUX1RZUEVfU1dfRE9O RSwgMCwgICAgICAgQklUKDkpIH0sCisJW1JTVF9JMkM0XQkJPSB7IDB4MjQsIFJTVF9UWVBFX1NX X0RPTkUsIDAsICAgICAgIEJJVCgxMCkgfSwKKwlbUlNUX0pBTUxJTkswX0FQQl0JPSB7IDB4MjQs IFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgxMSkgfSwKKwlbUlNUX0pBTUxJTksxX0FQ Ql0JPSB7IDB4MjQsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgxMikgfSwKKwlbUlNU X0pBTUxJTksyX0FQQl0JPSB7IDB4MjQsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgx MykgfSwKKwlbUlNUX0pBTUxJTkszX0FQQl0JPSB7IDB4MjQsIFJTVF9UWVBFX1NXX0RPTkUsIDAs ICAgICAgIEJJVCgxNCkgfSwKKwlbUlNUX0NPREVDX0FQQl0JCT0geyAweDI0LCBSU1RfVFlQRV9T V19ET05FLCAwLCAgICAgICBCSVQoMTcpIH0sCisJW1JTVF9HUElPX0RCXQkJPSB7IDB4MjQsIFJT VF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgxOCkgfSwKKwlbUlNUX0dQSU9fQVBCXQkJPSB7 IDB4MjQsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgxOSkgfSwKKwlbUlNUX0FEQ10J CT0geyAweDI0LCBSU1RfVFlQRV9TV19ET05FLCAwLCAgICAgICBCSVQoMjApIH0sCisJW1JTVF9B RENfQVBCXQkJPSB7IDB4MjQsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgyMSkgfSwK KwlbUlNUX1BXTV9BUEJdCQk9IHsgMHgyNCwgUlNUX1RZUEVfU1dfRE9ORSwgMCwgICAgICAgQklU KDIyKSB9LAorCVtSU1RfU0hSTV9BUEJdCQk9IHsgMHg2NCwgUlNUX1RZUEVfU1dfRE9ORSwgMCwg ICAgICAgQklUKDEpIH0sCisJW1JTVF9DU0kwXQkJPSB7IDB4ODAsIFJTVF9UWVBFX1NXX0RPTkUs IDAsICAgICAgIEJJVCgwKSB9LAorCVtSU1RfQ1NJMV0JCT0geyAweDgwLCBSU1RfVFlQRV9TV19E T05FLCAwLCAgICAgICBCSVQoMSkgfSwKKwlbUlNUX0NTSTJdCQk9IHsgMHg4MCwgUlNUX1RZUEVf U1dfRE9ORSwgMCwgICAgICAgQklUKDIpIH0sCisJW1JTVF9DU0lfRFBIWV0JCT0geyAweDgwLCBS U1RfVFlQRV9TV19ET05FLCAwLCAgICAgICBCSVQoMykgfSwKKwlbUlNUX0lTUF9BSEJdCQk9IHsg MHg4MCwgUlNUX1RZUEVfU1dfRE9ORSwgMCwgICAgICAgQklUKDQpIH0sCisJW1JTVF9NMF0JCT0g eyAweDgwLCBSU1RfVFlQRV9TV19ET05FLCAwLCAgICAgICBCSVQoNykgfSwKKwlbUlNUX00xXQkJ PSB7IDB4ODAsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCg4KSB9LAorCVtSU1RfTTJd CQk9IHsgMHg4MCwgUlNUX1RZUEVfU1dfRE9ORSwgMCwgICAgICAgQklUKDkpIH0sCisJW1JTVF9T UEkyQVhJXQkJPSB7IDB4YTgsIFJTVF9UWVBFX1NXX0RPTkUsIDAsICAgICAgIEJJVCgwKSB9Cit9 OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBrMjMwX3JzdCAqdG9fazIzMF9yc3Qoc3RydWN0IHJl c2V0X2NvbnRyb2xsZXJfZGV2ICpyY2RldikKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHJjZGV2 LCBzdHJ1Y3QgazIzMF9yc3QsIHJjZGV2KTsKK30KKworc3RhdGljIHZvaWQgazIzMF9yc3RfY2xl YXJfZG9uZShzdHJ1Y3QgazIzMF9yc3QgKnJzdGMsIHVuc2lnbmVkIGxvbmcgaWQsCisJCQkJYm9v bCB3cml0ZV9lbikKK3sKKwljb25zdCBzdHJ1Y3QgazIzMF9yc3RfbWFwICpybWFwID0gJmsyMzBf cmVzZXRzW2lkXTsKKwl1MzIgcmVnOworCisJZ3VhcmQoc3BpbmxvY2tfaXJxc2F2ZSkoJnJzdGMt PmxvY2spOworCisJcmVnID0gcmVhZGwocnN0Yy0+YmFzZSArIHJtYXAtPm9mZnNldCk7CisJcmVn IHw9IHJtYXAtPmRvbmU7IC8qIHdyaXRlIDEgdG8gY2xlYXIgKi8KKwlpZiAod3JpdGVfZW4pCisJ CXJlZyB8PSBybWFwLT5kb25lIDw8IDE2OworCXdyaXRlbChyZWcsIHJzdGMtPmJhc2UgKyBybWFw LT5vZmZzZXQpOworfQorCitzdGF0aWMgaW50IGsyMzBfcnN0X3dhaXRfYW5kX2NsZWFyX2RvbmUo c3RydWN0IGsyMzBfcnN0ICpyc3RjLCB1bnNpZ25lZCBsb25nIGlkLAorCQkJCQlib29sIHdyaXRl X2VuKQoreworCWNvbnN0IHN0cnVjdCBrMjMwX3JzdF9tYXAgKnJtYXAgPSAmazIzMF9yZXNldHNb aWRdOworCXUzMiByZWc7CisJaW50IHJldDsKKworCXJldCA9IHJlYWRsX3BvbGxfdGltZW91dChy c3RjLT5iYXNlICsgcm1hcC0+b2Zmc2V0LCByZWcsCisJCQkJIHJlZyAmIHJtYXAtPmRvbmUsIDEw LCAxMDAwKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIocnN0Yy0+cmNkZXYuZGV2LCAiV2FpdCBm b3IgcmVzZXQgZG9uZSB0aW1lb3V0XG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlrMjMwX3Jz dF9jbGVhcl9kb25lKHJzdGMsIGlkLCB3cml0ZV9lbik7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQgazIzMF9yc3RfdXBkYXRlKHN0cnVjdCBrMjMwX3JzdCAqcnN0YywgdW5zaWduZWQg bG9uZyBpZCwKKwkJCSAgICBib29sIGFzc2VydCwgYm9vbCB3cml0ZV9lbiwgYm9vbCBhY3RpdmVf bG93KQoreworCWNvbnN0IHN0cnVjdCBrMjMwX3JzdF9tYXAgKnJtYXAgPSAmazIzMF9yZXNldHNb aWRdOworCXUzMiByZWc7CisKKwlndWFyZChzcGlubG9ja19pcnFzYXZlKSgmcnN0Yy0+bG9jayk7 CisKKwlyZWcgPSByZWFkbChyc3RjLT5iYXNlICsgcm1hcC0+b2Zmc2V0KTsKKwlpZiAoYXNzZXJ0 IF4gYWN0aXZlX2xvdykKKwkJcmVnIHw9IHJtYXAtPnJlc2V0OworCWVsc2UKKwkJcmVnICY9IH5y bWFwLT5yZXNldDsKKwlpZiAod3JpdGVfZW4pCisJCXJlZyB8PSBybWFwLT5yZXNldCA8PCAxNjsK Kwl3cml0ZWwocmVnLCByc3RjLT5iYXNlICsgcm1hcC0+b2Zmc2V0KTsKK30KKworc3RhdGljIGlu dCBrMjMwX3JzdF9hc3NlcnQoc3RydWN0IHJlc2V0X2NvbnRyb2xsZXJfZGV2ICpyY2RldiwgdW5z aWduZWQgbG9uZyBpZCkKK3sKKwlzdHJ1Y3QgazIzMF9yc3QgKnJzdGMgPSB0b19rMjMwX3JzdChy Y2Rldik7CisKKwlzd2l0Y2ggKGsyMzBfcmVzZXRzW2lkXS50eXBlKSB7CisJY2FzZSBSU1RfVFlQ RV9DUFUxOgorCQlrMjMwX3JzdF91cGRhdGUocnN0YywgaWQsIHRydWUsIHRydWUsIGZhbHNlKTsK KwkJYnJlYWs7CisJY2FzZSBSU1RfVFlQRV9TV19ET05FOgorCQlrMjMwX3JzdF91cGRhdGUocnN0 YywgaWQsIHRydWUsIGZhbHNlLAorCQkJCWlkID09IFJTVF9TUEkyQVhJID8gZmFsc2UgOiB0cnVl KTsKKwkJYnJlYWs7CisJY2FzZSBSU1RfVFlQRV9DUFUwOgorCWNhc2UgUlNUX1RZUEVfRkxVU0g6 CisJY2FzZSBSU1RfVFlQRV9IV19ET05FOgorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJfQorCisJ LyoKKwkgKiBUaGUgdGltZSBwZXJpb2Qgd2hlbiByZXNldCBpcyBhcHBsaWVkIGJ1dCB0aGUgY2xv Y2sgaXMgc3RvcHBlZCBmb3IKKwkgKiBSU1RfVFlQRV9DUFUxIGFuZCBSU1RfVFlQRV9TV19ET05F IGNhbiBiZSBzZXQgdXAgdG8gMy43NXVzLiBEZWxheQorCSAqIDEwdXMgdG8gZW5zdXJlIHByb3Bl ciByZXNldCB0aW1pbmcuCisJICovCisJdWRlbGF5KDEwKTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGsyMzBfcnN0X2RlYXNzZXJ0KHN0cnVjdCByZXNldF9jb250cm9sbGVyX2RldiAq cmNkZXYsCisJCQkgICAgIHVuc2lnbmVkIGxvbmcgaWQpCit7CisJc3RydWN0IGsyMzBfcnN0ICpy c3RjID0gdG9fazIzMF9yc3QocmNkZXYpOworCWludCByZXQgPSAwOworCisJc3dpdGNoIChrMjMw X3Jlc2V0c1tpZF0udHlwZSkgeworCWNhc2UgUlNUX1RZUEVfQ1BVMToKKwkJazIzMF9yc3RfdXBk YXRlKHJzdGMsIGlkLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworCQlyZXQgPSBrMjMwX3JzdF93YWl0 X2FuZF9jbGVhcl9kb25lKHJzdGMsIGlkLCB0cnVlKTsKKwkJYnJlYWs7CisJY2FzZSBSU1RfVFlQ RV9TV19ET05FOgorCQlrMjMwX3JzdF91cGRhdGUocnN0YywgaWQsIGZhbHNlLCBmYWxzZSwKKwkJ CQlpZCA9PSBSU1RfU1BJMkFYSSA/IGZhbHNlIDogdHJ1ZSk7CisJCWJyZWFrOworCWNhc2UgUlNU X1RZUEVfQ1BVMDoKKwljYXNlIFJTVF9UWVBFX0ZMVVNIOgorCWNhc2UgUlNUX1RZUEVfSFdfRE9O RToKKwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCX0KKworCS8qCisJICogVGhlIHRpbWUgcGVyaW9k IHdoZW4gcmVzZXQgaXMgcmVtb3ZlZCBidXQgdGhlIGNsb2NrIGlzIHN0b3BwZWQgZm9yCisJICog UlNUX1RZUEVfQ1BVMSBhbmQgUlNUX1RZUEVfU1dfRE9ORSBjYW4gYmUgc2V0IHVwIHRvIDMuNzV1 cy4gRGVsYXkKKwkgKiAxMHVzIHRvIGVuc3VyZSBwcm9wZXIgcmVzZXQgdGltaW5nLgorCSAqLwor CXVkZWxheSgxMCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGsyMzBfcnN0X3Jl c2V0KHN0cnVjdCByZXNldF9jb250cm9sbGVyX2RldiAqcmNkZXYsIHVuc2lnbmVkIGxvbmcgaWQp Cit7CisJc3RydWN0IGsyMzBfcnN0ICpyc3RjID0gdG9fazIzMF9yc3QocmNkZXYpOworCWNvbnN0 IHN0cnVjdCBrMjMwX3JzdF9tYXAgKnJtYXAgPSAmazIzMF9yZXNldHNbaWRdOworCXUzMiByZWc7 CisJaW50IHJldCA9IDA7CisKKwlzd2l0Y2ggKHJtYXAtPnR5cGUpIHsKKwljYXNlIFJTVF9UWVBF X0NQVTA6CisJCWsyMzBfcnN0X2NsZWFyX2RvbmUocnN0YywgaWQsIHRydWUpOworCQlrMjMwX3Jz dF91cGRhdGUocnN0YywgaWQsIHRydWUsIHRydWUsIGZhbHNlKTsKKwkJcmV0ID0gazIzMF9yc3Rf d2FpdF9hbmRfY2xlYXJfZG9uZShyc3RjLCBpZCwgdHJ1ZSk7CisKKwkJLyoKKwkJICogVGhlIHRp bWUgcGVyaW9kIHdoZW4gcmVzZXQgaXMgYXBwbGllZCBhbmQgcmVtb3ZlZCBidXQgdGhlCisJCSAq IGNsb2NrIGlzIHN0b3BwZWQgZm9yIFJTVF9UWVBFX0NQVTAgY2FuIGJlIHNldCB1cCB0byA3LjV1 cy4KKwkJICogRGVsYXkgMTB1cyB0byBlbnN1cmUgcHJvcGVyIHJlc2V0IHRpbWluZy4KKwkJICov CisJCXVkZWxheSgxMCk7CisKKwkJYnJlYWs7CisJY2FzZSBSU1RfVFlQRV9GTFVTSDoKKwkJazIz MF9yc3RfdXBkYXRlKHJzdGMsIGlkLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisKKwkJLyogV2FpdCBm bHVzaCByZXF1ZXN0IGJpdCBhdXRvIGNsZWFyZWQgYnkgaGFyZHdhcmUgKi8KKwkJcmV0ID0gcmVh ZGxfcG9sbF90aW1lb3V0KHJzdGMtPmJhc2UgKyBybWFwLT5vZmZzZXQsIHJlZywKKwkJCQkJIShy ZWcgJiBybWFwLT5yZXNldCksIDEwLCAxMDAwKTsKKwkJaWYgKHJldCkKKwkJCWRldl9lcnIocmNk ZXYtPmRldiwgIldhaXQgZm9yIGZsdXNoIGRvbmUgdGltZW91dFxuIik7CisKKwkJYnJlYWs7CisJ Y2FzZSBSU1RfVFlQRV9IV19ET05FOgorCQlrMjMwX3JzdF9jbGVhcl9kb25lKHJzdGMsIGlkLCBm YWxzZSk7CisJCWsyMzBfcnN0X3VwZGF0ZShyc3RjLCBpZCwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsK KwkJcmV0ID0gazIzMF9yc3Rfd2FpdF9hbmRfY2xlYXJfZG9uZShyc3RjLCBpZCwgZmFsc2UpOwor CisJCS8qCisJCSAqIFRoZSB0aW1lIHBlcmlvZCB3aGVuIHJlc2V0IGlzIGFwcGxpZWQgYW5kIHJl bW92ZWQgYnV0IHRoZQorCQkgKiBjbG9jayBpcyBzdG9wcGVkIGZvciBSU1RfVFlQRV9IV19ET05F IGNhbiBiZSBzZXQgdXAgdG8KKwkJICogMTI3LjV1cy4gRGVsYXkgMjAwdXMgdG8gZW5zdXJlIHBy b3BlciByZXNldCB0aW1pbmcuCisJCSAqLworCQlmc2xlZXAoMjAwKTsKKworCQlicmVhazsKKwlj YXNlIFJTVF9UWVBFX0NQVTE6CisJY2FzZSBSU1RfVFlQRV9TV19ET05FOgorCQlrMjMwX3JzdF9h c3NlcnQocmNkZXYsIGlkKTsKKwkJcmV0ID0gazIzMF9yc3RfZGVhc3NlcnQocmNkZXYsIGlkKTsK KwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBy ZXNldF9jb250cm9sX29wcyBrMjMwX3JzdF9vcHMgPSB7CisJLnJlc2V0CQk9IGsyMzBfcnN0X3Jl c2V0LAorCS5hc3NlcnQJCT0gazIzMF9yc3RfYXNzZXJ0LAorCS5kZWFzc2VydAk9IGsyMzBfcnN0 X2RlYXNzZXJ0LAorfTsKKworc3RhdGljIGludCBrMjMwX3JzdF9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJ c3RydWN0IGsyMzBfcnN0ICpyc3RjOworCisJcnN0YyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVv ZigqcnN0YyksIEdGUF9LRVJORUwpOworCWlmICghcnN0YykKKwkJcmV0dXJuIC1FTk9NRU07CisK Kwlyc3RjLT5iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOwor CWlmIChJU19FUlIocnN0Yy0+YmFzZSkpCisJCXJldHVybiBQVFJfRVJSKHJzdGMtPmJhc2UpOwor CisJc3Bpbl9sb2NrX2luaXQoJnJzdGMtPmxvY2spOworCisJcnN0Yy0+cmNkZXYuZGV2CQk9IGRl djsKKwlyc3RjLT5yY2Rldi5vd25lcgk9IFRISVNfTU9EVUxFOworCXJzdGMtPnJjZGV2Lm9wcwkJ PSAmazIzMF9yc3Rfb3BzOworCXJzdGMtPnJjZGV2Lm5yX3Jlc2V0cwk9IEFSUkFZX1NJWkUoazIz MF9yZXNldHMpOworCXJzdGMtPnJjZGV2Lm9mX25vZGUJPSBkZXYtPm9mX25vZGU7CisKKwlyZXR1 cm4gZGV2bV9yZXNldF9jb250cm9sbGVyX3JlZ2lzdGVyKGRldiwgJnJzdGMtPnJjZGV2KTsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgazIzMF9yc3RfbWF0Y2hbXSA9IHsK Kwl7IC5jb21wYXRpYmxlID0gImNhbmFhbixrMjMwLXJzdCIsIH0sCisJeyAvKiBzZW50aW5lbCAq LyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgazIzMF9yc3RfbWF0Y2gpOworCitzdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBrMjMwX3JzdF9kcml2ZXIgPSB7CisJLnByb2JlID0g azIzMF9yc3RfcHJvYmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSAiazIzMC1yc3QiLAorCQku b2ZfbWF0Y2hfdGFibGUgPSBrMjMwX3JzdF9tYXRjaCwKKwl9Cit9OworbW9kdWxlX3BsYXRmb3Jt X2RyaXZlcihrMjMwX3JzdF9kcml2ZXIpOworCitNT0RVTEVfQVVUSE9SKCJKdW5odWkgTGl1IDxq dW5odWkubGl1QHBpZ21vcmFsLnRlY2g+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIkNhbmFhbiBL MjMwIHJlc2V0IGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwoKLS0gCjIuNDkuMAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJp c2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK