From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 43727606A31B for ; Thu, 5 Nov 2026 11:23:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key, unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=UC8QS3Xg; dkim=fail reason="signature verification failed" (2048-bit key, unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=m3M08CHa 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:Date:References: In-Reply-To:Cc:To:Subject:From:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=8RpRRlERqgpEQQuT65jfcSrjXD60i4lmHQAHAz4MEUE=; b=UC8QS3XgiWwfjaL2ZkeyOJgtgA ox4oWND/10o7a6qjdbE21VMdsbZLdBZ7+pgYCWlS+RVEMnpPLXJllw/M2bIpB9DRknmtxDfjg6VPU dQswKScRBIg8oKZvJ2w/3xMHd1+qaypvXWys2Zvd4bAXW60ImmJtfYqBB2MTvAjgTstN6qUtI1TgJ /A2CQ+JinWuU/Ei1UpXtgTNc+PpsBCmPI5sMksdfslukcSKZib8rKbhUPTzypAmXYMLrPYt2KVuHU 7BV70sIVg7isSGUUJPqGKF7Fe/JRx70IVnHUEYxZFhUxiNtQzUPVcwe/dXt+3O59Pae//7vebt9Fi ixXpgIBA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xOvYe-00000008dIY-2h4r; Thu, 05 Nov 2026 11:23:04 +0000 Received: from sea.source.kernel.org ([2600:3c0a:e001:78e:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xOvYZ-00000008dHr-3vG6 for linux-mtd@lists.infradead.org; Thu, 05 Nov 2026 11:23:01 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by sea.source.kernel.org (Postfix) with ESMTP id 89B4340736; Thu, 5 Nov 2026 11:22:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F4721F0093A; Thu, 5 Nov 2026 11:22:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1793877779; bh=uCiBl3ya0KrIdY/h0LucHpDhAT6hJ3Jq6BGPjBFr5SA=; h=From:Subject:Reply-To:To:Cc:In-Reply-To:References:Date; b=m3M08CHa0Vgs+qPGsRWJ1LTMtu5t3WgUxEBldC+KDhK0IuO/D2suaXCtgBdhFoE0m fZf9tFfOeRwHQG5mEPhZIFyIQunQstdnu9nts8GhxT8jRwR6Ooa/ljtcxbxtbHD3zE frBvXzafsMRMxKC7oZPRO6vyUPOBmOHk1LvyAtIaFGS+XwKzuMsa4yOYxiZ5/4q9/c VArg9OwnpUxU4/H3bvAu7XlkJj9HN5JOS346m24Thz/US40joBNiLh8peuJXyVHX58 qvTuuWWSvH9q81olMXFxCHU9RAnvqxKpfdCm/r8rJ1G8rb7dWzW2GSREkk+Liky+7u Pogq94yNfGWKw== Message-ID: From: sashiko-bot@kernel.org Subject: Re: [PATCH v11 08/19] spi: cadence-quadspi: add PHY tuning support To: "Santhosh Kumar K" , broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, pratyush@kernel.org, mwalle@kernel.org, takahiro.kuwano@infineon.com Cc: devicetree@vger.kernel.org, linux-mtd@lists.infradead.org, praneeth@ti.com, sebin.francis@ti.com, u-kumar1@ti.com, srikanth.boyapally@amd.com, m-shah@ti.com In-Reply-To: <20261105105832.2134313-9-s-k6@ti.com> References: <20261105105832.2134313-1-s-k6@ti.com> <20261105105832.2134313-9-s-k6@ti.com> Date: Thu, 05 Nov 2026 11:22:58 +0000 X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux MTD discussion mailing list List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: sashiko-reviews@lists.linux.dev X-Archived-By: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" X-Spam-Status: No, score=-8.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 VGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiEgU2FzaGlrbyBBSSByZXZpZXcgZm91bmQg NCBwb3RlbnRpYWwgaXNzdWUocykgdG8gY29uc2lkZXI6Ci0gW0hpZ2hdIHNwaTogY2FkZW5jZS1x dWFkc3BpOiB1OCB1bmRlcmZsb3cgYW5kIGluZmluaXRlIGxvb3AgaW4gY3FzcGlfZmluZF9yeF9o aWdoX3NkcigpCi0gW0hpZ2hdIHNwaTogY2FkZW5jZS1xdWFkc3BpOiB1bmNsb2NrZWQgTU1JTyBh Y2Nlc3MgaW4gY3FzcGlfYW02NTRfb3NwaV9leGVjdXRlX3R1bmluZygpCi0gW01lZGl1bV0gc3Bp OiBjYWRlbmNlLXF1YWRzcGk6IGJyb2tlbiBSWCBib3VuZHMgYW5kIGdhcCBzZWFyY2ggaW4gY3Fz cGlfcGh5X3R1bmluZ19kZHIoKQotIFtNZWRpdW1dIHNwaTogY2FkZW5jZS1xdWFkc3BpOiBwcm9w YWdhdGUgLUVOT01FTSBmcm9tIGNxc3BpX3BoeV9jaGVja19wYXR0ZXJuKCkKLS0KCmNvbW1pdCBj ZTRmYjBlODc0M2U3NzEzM2YxYmE2YzAwYTY0NmNjYzE1YTBiMGE3CkF1dGhvcjogU2FudGhvc2gg S3VtYXIgSyA8cy1rNkB0aS5jb20+CgpzcGk6IGNhZGVuY2UtcXVhZHNwaTogYWRkIFBIWSB0dW5p bmcgc3VwcG9ydAoKVGhpcyBjb21taXQgYWRkcyBkZWxheS1saW5lIFBIWSBjYWxpYnJhdGlvbiBz dXBwb3J0IGZvciBBTTY1NC1iYXNlZCBDYWRlbmNlCk9TUEkgY29udHJvbGxlcnMgdmlhIHRoZSBz cGlfY29udHJvbGxlcl9tZW1fb3BzIGV4ZWN1dGVfdHVuaW5nIGNhbGxiYWNrLiBJdAppbXBsZW1l bnRzIGEgMkQgUlgvVFggZGVsYXkgc3dlZXAgZm9yIEREUiBwcm90b2NvbHMgYW5kIGEgMUQgUlgg ZGVsYXkgc3dlZXAKZm9yIFNEUiBwcm90b2NvbHMgdXNpbmcgYSBrbm93biB0dW5pbmcgcGF0dGVy bi4KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYyBiL2Ry aXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYwo+IGluZGV4IDRiZTM3MDgxZDA2NmMuLmIw ZjAxNjIxYjMyM2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNw aS5jCj4gKysrIGIvZHJpdmVycy9zcGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jClsgLi4uIF0KPiBA QCAtMTU1OCwxMCArMTcxNywxNTcyIEBAIHN0YXRpYyBib29sIGNxc3BpX3N1cHBvcnRzX21lbV9v cChzdHJ1Y3Qgc3BpX21lbSAqbWVtLApbIC4uLiBdCj4gK3N0YXRpYyBpbnQgY3FzcGlfcGh5X2No ZWNrX3BhdHRlcm4oc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLAo+ICsJCQkJICAg c3RydWN0IHNwaV9tZW0gKm1lbSkKPiArewo+ICsJc3RydWN0IHNwaV9jb250cm9sbGVyICpjdGxy ID0gbWVtLT5zcGktPmNvbnRyb2xsZXI7Cj4gKwlzdHJ1Y3Qgc3BpX21lbV9vcCBvcDsKPiArCXU4 ICpyZWFkX2RhdGE7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJlYWRfZGF0YSA9IGttYWxsb2NfYXJy YXkoQVJSQVlfU0laRShwaHlfdHVuaW5nX3BhdHRlcm4pLAo+ICsJCQkJICBzaXplb2YocGh5X3R1 bmluZ19wYXR0ZXJuWzBdKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXJlYWRfZGF0YSkKPiArCQly ZXR1cm4gLUVOT01FTTsKPiArCj4gKwlvcCA9IGZfcGRhdGEtPnBoeV9yZWFkX29wOwo+ICsJb3Au ZGF0YS5idWYuaW4gPSByZWFkX2RhdGE7Cj4gKwlvcC5kYXRhLm5ieXRlcyA9IHNpemVvZihwaHlf dHVuaW5nX3BhdHRlcm4pOwo+ICsKPiArCXJldCA9IGN0bHItPm1lbV9vcHMtPmV4ZWNfb3AobWVt LCAmb3ApOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dDsKPiArCj4gKwlpZiAobWVtY21wKHJl YWRfZGF0YSwgcGh5X3R1bmluZ19wYXR0ZXJuLCBzaXplb2YocGh5X3R1bmluZ19wYXR0ZXJuKSkp Cj4gKwkJcmV0ID0gLUVBR0FJTjsKPiArCj4gK291dDoKPiArCWtmcmVlKHJlYWRfZGF0YSk7Cj4g KwlyZXR1cm4gcmV0Owo+ICt9ClsgLi4uIF0KPiArc3RhdGljIGludCBjcXNwaV9maW5kX3J4X2xv d19kZHIoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3BkYXRhLAo+ICsJCQkJIHN0cnVjdCBz cGlfbWVtICptZW0sIHN0cnVjdCBjcXNwaV9waHlfc2V0dGluZyAqcGh5KQo+ICt7Cj4gKwlzdHJ1 Y3QgZGV2aWNlICpkZXYgPSAmZl9wZGF0YS0+Y3FzcGktPnBkZXYtPmRldjsKPiArCWludCByZXQ7 Cj4gKwo+ICsJZG8gewo+ICsJCXBoeS0+cnggPSBDUVNQSV9QSFlfUlhfTE9XX1NFQVJDSF9TVEFS VDsKPiArCQlkbyB7Cj4gKwkJCXJldCA9IGNxc3BpX3BoeV9hcHBseV9zZXR0aW5nKGZfcGRhdGEs IHBoeSk7Cj4gKwkJCWlmICghcmV0KSB7Cj4gKwkJCQlyZXQgPSBjcXNwaV9waHlfY2hlY2tfcGF0 dGVybihmX3BkYXRhLCBtZW0pOwo+ICsJCQkJaWYgKCFyZXQpCj4gKwkJCQkJcmV0dXJuIDA7Cj4g KwkJCX0KPiArCj4gKwkJCXBoeS0+cnggKz0gQ1FTUElfUEhZX0REUl9TRUFSQ0hfU1RFUDsKPiAr CQl9IHdoaWxlIChwaHktPnJ4IDw9IENRU1BJX1BIWV9SWF9MT1dfU0VBUkNIX0VORCk7Cj4gKwo+ ICsJCXBoeS0+cmVhZF9kZWxheSsrOwo+ICsJfSB3aGlsZSAocGh5LT5yZWFkX2RlbGF5IDw9IENR U1BJX1BIWV9NQVhfUkQpOwo+ICsKPiArCWRldl9kYmcoZGV2LCAiVW5hYmxlIHRvIGZpbmQgUlgg bG93XG4iKTsKPiArCXJldHVybiAtRU5PRU5UOwo+ICt9CgpbU2V2ZXJpdHk6IE1lZGl1bV0KQXMg cmVwb3J0ZWQgYnkgU2FzaGlrbyBvbiB2MTAgWzFdLCBpbiBkcml2ZXJzL3NwaS9zcGktY2FkZW5j ZS1xdWFkc3BpLmMsCmNxc3BpX3BoeV9jaGVja19wYXR0ZXJuKCkgYWxsb2NhdGVzIHJlYWRfZGF0 YSB3aXRoIGttYWxsb2NfYXJyYXkoKSBvbiBldmVyeQpjYWxsIGFuZCByZXR1cm5zIC1FTk9NRU0g b24gYWxsb2NhdGlvbiBmYWlsdXJlLgoKSG93ZXZlciwgdGhlIHN3ZWVwIGhlbHBlcnMgKGNxc3Bp X2ZpbmRfcnhfbG93X2RkcigpLCBjcXNwaV9maW5kX3J4X2xvd19zZHIoKSwKY3FzcGlfZmluZF9y eF9oaWdoX2RkcigpLCBjcXNwaV9maW5kX3J4X2hpZ2hfc2RyKCksIGNxc3BpX2ZpbmRfdHhfbG93 X2RkcigpLAphbmQgY3FzcGlfZmluZF90eF9oaWdoX2RkcigpKSBvbmx5IGNoZWNrIGlmICghcmV0 KSBhbmQgaWdub3JlIHRoZSBzcGVjaWZpYwplcnJvciBjb2RlLCBjb250aW51aW5nIHRvIHN3ZWVw IGFjcm9zcyBhbGwgcmVtYWluaW5nIGRlbGF5IHRhcHMgYW5kIHVsdGltYXRlbHkKcmV0dXJuaW5n IC1FTk9FTlQgaW5zdGVhZCBvZiAtRU5PTUVNLgoKU2ltaWxhcmx5LCB0aGUgdm9pZCBiaW5hcnkt c2VhcmNoIGhlbHBlcnMgY3FzcGlfcGh5X2ZpbmRfZ2FwbG93X2RkcigpIGFuZApjcXNwaV9waHlf ZmluZF9nYXBoaWdoX2RkcigpIHRyZWF0IGFueSBub24temVybyByZXR1cm4gZnJvbQpjcXNwaV9w aHlfY2hlY2tfcGF0dGVybigpIGFzIGEgcGF0dGVybiBtaXNtYXRjaCBhbmQgYmlzZWN0IHRoZSBz ZWFyY2ggd2luZG93CmluIHRoZSB3cm9uZyBkaXJlY3Rpb24uCgpTaG91bGQgLUVOT01FTSBiZSBw cm9wYWdhdGVkIGltbWVkaWF0ZWx5LCBvciBjb3VsZCB0aGUgMTI4LWJ5dGUgYnVmZmVyIGJlCmFs bG9jYXRlZCBvbmNlIGJlZm9yZSB0aGUgdHVuaW5nIHN3ZWVwPwoKWyAuLi4gXQo+ICtzdGF0aWMg aW50IGNxc3BpX2ZpbmRfcnhfaGlnaF9zZHIoc3RydWN0IGNxc3BpX2ZsYXNoX3BkYXRhICpmX3Bk YXRhLAo+ICsJCQkJICBzdHJ1Y3Qgc3BpX21lbSAqbWVtLCBzdHJ1Y3QgY3FzcGlfcGh5X3NldHRp bmcgKnBoeSwKPiArCQkJCSAgdTggbG93ZXJib3VuZCkKPiArewo+ICsJc3RydWN0IGRldmljZSAq ZGV2ID0gJmZfcGRhdGEtPmNxc3BpLT5wZGV2LT5kZXY7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXBo eS0+cnggPSBDUVNQSV9QSFlfTUFYX0RFTEFZOwo+ICsJZG8gewo+ICsJCXJldCA9IGNxc3BpX3Bo eV9hcHBseV9zZXR0aW5nKGZfcGRhdGEsIHBoeSk7Cj4gKwkJaWYgKCFyZXQpIHsKPiArCQkJcmV0 ID0gY3FzcGlfcGh5X2NoZWNrX3BhdHRlcm4oZl9wZGF0YSwgbWVtKTsKPiArCQkJaWYgKCFyZXQp Cj4gKwkJCQlyZXR1cm4gMDsKPiArCQl9Cj4gKwkJcGh5LT5yeC0tOwo+ICsJfSB3aGlsZSAocGh5 LT5yeCA+PSBsb3dlcmJvdW5kKTsKPiArCj4gKwlkZXZfZGJnKGRldiwgIlVuYWJsZSB0byBmaW5k IFJYIGhpZ2hcbiIpOwo+ICsJcmV0dXJuIC1FTk9FTlQ7Cj4gK30KCltTZXZlcml0eTogSGlnaF0K QXMgcmVwb3J0ZWQgYnkgU2FzaGlrbyBvbiB2MTAgWzJdLCBjYW4gcGh5LT5yeCB1bmRlcmZsb3cg YW5kIGNhdXNlIGFuIGluZmluaXRlCmxvb3AgaW4gY3FzcGlfZmluZF9yeF9oaWdoX3NkcigpIGlu IGRyaXZlcnMvc3BpL3NwaS1jYWRlbmNlLXF1YWRzcGkuYz8KCkluIHN0cnVjdCBjcXNwaV9waHlf c2V0dGluZywgcnggaXMgYSB1OCwgYW5kIHRoZSBsb3dlcmJvdW5kIHBhcmFtZXRlciBvZgpjcXNw aV9maW5kX3J4X2hpZ2hfc2RyKCkgaXMgYWxzbyBhIHU4LiBEdXJpbmcgU0RSIHR1bmluZywKY3Fz cGlfcGh5X3R1bmluZ19zZHIoKSBmaXJzdCBjYWxscyBjcXNwaV9maW5kX3J4X2xvd19zZHIoKSwg d2hpY2ggc2NhbnMgdXB3YXJkCnN0YXJ0aW5nIGZyb20gcGh5LT5yeCA9IDAsIGFuZCB0aGVuIHBh c3NlcyByeGxvdy5yeCBhcyBsb3dlcmJvdW5kIHRvCmNxc3BpX2ZpbmRfcnhfaGlnaF9zZHIoKToK CglyeGhpZ2gucmVhZF9kZWxheSA9IHJ4bG93LnJlYWRfZGVsYXk7CglyZXQgPSBjcXNwaV9maW5k X3J4X2hpZ2hfc2RyKGZfcGRhdGEsIG1lbSwgJnJ4aGlnaCwgcnhsb3cucngpOwoKV2hlbmV2ZXIg dGFwIDAgcGFzc2VzIHRoZSBwYXR0ZXJuIGNoZWNrIGluIGNxc3BpX2ZpbmRfcnhfbG93X3Nkcigp LCByeGxvdy5yeAppcyAwLCBzbyBsb3dlcmJvdW5kIGlzIDAuIElmIGNxc3BpX3BoeV9hcHBseV9z ZXR0aW5nKCkgb3IKY3FzcGlfcGh5X2NoZWNrX3BhdHRlcm4oKSBzdWJzZXF1ZW50bHkgZmFpbHMg ZG93biB0aHJvdWdoIHBoeS0+cnggPT0gMCBpbgpjcXNwaV9maW5kX3J4X2hpZ2hfc2RyKCkgKGZv ciBleGFtcGxlIGR1ZSB0byBhIG1hcmdpbmFsIHBhc3MgYXQgdGFwIDAsIGEKdHJhbnNpZW50IHJl YWQgZXJyb3IsIG9yIERMTCBsb2NrIHRpbWVvdXQpLCBwaHktPnJ4LS0gd3JhcHMgZnJvbSAwIHRv IDI1NSBhbmQKdGhlIHVuc2lnbmVkIGNvbmRpdGlvbiBwaHktPnJ4ID49IGxvd2VyYm91bmQgcmVt YWlucyB0cnVlIGZvcmV2ZXIgd2hpbGUgaG9sZGluZwp0aGUgU1BJIGNvbnRyb2xsZXIgbXV0ZXhl cy4KClsgLi4uIF0KPiArc3RhdGljIHZvaWQgY3FzcGlfcGh5X2ZpbmRfZ2FwbG93X2RkcihzdHJ1 Y3QgY3FzcGlfZmxhc2hfcGRhdGEgKmZfcGRhdGEsCj4gKwkJCQkgICAgICBzdHJ1Y3Qgc3BpX21l bSAqbWVtLAo+ICsJCQkJICAgICAgc3RydWN0IGNxc3BpX3BoeV9zZXR0aW5nICpib3R0b21sZWZ0 LAo+ICsJCQkJICAgICAgc3RydWN0IGNxc3BpX3BoeV9zZXR0aW5nICp0b3ByaWdodCwKPiArCQkJ CSAgICAgIHN0cnVjdCBjcXNwaV9waHlfc2V0dGluZyAqZ2FwbG93KQo+ICt7Cj4gKwlzdHJ1Y3Qg Y3FzcGlfcGh5X3NldHRpbmcgbGVmdCwgcmlnaHQsIG1pZDsKPiArCWludCByZXQ7Cj4gKwo+ICsJ bGVmdCA9ICpib3R0b21sZWZ0Owo+ICsJcmlnaHQgPSAqdG9wcmlnaHQ7Cj4gKwo+ICsJbWlkLnR4 ID0gbGVmdC50eCArICgocmlnaHQudHggLSBsZWZ0LnR4KSAvIDIpOwo+ICsJbWlkLnJ4ID0gbGVm dC5yeCArICgocmlnaHQucnggLSBsZWZ0LnJ4KSAvIDIpOwo+ICsJbWlkLnJlYWRfZGVsYXkgPSBs ZWZ0LnJlYWRfZGVsYXk7Cj4gKwo+ICsJZG8gewo+ICsJCXJldCA9IGNxc3BpX3BoeV9hcHBseV9z ZXR0aW5nKGZfcGRhdGEsICZtaWQpOwo+ICsJCWlmICghcmV0KQo+ICsJCQlyZXQgPSBjcXNwaV9w aHlfY2hlY2tfcGF0dGVybihmX3BkYXRhLCBtZW0pOwo+ICsKPiArCQlpZiAocmV0KSB7Cj4gKwkJ CS8qIFRoZSBwYXR0ZXJuIHdhcyBub3QgZm91bmQuIEdvIHRvIHRoZSBsb3dlciBoYWxmLiAqLwo+ ICsJCQlyaWdodC50eCA9IG1pZC50eDsKPiArCQkJcmlnaHQucnggPSBtaWQucng7Cj4gKwo+ICsJ CQltaWQudHggPSBsZWZ0LnR4ICsgKChtaWQudHggLSBsZWZ0LnR4KSAvIDIpOwo+ICsJCQltaWQu cnggPSBsZWZ0LnJ4ICsgKChtaWQucnggLSBsZWZ0LnJ4KSAvIDIpOwo+ICsJCX0gZWxzZSB7Cj4g KwkJCS8qIFRoZSBwYXR0ZXJuIHdhcyBmb3VuZC4gR28gdG8gdGhlIHVwcGVyIGhhbGYuICovCj4g KwkJCWxlZnQudHggPSBtaWQudHg7Cj4gKwkJCWxlZnQucnggPSBtaWQucng7Cj4gKwo+ICsJCQlt aWQudHggPSBtaWQudHggKyAoKHJpZ2h0LnR4IC0gbWlkLnR4KSAvIDIpOwo+ICsJCQltaWQucngg PSBtaWQucnggKyAoKHJpZ2h0LnJ4IC0gbWlkLnJ4KSAvIDIpOwo+ICsJCX0KPiArCj4gKwkJLyog QnJlYWsgdGhlIGxvb3AgaWYgdGhlIHdpbmRvdyBoYXMgY2xvc2VkLiAqLwo+ICsJfSB3aGlsZSAo KHJpZ2h0LnR4IC0gbGVmdC50eCA+PSAyKSAmJiAocmlnaHQucnggLSBsZWZ0LnJ4ID49IDIpKTsK PiArCj4gKwkqZ2FwbG93ID0gbWlkOwo+ICt9ClsgLi4uIF0KPiArc3RhdGljIGludCBjcXNwaV9w aHlfdHVuaW5nX2RkcihzdHJ1Y3QgY3FzcGlfZmxhc2hfcGRhdGEgKmZfcGRhdGEsCj4gKwkJCQlz dHJ1Y3Qgc3BpX21lbSAqbWVtKQo+ICt7ClsgLi4uIF0KPiArCXJ4X3dpbmRvdyA9IHJ4aGlnaC5y eCAtIHJ4bG93LnJ4Owo+ICsJdHhsb3cucnggPSByeGxvdy5yeCArIChyeF93aW5kb3cgLyA0KTsK PiArCWRldl9kYmcoZGV2LCAiU2VhcmNoaW5nIGZvciBHb2xkZW4gdHhsb3cgb24gUlggPSAlZFxu IiwgdHhsb3cucngpOwo+ICsJdHhsb3cucmVhZF9kZWxheSA9IENRU1BJX1BIWV9JTklUX1JEOwo+ ICsJcmV0ID0gY3FzcGlfZmluZF90eF9sb3dfZGRyKGZfcGRhdGEsIG1lbSwgJnR4bG93KTsKPiAr CWlmIChyZXQpCj4gKwkJZ290byBvdXQ7ClsgLi4uIF0KPiArCQkvKiBDb21wYXJlIE1hbmhhdHRh biBkaXN0YW5jZXM6IGNob29zZSBjb3JuZXIgZnVydGhlc3QgZnJvbSBnYXAgKi8KPiArCQlpZiAo KGFicyhnYXBsb3cudHggLSBib3R0b21sZWZ0LnR4KSArCj4gKwkJICAgICBhYnMoZ2FwbG93LnJ4 IC0gYm90dG9tbGVmdC5yeCkpIDwKPiArCQkgICAgKGFicyhnYXBoaWdoLnR4IC0gdG9wcmlnaHQu dHgpICsKPiArCQkgICAgIGFicyhnYXBoaWdoLnJ4IC0gdG9wcmlnaHQucngpKSkgewo+ICsJCQkv KiBUb3ByaWdodCBmdXJ0aGVyOiBVc2UgUmVnaW9uIDIsIDE2IHRhcHMgaW53YXJkICovCj4gKwkJ CXNlYXJjaHBvaW50ID0gdG9wcmlnaHQ7Cj4gKwkJCXNlYXJjaHBvaW50LnR4ID0gY2xhbXAoKGlu dCl0b3ByaWdodC50eCAtIDE2LAo+ICsJCQkJCSAgICAgICAwLCBDUVNQSV9QSFlfTUFYX0RFTEFZ KTsKPiArCQkJc2VhcmNocG9pbnQucnggPSBjbGFtcCgoaW50KXRvcHJpZ2h0LnJ4IC0KPiArCQkJ CQkgICAgICAgKDE2ICogKHRvcHJpZ2h0LnJ4IC0gYm90dG9tbGVmdC5yeCkpIC8KPiArCQkJCQkg ICAgICAgKHRvcHJpZ2h0LnR4IC0gYm90dG9tbGVmdC50eCksCj4gKwkJCQkJICAgICAgIDAsIENR U1BJX1BIWV9NQVhfREVMQVkpOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCS8qIEJvdHRvbWxlZnQgZnVy dGhlcjogVXNlIFJlZ2lvbiAxLCAxNiB0YXBzIGlud2FyZCAqLwo+ICsJCQlzZWFyY2hwb2ludCA9 IGJvdHRvbWxlZnQ7Cj4gKwkJCXNlYXJjaHBvaW50LnR4ID0gY2xhbXAoKGludClib3R0b21sZWZ0 LnR4ICsgMTYsCj4gKwkJCQkJICAgICAgIDAsIENRU1BJX1BIWV9NQVhfREVMQVkpOwo+ICsJCQlz ZWFyY2hwb2ludC5yeCA9IGNsYW1wKChpbnQpYm90dG9tbGVmdC5yeCArCj4gKwkJCQkJICAgICAg ICgxNiAqICh0b3ByaWdodC5yeCAtIGJvdHRvbWxlZnQucngpKSAvCj4gKwkJCQkJICAgICAgICh0 b3ByaWdodC50eCAtIGJvdHRvbWxlZnQudHgpLAo+ICsJCQkJCSAgICAgICAwLCBDUVNQSV9QSFlf TUFYX0RFTEFZKTsKPiArCQl9Cj4gKwl9CgpbU2V2ZXJpdHk6IE1lZGl1bV0KSW4gZHJpdmVycy9z cGkvc3BpLWNhZGVuY2UtcXVhZHNwaS5jLCBkb2VzIGNxc3BpX3BoeV90dW5pbmdfZGRyKCkgaGFu ZGxlIHRoZQpjYXNlIHdoZXJlIHJ4aGlnaC5yeCBpcyBzbWFsbGVyIHRoYW4gb3IgY2xvc2UgdG8g cnhsb3cucnggYWNyb3NzIGRpZmZlcmVudApyZWFkX2RlbGF5IHZhbHVlcz8KCmNxc3BpX2ZpbmRf cnhfbG93X2RkcigpIHNlYXJjaGVzIHBoeS0+cnggaW4gMC4uNDAgYWNyb3NzIHJlYWRfZGVsYXkg MS4uNCwKd2hpbGUgY3FzcGlfZmluZF9yeF9oaWdoX2RkcigpIHNlYXJjaGVzIHBoeS0+cnggaW4g MjQuLjEyNyBhY3Jvc3MgcmVhZF9kZWxheQo0Li4xLiBCZWNhdXNlIHRob3NlIFJYIHJhbmdlcyBv dmVybGFwIGluIDI0Li40MCBhbmQgcnhsb3cgYW5kIHJ4aGlnaCBjYW4gYmUKZm91bmQgYXQgZGlm ZmVyZW50IHJlYWRfZGVsYXkgdmFsdWVzLCByeGhpZ2gucnggY2FuIGJlIGxlc3MgdGhhbiBvciBu ZWFybHkKZXF1YWwgdG8gcnhsb3cucng6CgoxLiBJbiBjcXNwaV9waHlfdHVuaW5nX2RkcigpLCBy eF93aW5kb3cgPSByeGhpZ2gucnggLSByeGxvdy5yeCBiZWNvbWVzCiAgIG5lZ2F0aXZlIHdoZW4g cnhoaWdoLnJ4IDwgcnhsb3cucngsIHdoaWNoIHN0ZXBzIHR4bG93LnJ4ID0gcnhsb3cucnggKwog ICAocnhfd2luZG93IC8gNCkgYW5kIGJhY2t1cHBvaW50LnJ4ID0gcnhsb3cucnggKyAoKHJ4X3dp bmRvdyAqIDMpIC8gNCkKICAgYmVsb3cgcnhsb3cucnguCgoyLiBJbiBjcXNwaV9waHlfZmluZF9n YXBsb3dfZGRyKCkgYW5kIGNxc3BpX3BoeV9maW5kX2dhcGhpZ2hfZGRyKCksIHRoZSBsb29wCiAg IGNvbmRpdGlvbiBpczoKCgl9IHdoaWxlICgocmlnaHQudHggLSBsZWZ0LnR4ID49IDIpICYmIChy aWdodC5yeCAtIGxlZnQucnggPj0gMikpOwoKICAgQmVjYXVzZSBib3RoIGF4ZXMgYXJlIGNvbWJp bmVkIHdpdGggJiYsIHRoZSBiaW5hcnkgc2VhcmNoIHN0b3BzIGFzIHNvb24gYXMKICAgdGhlIG5h cnJvd2VyIGF4aXMgc3BhbiBkcm9wcyBiZWxvdyAyIChvciBhZnRlciBhIHNpbmdsZSBpdGVyYXRp b24gaWYKICAgdG9wcmlnaHQucnggPD0gYm90dG9tbGVmdC5yeCArIDEpLCBsZWF2aW5nIHRoZSB3 aWRlciBheGlzIHVuc2VhcmNoZWQuCgozLiBJbiB0aGUgZmluYWwgcG9pbnQgY2FsY3VsYXRpb24g aW4gY3FzcGlfcGh5X3R1bmluZ19kZHIoKSwgd2hlbgogICB0b3ByaWdodC5yeCA8IGJvdHRvbWxl ZnQucngsICh0b3ByaWdodC5yeCAtIGJvdHRvbWxlZnQucngpIGlzIG5lZ2F0aXZlLAogICB3aGlj aCBwdXNoZXMgc2VhcmNocG9pbnQucnggb3V0d2FyZCBwYXN0IHRoZSB2YWxpZCBSWCBib3VuZGFy eSAoYWJvdmUKICAgdG9wcmlnaHQucnggZm9yIFJlZ2lvbiAyIG9yIGJlbG93IGJvdHRvbWxlZnQu cnggZm9yIFJlZ2lvbiAxKSBpbnN0ZWFkIG9mCiAgIGlud2FyZC4KClsgLi4uIF0KPiArc3RhdGlj IGludCBjcXNwaV9hbTY1NF9vc3BpX2V4ZWN1dGVfdHVuaW5nKHN0cnVjdCBzcGlfbWVtICptZW0s Cj4gKwkJCQkJICAgc3RydWN0IHNwaV9tZW1fb3AgKnJlYWRfb3AsCj4gKwkJCQkJICAgc3RydWN0 IHNwaV9tZW1fb3AgKndyaXRlX29wKQo+ICt7ClsgLi4uIF0KPiArCWlmIChyZWFkX29wLT5jbWQu ZHRyIHx8IHJlYWRfb3AtPmFkZHIuZHRyIHx8IHJlYWRfb3AtPmR1bW15LmR0ciB8fAo+ICsJICAg IHJlYWRfb3AtPmRhdGEuZHRyKSB7Cj4gKwkJZl9wZGF0YS0+dXNlX2RxcyA9IHRydWU7Cj4gKwkJ Y3FzcGlfcGh5X3ByZV9jb25maWcoY3FzcGksIGZfcGRhdGEsIGZhbHNlKTsKPiArCQlyZXQgPSBj cXNwaV9waHlfdHVuaW5nX2RkcihmX3BkYXRhLCBtZW0pOwo+ICsJfSBlbHNlIHsKPiArCQlmX3Bk YXRhLT51c2VfZHFzID0gZmFsc2U7Cj4gKwkJY3FzcGlfcGh5X3ByZV9jb25maWcoY3FzcGksIGZf cGRhdGEsIHRydWUpOwo+ICsJCXJldCA9IGNxc3BpX3BoeV90dW5pbmdfc2RyKGZfcGRhdGEsIG1l bSk7Cj4gKwl9Cj4gKwo+ICsJaWYgKHJldCkKPiArCQlkZXZfd2FybihkZXYsICJ0dW5pbmcgZmFp bGVkOiAlZFxuIiwgcmV0KTsKPiArCj4gKwljcXNwaV9waHlfcG9zdF9jb25maWcoY3FzcGksIGZf cGRhdGEtPnJlYWRfZGVsYXkpOwo+ICsKPiArb3V0Ogo+ICsJaWYgKCFyZXQpIHsKPiArCQlyZWFk X29wLT5tYXhfZnJlcSA9IG1lbS0+c3BpLT5wb3N0X2NvbmZpZ19tYXhfc3BlZWRfaHo7Cj4gKwkJ aWYgKHdyaXRlX29wKSB7Cj4gKwkJCXdyaXRlX29wLT5tYXhfZnJlcSA9IG1lbS0+c3BpLT5wb3N0 X2NvbmZpZ19tYXhfc3BlZWRfaHo7Cj4gKwkJCWZfcGRhdGEtPnBoeV93cml0ZV9vcC5tYXhfZnJl cSA9Cj4gKwkJCQltZW0tPnNwaS0+cG9zdF9jb25maWdfbWF4X3NwZWVkX2h6Owo+ICsJCX0KPiAr CX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNxc3BpX21lbV9v cF9leGVjdXRlX3R1bmluZyhzdHJ1Y3Qgc3BpX21lbSAqbWVtLAo+ICsJCQkJICAgICAgIHN0cnVj dCBzcGlfbWVtX29wICpyZWFkX29wLAo+ICsJCQkJICAgICAgIHN0cnVjdCBzcGlfbWVtX29wICp3 cml0ZV9vcCkKPiArewo+ICsJc3RydWN0IGNxc3BpX3N0ICpjcXNwaSA9Cj4gKwkJc3BpX2NvbnRy b2xsZXJfZ2V0X2RldmRhdGEobWVtLT5zcGktPmNvbnRyb2xsZXIpOwo+ICsKPiArCWlmICghY3Fz cGktPmRkYXRhIHx8ICFjcXNwaS0+ZGRhdGEtPmV4ZWN1dGVfdHVuaW5nKQo+ICsJCXJldHVybiAt RU9QTk9UU1VQUDsKPiArCj4gKwlyZXR1cm4gY3FzcGktPmRkYXRhLT5leGVjdXRlX3R1bmluZyht ZW0sIHJlYWRfb3AsIHdyaXRlX29wKTsKPiArfQoKW1NldmVyaXR5OiBIaWdoXQpDYW4gY3FzcGlf YW02NTRfb3NwaV9leGVjdXRlX3R1bmluZygpIGFjY2VzcyBNTUlPIHJlZ2lzdGVycyB3aGlsZSB0 aGUKY29udHJvbGxlciBpcyBydW50aW1lLXN1c3BlbmRlZD8KCkluIGRyaXZlcnMvc3BpL3NwaS1j YWRlbmNlLXF1YWRzcGkuYywgY3FzcGlfcHJvYmUoKSBlbmFibGVzIHJ1bnRpbWUgUE0gd2l0aAph dXRvc3VzcGVuZCBvbiAmcGRldi0+ZGV2IHdpdGhvdXQgc2V0dGluZyBob3N0LT5hdXRvX3J1bnRp bWVfcG0uIEFzIGEgcmVzdWx0LApzcGlfbWVtX2FjY2Vzc19zdGFydCgpIGRvZXMgbm90IHdha2Ug dGhlIGNvbnRyb2xsZXIsIGFuZCBjcXNwaV9leGVjX21lbV9vcCgpCmFjcXVpcmVzIGFuZCByZWxl YXNlcyBydW50aW1lIFBNIChhbmQgY3FzcGktPmluZmxpZ2h0X29wcykgYXJvdW5kIGVhY2gKaW5k aXZpZHVhbCBtZW1vcnkgb3BlcmF0aW9uOgoKCXJldCA9IHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9n ZXQoZGV2KTsKCWlmIChyZXQpIHsKCQlkZXZfZXJyKCZtZW0tPnNwaS0+ZGV2LCAicmVzdW1lIGZh aWxlZCB3aXRoICVkXG4iLCByZXQpOwoJCWdvdG8gZGVjX2luZmxpZ2h0X3JlZmNvdW50OwoJfQoK CXJldCA9IGNxc3BpX21lbV9wcm9jZXNzKG1lbSwgb3ApOwoKCXBtX3J1bnRpbWVfcHV0X2F1dG9z dXNwZW5kKGRldik7CgpVbmxpa2UgY3FzcGlfZXhlY19tZW1fb3AoKSwgY3FzcGlfbWVtX29wX2V4 ZWN1dGVfdHVuaW5nKCkgZG9lcyBub3QgaG9sZCBhCnJ1bnRpbWUgUE0gcmVmZXJlbmNlIG9yIGFu IGluZmxpZ2h0X29wcyByZWZlcmVuY2UgYWNyb3NzIHRoZSB0dW5pbmcgc2VxdWVuY2UuCldoZW4g Y3FzcGlfd3JpdGVfcGF0dGVybl90b19jYWNoZSgpIG9yIGNxc3BpX3BoeV9jaGVja19wYXR0ZXJu KCkgcmV0dXJucyBmcm9tCmN0bHItPm1lbV9vcHMtPmV4ZWNfb3AoKSwgdGhlIHJ1bnRpbWUgUE0g dXNhZ2UgY291bnQgZHJvcHMgYmFjayB0byB6ZXJvLCBzbwpkaXJlY3QgTU1JTyBhY2Nlc3NlcyBp biBjcXNwaV9waHlfcHJlX2NvbmZpZygpLCBjcXNwaV9waHlfYXBwbHlfc2V0dGluZygpLApjcXNw aV9zZXRfZGxsKCksIGNxc3BpX3Jlc3luY19kbGwoKSwgYW5kIGNxc3BpX3BoeV9wb3N0X2NvbmZp ZygpIHJ1biB3aXRob3V0CmFuIGFjdGl2ZSBydW50aW1lIFBNIHJlZmVyZW5jZS4gSWYgYXV0b3N1 c3BlbmQgdHJpZ2dlcnMgYmV0d2VlbiBvcGVyYXRpb25zLApjcXNwaV9ydW50aW1lX3N1c3BlbmQo KSBjYW4gZ2F0ZSB0aGUgY2xvY2tzIGR1cmluZyBNTUlPIGFjY2VzcyBvcgpjcXNwaV9ydW50aW1l X3Jlc3VtZSgpIGNhbiByZWluaXRpYWxpemUgdGhlIGNvbnRyb2xsZXIgbWlkLWNhbGlicmF0aW9u LgoKU2hvdWxkIGNxc3BpX21lbV9vcF9leGVjdXRlX3R1bmluZygpIGhvbGQgcG1fcnVudGltZV9y ZXN1bWVfYW5kX2dldCgpIGFuZApjcXNwaS0+aW5mbGlnaHRfb3BzIGFjcm9zcyB0aGUgZXhlY3V0 ZV90dW5pbmcgY2FsbGJhY2sgaW4gdGhlIHNhbWUgd2F5IGFzCmNxc3BpX2V4ZWNfbWVtX29wKCk/ CgpbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci8yMDI2MDkyOTA2MzUyOS4xMjM1NDE3LTkt cy1rNkB0aS5jb20KWzJdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyNjA5MjkwNjM1Mjku MTIzNTQxNy05LXMtazZAdGkuY29tCgotLSAKU2FzaGlrbyBBSSByZXZpZXcgwrcgaHR0cHM6Ly9z YXNoaWtvLmRldi8jL3BhdGNoc2V0LzIwMjYxMTA1MTA1ODMyLjIxMzQzMTMtMS1zLWs2QHRpLmNv bT9wYXJ0PTgKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpMaW51eCBNVEQgZGlzY3Vzc2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1tdGQvCg==