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 4B71FC43458 for ; Wed, 1 Jul 2026 07:21:53 +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:MIME-Version:Reply-To:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: References:In-Reply-To:Cc:To:Subject:From:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=M84dMeDjmHV+1rPGeOOM2e/GyKooAsE9sPNXSoAW4lc=; b=akkmPevxkk5HLr X3OttJ1z+7w0AKrFSEf+xsktiu602+grWepqiFVQV6fpeRXh+UrAEyJPWuXKtA5OfEAPSmDfolg1A 7WiHDEsKC9ivYIxQqgzXk9Z8jJC70XirkDf1cXlpHsrsH4QXGLwGQEsMjxvmJCoHnhBD3YGmGtmFO zG475ZEIvV56PLivsznmRvIrlcXw+iNgoT7OUi6JzXGLFXsBv/UN8wBq9LJwaQ6HQv0OhJ6y6zKmX 5gFz39APnY1nIK/Pu2zTBsWwLQeQIAsIF6PBCqSSx2oUgt3B4tAl0ltxm37mHUXfB7Fl3COEzvPTF ihP8CLFvhjiyfHBJKxqA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wepGa-00000000t8R-42h1; Wed, 01 Jul 2026 07:21:52 +0000 Received: from tor.source.kernel.org ([172.105.4.254]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wepGa-00000000t7v-0UPV for linux-i3c@lists.infradead.org; Wed, 01 Jul 2026 07:21:52 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id EB3A46001D; Wed, 1 Jul 2026 07:21:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 644591F000E9; Wed, 1 Jul 2026 07:21:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1782890509; bh=PaZGdD9q9xZamgNJ0r23YnjXVsMdBr4p5FcYZVh9iaE=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=WzqriLQvnzAWSuGlyePLAM3sPOeBfQld96spd1/SWdNFbrbOoIwPc2TtCcaCYKFPe 6bmKMdWMZJGpjnR7OkoIfoONqhDMyM6XrUt4cxUqZ5bxijS1WJJXKjij5vnIrdCZOR 9xdUYDMwgi7lqpZ4XEmxaRKgtVEtrv/GXp62P/nghsT31lNYzH418LbIpVOBomgytB KjrGVGrWDoOeEV6JlZXS762oYbyZ2mzu7GU+03iw08BvZ4cW+anE7xzGWYwCcV5Naj 2u9DaAaJVAs5qp8RYgQwpmZAkuSeFqwuiMYPDbsmUGCXYOOfbt1be0GQgNphaEjSyd Il3Fr/YxjU9Ig== From: sashiko-bot@kernel.org Subject: Re: [PATCH v13 6/7] i3c: hub: p3h2x4x: Add support for NXP P3H2x4x I3C hub functionality To: "Lakshay Piplani" Cc: devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org, linux-i3c@lists.infradead.org, Frank.Li@kernel.org, "Alexandre Belloni" In-Reply-To: <20260701065755.2067793-7-lakshay.piplani@nxp.com> References: <20260701065755.2067793-1-lakshay.piplani@nxp.com> <20260701065755.2067793-7-lakshay.piplani@nxp.com> Date: Wed, 01 Jul 2026 07:21:48 +0000 Message-Id: <20260701072149.644591F000E9@smtp.kernel.org> X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=archiver.kernel.org@lists.infradead.org VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NSBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIFVucHJvdGVjdGVkIGFu ZCB0ZW1wb3JhcnkgcmVhc3NpZ25tZW50IG9mIGEgbGl2ZSBkZXZpY2UncyBgb2Zfbm9kZWAgY3Jl YXRlcyBhIGRhdGEgcmFjZSwgYW5kIG1pc3NpbmcgcmVzdG9yYXRpb24gb24gdGhlIGVycm9yIHBh dGggY2F1c2VzIHJlZmVyZW5jZSBjb3VudCBsZWFrcyBhbmQgYSBkb3VibGUtZnJlZS4KLSBbSGln aF0gYHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dGAgaXMgY29uZmlndXJlZCB3aXRoIGEgMTBtcyBz bGVlcCBpbnRlcnZhbCB0aGF0IHZhc3RseSBleGNlZWRzIHRoZSBhY3R1YWwgdG90YWwgdGltZW91 dCwgYXJ0aWZpY2lhbGx5IGRlbGF5aW5nIGV2ZXJ5IHRyYW5zYWN0aW9uIGFuZCBjYXVzaW5nIHNw dXJpb3VzIHRpbWVvdXRzLgotIFtIaWdoXSBGYWlsdXJlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3Ig YW4gSTJDIGFkYXB0ZXIgbGVhdmVzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBhZGFwdGVycyBhY3Rp dmUgYnV0IHdpdGggZnJlZWQgYmFja2luZyBtZW1vcnksIGxlYWRpbmcgdG8gYSBVc2UtQWZ0ZXIt RnJlZS4KLSBbTWVkaXVtXSBMb29wIGNvdW50ZXJzIGBtc2dfY291bnRgIGFuZCBgbnhmZXJzX2lg IGFyZSBgdThgLCBjYXVzaW5nIGluZmluaXRlIGxvb3BzIGlmIHRoZSB0cmFuc2ZlciBjb3VudCBg bnVtYCBpcyA+PSAyNTYuCi0gW01lZGl1bV0gUmFjZSBjb25kaXRpb24gYmV0d2VlbiB0aGUgSTND IGh1YiBkcml2ZXIgYW5kIG90aGVyIE1GRCBjaGlsZCBkcml2ZXJzIG92ZXIgdGhlIHNoYXJlZCBg UDNIMlg0WF9ERVZfUkVHX1BST1RFQ1RJT05fQ09ERWAgcmVnaXN0ZXIuCi0tCgpjb21taXQgMzcx OThkMTlmNjEzNzM2ODcyYjZmMWZkNGY5YTc1NTk3YjFmMGFiMQpBdXRob3I6IEFtYW4gS3VtYXIg UGFuZGV5IDxhbWFuLmt1bWFycGFuZGV5QG54cC5jb20+CgppM2M6IGh1YjogcDNoMng0eDogQWRk IHN1cHBvcnQgZm9yIE5YUCBQM0gyeDR4IEkzQyBodWIgZnVuY3Rpb25hbGl0eQoKVGhpcyBwYXRj aCBhZGRzIEkzQyBodWIgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIE5YUCBQM0gyeDR4IGZhbWlseSBv ZiBtdWx0aXBvcnQKaHVicy4gSXQgZW5hYmxlcyBJM0MvSTJDIGNvbW11bmljYXRpb24gYmV0d2Vl biBob3N0IGFuZCBodWIsIGRvd25zdHJlYW0gZGV2aWNlCnN1cHBvcnQsIGFuZCB0YXJnZXQgcG9y dCBjb25maWd1cmF0aW9uLgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pM2MvaHViL3AzaDI4NDBf aTNjX2h1Yl9jb21tb24uYyBiL2RyaXZlcnMvaTNjL2h1Yi9wM2gyODQwX2kzY19odWJfY29tbW9u LmMKPiAtLS0gYS9kcml2ZXJzL2kzYy9odWIvcDNoMjg0MF9pM2NfaHViX2NvbW1vbi5jCj4gKysr IGIvZHJpdmVycy9pM2MvaHViL3AzaDI4NDBfaTNjX2h1Yl9jb21tb24uYwpbIC4uLiBdCj4gK3N0 YXRpYyBpbnQgcDNoMng0eF9pM2NfaHViX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCj4gK3sKPiArCXN0cnVjdCBwM2gyeDR4X2RldiAqcDNoMng0eCA9IGRldl9nZXRfZHJ2ZGF0 YShwZGV2LT5kZXYucGFyZW50KTsKPiArCXN0cnVjdCBwM2gyeDR4X2kzY19odWJfZGV2ICpwM2gy eDR4X2kzY19odWI7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ICsJc3Ry dWN0IGRldmljZV9ub2RlICpub2RlOwo+ICsJaW50IHJldCwgaTsKWyAuLi4gXQo+ICsJLyogVW5s b2NrIGFjY2VzcyB0byBwcm90ZWN0ZWQgcmVnaXN0ZXJzICovCj4gKwlyZXQgPSByZWdtYXBfd3Jp dGUocDNoMng0eF9pM2NfaHViLT5yZWdtYXAsIFAzSDJYNFhfREVWX1JFR19QUk9URUNUSU9OX0NP REUsCj4gKwkJCSAgIFAzSDJYNFhfUkVHSVNURVJTX1VOTE9DS19DT0RFKTsKCltTZXZlcml0eTog TWVkaXVtXQpDb3VsZCB0aGlzIGdsb2JhbCB1bmxvY2sgcmFjZSB3aXRoIG90aGVyIE1GRCBjaGls ZCBkcml2ZXJzIChzdWNoIGFzIHRoZQpvbi1kaWUgcmVndWxhdG9yKT8gCgpCZWNhdXNlIHRoZSBw cm90ZWN0ZWQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIHVubG9ja2VkIGF0IHRoZSBzdGFy dCBvZgpwM2gyeDR4X2kzY19odWJfcHJvYmUoKSBhbmQgbGVmdCB1bmxvY2tlZCBkdXJpbmcgdGhl IGVudGlyZSBoYXJkd2FyZQpjb25maWd1cmF0aW9uIGFuZCBkZXZpY2UgZGlzY292ZXJ5IHdpbmRv dyAod2hpY2ggaW5jbHVkZXMgc2xlZXBpbmcgaW4KaTNjX21hc3Rlcl9kb19kYWEoKSksIGEgY29u Y3VycmVudCBNRkQgY2hpbGQgZHJpdmVyIGNvdWxkIGFjY2VzcyBpdHMgb3duCnJlZ2lzdGVycyBh bmQgcmUtbG9jayB0aGUgcHJvdGVjdGlvbiBjb2RlLiBJZiB0aGF0IGhhcHBlbnMsIHN1YnNlcXVl bnQKaGFyZHdhcmUgY29uZmlndXJhdGlvbiB3cml0ZXMgaW4gdGhpcyBmdW5jdGlvbiBtaWdodCBm YWlsIHNpbGVudGx5LgoKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2 LCByZXQsICJGYWlsZWQgdG8gdW5sb2NrIEhVQidzIHByb3RlY3RlZCByZWdpc3RlcnNcbiIpOwo+ ICsKPiArCXJldCA9IGRldm1fYWRkX2FjdGlvbl9vcl9yZXNldChkZXYsIHAzaDJ4NHhfbG9ja19y ZWdpc3RlcnNfYWN0aW9uLAo+ICsJCQkJICAgICAgIHAzaDJ4NHhfaTNjX2h1Yik7Cj4gKwlpZiAo cmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gcDNoMng0eF9jb25maWd1cmVfaHco ZGV2KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJG YWlsZWQgdG8gY29uZmlndXJlIHRoZSBIVUJcbiIpOwpbIC4uLiBdCgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2kzYy9odWIvcDNoMjg0MF9pM2NfaHViX2kzYy5jIGIvZHJpdmVycy9pM2MvaHViL3Az aDI4NDBfaTNjX2h1Yl9pM2MuYwo+IC0tLSBhL2RyaXZlcnMvaTNjL2h1Yi9wM2gyODQwX2kzY19o dWJfaTNjLmMKPiArKysgYi9kcml2ZXJzL2kzYy9odWIvcDNoMjg0MF9pM2NfaHViX2kzYy5jClsg Li4uIF0KPiAraW50IHAzaDJ4NHhfdHBfaTNjX2FsZ28oc3RydWN0IHAzaDJ4NHhfaTNjX2h1Yl9k ZXYgKnAzaDJ4NHhfaHViKQo+ICt7Cj4gKwlzdHJ1Y3QgaTNjX21hc3Rlcl9jb250cm9sbGVyICpw YXJlbnQgPSBpM2NfZGV2X2dldF9tYXN0ZXIocDNoMng0eF9odWItPmkzY2Rldi0+ZGVzYyk7Cj4g KwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm9yaWdfb2Zfbm9kZTsKPiArCXU4IHRwLCBudHdrX21hc2sg PSAwOwo+ICsJaW50IHJldDsKWyAuLi4gXQo+ICsJZm9yICh0cCA9IDA7IHRwIDwgUDNIMlg0WF9U UF9NQVhfQ09VTlQ7IHRwKyspIHsKPiArCQlpZiAoIXAzaDJ4NHhfaHViLT50cF9idXNbdHBdLm9m X25vZGUgfHwKPiArCQkgICAgcDNoMng0eF9odWItPmh1Yl9jb25maWcudHBfY29uZmlnW3RwXS5t b2RlICE9IFAzSDJYNFhfVFBfTU9ERV9JM0MpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQkvKgo+ ICsJCSAqIGkzY19tYXN0ZXJfcmVnaXN0ZXIoKSBkZXJpdmVzIGJ1cyBwb3B1bGF0aW9uIGZyb20g dGhlIHBhcmVudCBkZXZpY2Uncwo+ICsJCSAqIE9GIG5vZGUuIFRlbXBvcmFyaWx5IHN3aXRjaCB0 aGUgaHViIGRldmljZSB0byB0aGUgdGFyZ2V0LXBvcnQgbm9kZSBmb3IKPiArCQkgKiByZWdpc3Ry YXRpb24sIHRoZW4gcmVzdG9yZSB0aGUgb3JpZ2luYWwgbm9kZSBpbW1lZGlhdGVseS4KPiArCQkg Ki8KPiArCQlvcmlnX29mX25vZGUgPSBwM2gyeDR4X2h1Yi0+ZGV2LT5vZl9ub2RlOwo+ICsJCXAz aDJ4NHhfaHViLT5kZXYtPm9mX25vZGUgPSBwM2gyeDR4X2h1Yi0+dHBfYnVzW3RwXS5vZl9ub2Rl Owo+ICsKPiArCQlzdHJ1Y3QgaTNjX2h1Yl9jb250cm9sbGVyICpodWJfY29udHJvbGxlciA9Cj4g KwkJCQkmcDNoMng0eF9odWItPnRwX2J1c1t0cF0uaHViX2NvbnRyb2xsZXI7Cj4gKwkJc3RydWN0 IGkzY19tYXN0ZXJfY29udHJvbGxlciAqY29udHJvbGxlciA9ICZodWJfY29udHJvbGxlci0+Y29u dHJvbGxlcjsKPiArCj4gKwkJaHViX2NvbnRyb2xsZXItPnBhcmVudCA9IHBhcmVudDsKPiArCQlo dWJfY29udHJvbGxlci0+aHViID0gcDNoMng0eF9odWItPmh1YjsKPiArCj4gKwkJZGV2X3NldF9k cnZkYXRhKCZjb250cm9sbGVyLT5kZXYsIGh1Yl9jb250cm9sbGVyKTsKPiArCj4gKwkJcmV0ID0g aTNjX2h1Yl9yZXNlcnZlX3BhcmVudF9hZGRyc2xvdHNfZnJvbV9kdChodWJfY29udHJvbGxlciwK PiArCQkJCQkJCSAgICAgICBwM2gyeDR4X2h1Yi0+dHBfYnVzW3RwXS5vZl9ub2RlKTsKPiArCQlp ZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0OwoKW1NldmVyaXR5OiBIaWdoXQpXaWxsIHRoaXMgbGVh ayB0aGUgb3JpZ2luYWwgcGFyZW50IG5vZGUgcmVmZXJlbmNlIGFuZCBjYXVzZSBhIGRvdWJsZS1m cmVlIG9uCnRoZSB0YXJnZXQgbm9kZSBpZiBpM2NfaHViX3Jlc2VydmVfcGFyZW50X2FkZHJzbG90 c19mcm9tX2R0KCkgcmV0dXJucyBhbgplcnJvcj8KCklmIHRoZSBlYXJseSByZXR1cm4gaXMgdGFr ZW4sIGRldi0+b2Zfbm9kZSBpcyBuZXZlciByZXN0b3JlZCB0bwpvcmlnX29mX25vZGUuIFdoZW4g dGhlIHByb2JlIHVud2luZHMsIHRoZSBkZXZyZXMgY2xlYW51cCBmdW5jdGlvbgpwM2gyeDR4X3B1 dF90YXJnZXRfcG9ydF9vZl9ub2RlcygpIGRyb3BzIHRoZSB0YXJnZXQgbm9kZSdzIHJlZmVyZW5j ZS4KTGF0ZXIsIHdoZW4gdGhlIGRldmljZSBjb3JlIGRlc3Ryb3lzIHRoZSBkZXZpY2UsIGl0IHdp bGwgY2FsbApvZl9ub2RlX3B1dChkZXYtPm9mX25vZGUpIHdoaWNoIG5vdyBpbmNvcnJlY3RseSBw b2ludHMgdG8gdGhlIHRhcmdldCBub2RlCmFnYWluLCBjYXVzaW5nIGEgZG91YmxlLWZyZWUuCgpD b25jdXJyZW50bHksIG1vZGlmeWluZyBkZXYtPm9mX25vZGUgd2l0aG91dCBzeW5jaHJvbml6YXRp b24gY3JlYXRlcyBhIGRhdGEKcmFjZSBmb3IgY29uY3VycmVudCBzeXNmcyBvciB1ZXZlbnQgcmVh ZHMuCgo+ICsKPiArCQlyZXQgPSBpM2NfbWFzdGVyX3JlZ2lzdGVyKGNvbnRyb2xsZXIsCj4gKwkJ CQkJICBwM2gyeDR4X2h1Yi0+ZGV2LAo+ICsJCQkJCSAgaTNjX2h1Yl9tYXN0ZXJfb3BzKCksCj4g KwkJCQkJICBmYWxzZSk7Cj4gKwo+ICsJCXAzaDJ4NHhfaHViLT5kZXYtPm9mX25vZGUgPSBvcmln X29mX25vZGU7ClsgLi4uIF0KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTNjL2h1Yi9wM2gyODQw X2kzY19odWJfc21idXMuYyBiL2RyaXZlcnMvaTNjL2h1Yi9wM2gyODQwX2kzY19odWJfc21idXMu Ywo+IC0tLSBhL2RyaXZlcnMvaTNjL2h1Yi9wM2gyODQwX2kzY19odWJfc21idXMuYwo+ICsrKyBi L2RyaXZlcnMvaTNjL2h1Yi9wM2gyODQwX2kzY19odWJfc21idXMuYwpbIC4uLiBdCj4gK3N0YXRp YyBpbnQgcDNoMng0eF9yZWFkX3NtYnVzX3RyYW5zYWN0aW9uX3N0YXR1cyhzdHJ1Y3QgcDNoMng0 eF9pM2NfaHViX2RldiAqaHViLAo+ICsJCQkJCQkgdTggdGFyZ2V0X3BvcnRfc3RhdHVzLAo+ICsJ CQkJCQkgdTggZGF0YV9sZW5ndGgpCj4gK3sKPiArCXUzMiBzdGF0dXNfcmVhZDsKPiArCXU4IHN0 YXR1czsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0 KGh1Yi0+cmVnbWFwLCB0YXJnZXRfcG9ydF9zdGF0dXMsCj4gKwkJCQkgICAgICAgc3RhdHVzX3Jl YWQsCj4gKwkJCQkgICAgICAgc3RhdHVzX3JlYWQgJiBQM0gyWDRYX1NNQlVTX1RSQU5TQUNUSU9O X0ZJTklTSF9GTEFHLAo+ICsJCQkJICAgICAgIFAzSDJYNFhfUE9MTElOR19ST0xMX1BFUklPRF9N UyAqIDEwMDAsCj4gKwkJCQkgICAgICAgUDNIMlg0WF9TTUJVU180MDBrSHpfVFJBTlNGRVJfVElN RU9VVChkYXRhX2xlbmd0aCkpOwoKW1NldmVyaXR5OiBIaWdoXQpEb2VzIHRoaXMgcG9sbGluZyBj b25maWd1cmF0aW9uIGNhdXNlIHNwdXJpb3VzIHRpbWVvdXRzIG9yIHNldmVyZSBwZXJmb3JtYW5j ZQpwZW5hbHRpZXM/CgpUaGUgc2xlZXBfdXMgcGFyYW1ldGVyIGlzIHNldCB0byBQM0gyWDRYX1BP TExJTkdfUk9MTF9QRVJJT0RfTVMgKiAxMDAwLAp3aGljaCBpcyAxMCwwMDB1cyAoMTBtcykuIEhv d2V2ZXIsIHRoZSB0b3RhbCB0aW1lb3V0X3VzIHBhcmFtZXRlciBwcm92aWRlZApieSBQM0gyWDRY X1NNQlVTXzQwMGtIel9UUkFOU0ZFUl9USU1FT1VUKGRhdGFfbGVuZ3RoKSBpcyBzaWduaWZpY2Fu dGx5IHNtYWxsZXIKKGUuZy4sIGJldHdlZW4gMTAwdXMgYW5kIDIsMDAwdXMgZGVwZW5kaW5nIG9u IGRhdGEgbGVuZ3RoKS4KCklmIHRoZSB0cmFuc2FjdGlvbiBpcyBub3QgY29tcGxldGUgb24gdGhl IHZlcnkgZmlyc3QgcmVhZCwgdGhlIHRocmVhZCB3aWxsCnNsZWVwIGZvciBhIGZ1bGwgMTBtcywg ZHJhc3RpY2FsbHkgb3ZlcnNob290aW5nIHRoZSBpbnRlbmRlZCB0aW1lb3V0IGFuZApwb3RlbnRp YWxseSByZXR1cm5pbmcgYSBzcHVyaW91cyAtRVRJTUVET1VUIGRlcGVuZGluZyBvbiB0aGUgc3Rh dGUgd2hlbiBpdAp3YWtlcyB1cC4KCj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7ClsgLi4u IF0KPiArc3RhdGljIHMzMiBwM2gyeDR4X3RwX2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAq YWRhcCwgc3RydWN0IGkyY19tc2cgKm1zZ3MsIGludCBudW0pCj4gK3sKPiArCWludCByZXRfc3Vt ID0gMCwgcmV0Owo+ICsJdTggbXNnX2NvdW50LCBydzsKPiArCj4gKwlzdHJ1Y3QgdHBfYnVzICpi dXMgPSBpMmNfZ2V0X2FkYXBkYXRhKGFkYXApOwo+ICsJc3RydWN0IHAzaDJ4NHhfaTNjX2h1Yl9k ZXYgKnAzaDJ4NHhfaTNjX2h1YiA9IGJ1cy0+cDNoMng0eF9pM2NfaHViOwo+ICsKPiArCWd1YXJk KG11dGV4KSgmcDNoMng0eF9pM2NfaHViLT5ldHhfbXV0ZXgpOwo+ICsJZ3VhcmQobXV0ZXgpKCZi dXMtPnBvcnRfbXV0ZXgpOwo+ICsKPiArCWZvciAobXNnX2NvdW50ID0gMDsgbXNnX2NvdW50IDwg bnVtOyBtc2dfY291bnQrKykgewoKW1NldmVyaXR5OiBNZWRpdW1dCkNhbiB0aGlzIGxvb3AgcnVu IGluZmluaXRlbHkgaWYgdGhlIHRyYW5zZmVyIGNvdW50IChudW0pIGlzIGdyZWF0ZXIgdGhhbgpv ciBlcXVhbCB0byAyNTY/CgpUaGUgcGFyYW1ldGVyIG51bSBpcyBhIHNpZ25lZCAzMi1iaXQgaW50 ZWdlciwgYnV0IG1zZ19jb3VudCBpcyBkZWNsYXJlZCBhcwp1OC4gSWYgYW4gaW4ta2VybmVsIGRy aXZlciBzdWJtaXRzIGFuIEkyQyB0cmFuc2ZlciB3aXRoIDI1NiBvciBtb3JlCm1lc3NhZ2VzLCBt c2dfY291bnQgd2lsbCB3cmFwIGFyb3VuZCB0byAwIGJlZm9yZSBldmVyIHJlYWNoaW5nIG51bSwg bWFraW5nCnRoZSBsb29wIGNvbmRpdGlvbiBwZXJwZXR1YWxseSB0cnVlIGFuZCBjYXVzaW5nIGEg Q1BVIGxvY2t1cC4KCj4gKwkJaWYgKG1zZ3NbbXNnX2NvdW50XS5sZW4gPiBQM0gyWDRYX1NNQlVT X1BBWUxPQURfU0laRSkgewo+ICsJCQlkZXZfZXJyKHAzaDJ4NHhfaTNjX2h1Yi0+ZGV2LAo+ICsJ CQkJIk1lc3NhZ2UgbnIuICVkIG5vdCBzZW50IC0gbGVuZ3RoIG92ZXIgJWQgYnl0ZXMuXG4iLAo+ ICsJCQkJbXNnX2NvdW50LCBQM0gyWDRYX1NNQlVTX1BBWUxPQURfU0laRSk7Cj4gKwkJCXJldHVy biAtRUlOVkFMOwo+ICsJCX0KWyAuLi4gXQo+ICtpbnQgcDNoMng0eF90cF9zbWJ1c19hbGdvKHN0 cnVjdCBwM2gyeDR4X2kzY19odWJfZGV2ICpodWIpCj4gK3sKPiArCWludCByZXQ7Cj4gKwl1OCB0 cDsKPiArCj4gKwlmb3IgKHRwID0gMDsgdHAgPCBQM0gyWDRYX1RQX01BWF9DT1VOVDsgdHArKykg ewo+ICsJCWlmICghaHViLT50cF9idXNbdHBdLm9mX25vZGUgfHwKPiArCQkgICAgaHViLT5odWJf Y29uZmlnLnRwX2NvbmZpZ1t0cF0ubW9kZSAhPSBQM0gyWDRYX1RQX01PREVfU01CVVMpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQkvKiBBbGxvY2F0ZSBhZGFwdGVyICovCj4gKwkJc3RydWN0IGky Y19hZGFwdGVyICpzbWJ1c19hZGFwdGVyID0KPiArCQkJZGV2bV9remFsbG9jKGh1Yi0+ZGV2LCBz aXplb2YoKnNtYnVzX2FkYXB0ZXIpLCBHRlBfS0VSTkVMKTsKPiArCQlpZiAoIXNtYnVzX2FkYXB0 ZXIpCj4gKwkJCXJldHVybiAtRU5PTUVNOwoKW1NldmVyaXR5OiBIaWdoXQpXaWxsIHRoaXMgZWFy bHkgcmV0dXJuIG9uIGFsbG9jYXRpb24gZmFpbHVyZSBjYXVzZSBhIHVzZS1hZnRlci1mcmVlIGZv cgpwcmV2aW91c2x5IHJlZ2lzdGVyZWQgSTJDIGFkYXB0ZXJzPwoKSW4gdGhpcyBsb29wLCBpZiBk ZXZtX2t6YWxsb2MoKSBmYWlscyBmb3IgYSBnaXZlbiBwb3J0LCB0aGUgZnVuY3Rpb24gcmV0dXJu cwotRU5PTUVNIGltbWVkaWF0ZWx5IHdpdGhvdXQgY2FsbGluZyBwM2gyeDR4X3VucmVnaXN0ZXJf c21idXNfYWRhcHRlcnMoKS4KCkFueSBhZGFwdGVycyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCBp biBlYXJsaWVyIGxvb3AgaXRlcmF0aW9ucyB3aWxsIHJlbWFpbgphY3RpdmUgaW4gdGhlIEkyQyBz dWJzeXN0ZW0uIEJlY2F1c2UgdGhlIGRldnJlcyB1bnJlZ2lzdGVyIGFjdGlvbgoocDNoMng0eF91 bnJlZ2lzdGVyX3NtYnVzX2FkYXB0ZXJzX2FjdGlvbikgaXMgb25seSBhZGRlZCBhdCB0aGUgZW5k IG9mIHRoZQpwcm9iZSgpIGZ1bmN0aW9uLCBpdCB3aWxsIG5vdCBleGVjdXRlLiBIb3dldmVyLCBk ZXZyZXMgd2lsbCBhdXRvbWF0aWNhbGx5CmZyZWUgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgZGV2 bV9remFsbG9jKCksIGxlYXZpbmcgdGhlIEkyQyBzdWJzeXN0ZW0gdG8KZGVyZWZlcmVuY2UgZnJl ZWQgbWVtb3J5IHdoZW4gaXQgaW50ZXJhY3RzIHdpdGggdGhvc2UgcmVtYWluaW5nIGRhbmdsaW5n CmFkYXB0ZXJzLgoKPiArCj4gKwkJLyogSW5pdGlhbGl6ZSBhZGFwdGVyICovCj4gKwkJc21idXNf YWRhcHRlci0+b3duZXIgPSBUSElTX01PRFVMRTsKPiArCQlzbWJ1c19hZGFwdGVyLT5jbGFzcyA9 IEkyQ19DTEFTU19IV01PTjsKCi0tIApTYXNoaWtvIEFJIHJldmlldyDCtyBodHRwczovL3Nhc2hp a28uZGV2LyMvcGF0Y2hzZXQvMjAyNjA3MDEwNjU3NTUuMjA2Nzc5My0xLWxha3NoYXkucGlwbGFu aUBueHAuY29tP3BhcnQ9NgoKLS0gCmxpbnV4LWkzYyBtYWlsaW5nIGxpc3QKbGludXgtaTNjQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1pM2MK