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 8C670C4828F for ; Sun, 4 Feb 2024 16:39:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ARhUd+4BC4K6/+DLs4tqQLgAz6hc77yoI87eIC/Gm8E=; b=l+9bXUS0sCrv+fvh0OvK53Sw4P ayOClQzOHf1Aj/8s8NFqDGmu9rZHDCY2v7WQc5PhfYkAaEZLKqkvukgS8ggLSgBnDUY4WhaFRqdEj BqsyvrolNQL0aS+79ahN5lkNdLTdrvPOk/3gIIgP+A+KIQFjwxkCMRLTpyllnm4skuUB/YPWrGz7c AvUZHxTboisDk+uaavdNvqcwAuJRhvan5qoid+8ObfpVTXHVEc3lGWXSsiZQNgyaLFt1WktZzjP89 OcXYlg/wHSk393jdpIPlVg/C44gw1+v7r8FPSU4ANwiJwqTlvNVMkdmqv6vv52AVRqKFaziZQIoW4 mvwQkxdw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rWfWM-00000001A2U-0sI5; Sun, 04 Feb 2024 16:39:06 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:32c8:5054:ff:fe00:142]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rWfWI-00000001A1H-1WJk; Sun, 04 Feb 2024 16:39:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=ARhUd+4BC4K6/+DLs4tqQLgAz6hc77yoI87eIC/Gm8E=; b=UbyTdK4JtiLRziZxzj4iJDZhcw CBvNFJ1p8lhyRm8qqL9LchtFIFsV9HXz1utgMt08pB1VHN+KMeIdEUhv6R+RCo5jLlMoVK9BDacXF Gik3jg3D0PSDjwfN37gdsszSO2kPhQOOciK6RO9dnzvK9SBsB/+jjpJQcqQRe1RLe2510YIUA+U1l 3NxstJmVWVq+E3VZwK1l4+RGM027Yy40LHlfA3MT3NuTfuqwybdlRDN6mXRvJTgT5Cuvs5o8d2DLv OgjwXvRXNgLuAe48gXMBT0hy6UskdUf94EFYq5eIYuUn/W2xUBKKWzvzQpnM7Tu7yANSJt0aUb7ca IQbLJ8ww==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:55838) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1rWfW0-000894-0t; Sun, 04 Feb 2024 16:38:44 +0000 Received: from linux by shell.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1rWfVt-0001uO-OT; Sun, 04 Feb 2024 16:38:37 +0000 Date: Sun, 4 Feb 2024 16:38:37 +0000 From: "Russell King (Oracle)" To: =?utf-8?B?QXLEsW7DpyDDnE5BTA==?= Cc: Daniel Golle , DENG Qingfang , Sean Wang , Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , mithat.guner@xeront.com, erkin.bozoglu@xeront.com, Bartel Eerdekens , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: Re: [PATCH net-next v3 4/7] net: dsa: mt7530: move XTAL check to mt7530_setup() Message-ID: References: <20240202-for-netnext-mt7530-improvements-2-v3-0-63d5adae99ca@arinc9.com> <20240202-for-netnext-mt7530-improvements-2-v3-4-63d5adae99ca@arinc9.com> <5b744f7f-2f63-4219-a0e9-8f08267b1fdd@arinc9.com> <4fa2ff0d-2804-4a58-980f-162e62b3dc9c@arinc9.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4fa2ff0d-2804-4a58-980f-162e62b3dc9c@arinc9.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240204_083902_588577_C3014C50 X-CRM114-Status: GOOD ( 39.52 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org On Sun, Feb 04, 2024 at 06:55:14PM +0300, Arınç ÜNAL wrote: > On 4.02.2024 17:18, Russell King (Oracle) wrote: > > On Sun, Feb 04, 2024 at 04:55:40PM +0300, Arınç ÜNAL wrote: > > > This is not about laziness. This is before patch 2: > > > > > > phylink_mac_ops :: mac_config() -> dsa_port_phylink_mac_config() > > > -> dsa_switch_ops :: phylink_mac_config() -> mt753x_phylink_mac_config() > > > -> mt753x_mac_config() > > > -> mt753x_info :: mac_port_config() -> mt7530_mac_config() > > > -> mt7530_setup_port5() > > > -> mt753x_pad_setup() > > > -> mt753x_info :: pad_setup() -> mt7530_pad_clk_setup() > > > > > > This is after: > > > > > > phylink_mac_ops :: mac_config() -> dsa_port_phylink_mac_config() > > > -> dsa_switch_ops :: phylink_mac_config() -> mt753x_phylink_mac_config() > > > -> mt753x_mac_config() > > > -> mt753x_info :: mac_port_config() -> mt7530_mac_config() > > > -> mt7530_setup_port5() > > > -> mt7530_setup_port6() > > > > > > Patch 2 does not move mt7530_setup_port6() to be called from > > > phylink_mac_ops :: mac_config(), it already is. There is no valid reason to > > > reorder the patches. > > > > > > My response to Russell should've stated this instead of focusing on his > > > second sentence. > > > > This patch moves the test for a 20MHz crystal to mt7530_setup(), > > which is something that is entirely orthogonal to patch 2, which > > can be done cleanly (I've just applied the patches in the original > > order and then reordered them: > > > > 98c481f5d706 net: dsa: mt7530: do not clear config->supported_interfaces > > 93c6b53b17f4 net: dsa: mt7530: correct port capabilities of MT7988 > > c9c6d4c51a1d net: dsa: mt7530: simplify mt7530_setup_port6() and change to void > > adfa948253e0 net: dsa: mt7530: remove pad_setup function pointer > > 57e21e6c2fc0 net: dsa: mt7530: call port 6 setup from mt7530_mac_config() > > 959a0f9323c8 net: dsa: mt7530: move XTAL check to mt7530_setup() > > 856ab64a22ef net: dsa: mt7530: empty default case on mt7530_setup_port5() > > > > No problems. The end result is identical comparing the git tree at the > > original "move XTAL" patch with adfa948253e0. > > > > Now, if we look at "net: dsa: mt7530: remove pad_setup function pointer" > > we can see that yes, the pad_setup() method was called from mac_confing, > > but this is the exact contents of that patch removing the callsite: > > > > - mt753x_pad_setup(ds, state); > > > > This returns an integer, which may be an error code, which is ignored. > > Therefore, if the XTAL frequency check fires, and mt753x_pad_setup() > > returns an error, it is ignored today. > > > > After "net: dsa: mt7530: call port 6 setup from mt7530_mac_config()" > > the renamed pad_setup() method is now called from mac_config() thusly: > > > > + ret = mt7530_setup_port6(priv->ds, interface); > > + if (ret) > > + return ret; > > > > So now the error checks cause mt7530_mac_config() to return an error > > which in turn causes mt753x_mac_config() to fail, and therefore > > mt753x_phylink_mac_config() has different behaviour. > > > > So, patch 2 changes the driver behaviour in the case of a 20MHz XTAL, > > which is then changed again by patch 4. > > > > It would be better to have only one change of behaviour by moving > > patch 4 before patch 2. > > If the idea is to not bring any more error returns to mt753x_mac_config() > because the return code is actually checked for that, I should do a bit > more effort and put patch 5 before patch 2 as well, to live up to what you > originally requested. I assume you are referring to getting rid of the default case in mt7530_pad_clk_setup(). In patch "net: dsa: mt7530: call port 6 setup from mt7530_mac_config()" where you move this to be called from mt7530_mac_config(), you add it as: + } else if (port == 6) { + ret = mt7530_setup_port6(priv->ds, interface); + if (ret) + return ret; + } So it is only called for port 6. The switch within the called function deals with PHY_INTERFACE_MODE_RGMII and PHY_INTERFACE_MODE_TRGMII. Anything else results in the use of the default case, and thus returning an error. Since mt7530_mac_port_get_caps() does this for port 6: __set_bit(PHY_INTERFACE_MODE_RGMII, config->supported_interfaces); __set_bit(PHY_INTERFACE_MODE_TRGMII, config->supported_interfaces); mt7530_setup_port6() will only ever be called for these two modes, which means that the default case is unreachable, thus we will never execute that path, thus whether that path returns an error or not is completely irrelevant. The only case in mt7530_setup_port6() / mt7530_pad_clk_setup() which can today return an error is the XTAL check. Therefore, my suggestion makes complete sense, and there is no need to also move patch 5. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last! 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 273AEC48286 for ; Sun, 4 Feb 2024 16:39:17 +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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sDpvjt2KZd876PiDxYLevVIq3kKGSRDYV+3rUOXHFp0=; b=zPjgZy45s00rJK Nw0gn4r1lR/KO8A2Pfv8me6HADElEYqwYgL45Bwgm/S0dM2hByDsIMHJ9Of9otxQUcBFtamuAi751 mfHeCdvcu2vD9OGDo5ulFHjw1+mFfknUAgy5c5vS9Z80uYHagpN6rzBcXuxY44Grd+/eVBN5YpxGt CPqKkb9SZcgiVpCfnrXHo1ycd7BPFr0NobZhIr/UAmHJbX6zvFBV6BSfqekl8vGY2yUrvVkf4Y/eI NdmMvk5YEvPO5PSwHsmlCTfpfYcw5NDDHig8O+Q0gKD6k7snlQymgpdP2fOZvatN/a0e+nGz+1Xqr +9fU9erVSZUWDb9Y+HVw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rWfWL-00000001A2Q-2ul2; Sun, 04 Feb 2024 16:39:05 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:32c8:5054:ff:fe00:142]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rWfWI-00000001A1H-1WJk; Sun, 04 Feb 2024 16:39:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=ARhUd+4BC4K6/+DLs4tqQLgAz6hc77yoI87eIC/Gm8E=; b=UbyTdK4JtiLRziZxzj4iJDZhcw CBvNFJ1p8lhyRm8qqL9LchtFIFsV9HXz1utgMt08pB1VHN+KMeIdEUhv6R+RCo5jLlMoVK9BDacXF Gik3jg3D0PSDjwfN37gdsszSO2kPhQOOciK6RO9dnzvK9SBsB/+jjpJQcqQRe1RLe2510YIUA+U1l 3NxstJmVWVq+E3VZwK1l4+RGM027Yy40LHlfA3MT3NuTfuqwybdlRDN6mXRvJTgT5Cuvs5o8d2DLv OgjwXvRXNgLuAe48gXMBT0hy6UskdUf94EFYq5eIYuUn/W2xUBKKWzvzQpnM7Tu7yANSJt0aUb7ca IQbLJ8ww==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:55838) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1rWfW0-000894-0t; Sun, 04 Feb 2024 16:38:44 +0000 Received: from linux by shell.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1rWfVt-0001uO-OT; Sun, 04 Feb 2024 16:38:37 +0000 Date: Sun, 4 Feb 2024 16:38:37 +0000 From: "Russell King (Oracle)" To: =?utf-8?B?QXLEsW7DpyDDnE5BTA==?= Cc: Daniel Golle , DENG Qingfang , Sean Wang , Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , mithat.guner@xeront.com, erkin.bozoglu@xeront.com, Bartel Eerdekens , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: Re: [PATCH net-next v3 4/7] net: dsa: mt7530: move XTAL check to mt7530_setup() Message-ID: References: <20240202-for-netnext-mt7530-improvements-2-v3-0-63d5adae99ca@arinc9.com> <20240202-for-netnext-mt7530-improvements-2-v3-4-63d5adae99ca@arinc9.com> <5b744f7f-2f63-4219-a0e9-8f08267b1fdd@arinc9.com> <4fa2ff0d-2804-4a58-980f-162e62b3dc9c@arinc9.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <4fa2ff0d-2804-4a58-980f-162e62b3dc9c@arinc9.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240204_083902_588577_C3014C50 X-CRM114-Status: GOOD ( 39.52 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gU3VuLCBGZWIgMDQsIDIwMjQgYXQgMDY6NTU6MTRQTSArMDMwMCwgQXLEsW7DpyDDnE5BTCB3 cm90ZToKPiBPbiA0LjAyLjIwMjQgMTc6MTgsIFJ1c3NlbGwgS2luZyAoT3JhY2xlKSB3cm90ZToK PiA+IE9uIFN1biwgRmViIDA0LCAyMDI0IGF0IDA0OjU1OjQwUE0gKzAzMDAsIEFyxLFuw6cgw5xO QUwgd3JvdGU6Cj4gPiA+IFRoaXMgaXMgbm90IGFib3V0IGxhemluZXNzLiBUaGlzIGlzIGJlZm9y ZSBwYXRjaCAyOgo+ID4gPiAKPiA+ID4gcGh5bGlua19tYWNfb3BzIDo6IG1hY19jb25maWcoKSAt PiBkc2FfcG9ydF9waHlsaW5rX21hY19jb25maWcoKQo+ID4gPiAtPiBkc2Ffc3dpdGNoX29wcyA6 OiBwaHlsaW5rX21hY19jb25maWcoKSAtPiBtdDc1M3hfcGh5bGlua19tYWNfY29uZmlnKCkKPiA+ ID4gICAgIC0+IG10NzUzeF9tYWNfY29uZmlnKCkKPiA+ID4gICAgICAgIC0+IG10NzUzeF9pbmZv IDo6IG1hY19wb3J0X2NvbmZpZygpIC0+IG10NzUzMF9tYWNfY29uZmlnKCkKPiA+ID4gICAgICAg ICAgIC0+IG10NzUzMF9zZXR1cF9wb3J0NSgpCj4gPiA+ICAgICAtPiBtdDc1M3hfcGFkX3NldHVw KCkKPiA+ID4gICAgICAgIC0+IG10NzUzeF9pbmZvIDo6IHBhZF9zZXR1cCgpIC0+IG10NzUzMF9w YWRfY2xrX3NldHVwKCkKPiA+ID4gCj4gPiA+IFRoaXMgaXMgYWZ0ZXI6Cj4gPiA+IAo+ID4gPiBw aHlsaW5rX21hY19vcHMgOjogbWFjX2NvbmZpZygpIC0+IGRzYV9wb3J0X3BoeWxpbmtfbWFjX2Nv bmZpZygpCj4gPiA+IC0+IGRzYV9zd2l0Y2hfb3BzIDo6IHBoeWxpbmtfbWFjX2NvbmZpZygpIC0+ IG10NzUzeF9waHlsaW5rX21hY19jb25maWcoKQo+ID4gPiAgICAgLT4gbXQ3NTN4X21hY19jb25m aWcoKQo+ID4gPiAgICAgICAgLT4gbXQ3NTN4X2luZm8gOjogbWFjX3BvcnRfY29uZmlnKCkgLT4g bXQ3NTMwX21hY19jb25maWcoKQo+ID4gPiAgICAgICAgICAgLT4gbXQ3NTMwX3NldHVwX3BvcnQ1 KCkKPiA+ID4gICAgICAgICAgIC0+IG10NzUzMF9zZXR1cF9wb3J0NigpCj4gPiA+IAo+ID4gPiBQ YXRjaCAyIGRvZXMgbm90IG1vdmUgbXQ3NTMwX3NldHVwX3BvcnQ2KCkgdG8gYmUgY2FsbGVkIGZy b20KPiA+ID4gcGh5bGlua19tYWNfb3BzIDo6IG1hY19jb25maWcoKSwgaXQgYWxyZWFkeSBpcy4g VGhlcmUgaXMgbm8gdmFsaWQgcmVhc29uIHRvCj4gPiA+IHJlb3JkZXIgdGhlIHBhdGNoZXMuCj4g PiA+IAo+ID4gPiBNeSByZXNwb25zZSB0byBSdXNzZWxsIHNob3VsZCd2ZSBzdGF0ZWQgdGhpcyBp bnN0ZWFkIG9mIGZvY3VzaW5nIG9uIGhpcwo+ID4gPiBzZWNvbmQgc2VudGVuY2UuCj4gPiAKPiA+ IFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHRlc3QgZm9yIGEgMjBNSHogY3J5c3RhbCB0byBtdDc1MzBf c2V0dXAoKSwKPiA+IHdoaWNoIGlzIHNvbWV0aGluZyB0aGF0IGlzIGVudGlyZWx5IG9ydGhvZ29u YWwgdG8gcGF0Y2ggMiwgd2hpY2gKPiA+IGNhbiBiZSBkb25lIGNsZWFubHkgKEkndmUganVzdCBh cHBsaWVkIHRoZSBwYXRjaGVzIGluIHRoZSBvcmlnaW5hbAo+ID4gb3JkZXIgYW5kIHRoZW4gcmVv cmRlcmVkIHRoZW06Cj4gPiAKPiA+IDk4YzQ4MWY1ZDcwNiBuZXQ6IGRzYTogbXQ3NTMwOiBkbyBu b3QgY2xlYXIgY29uZmlnLT5zdXBwb3J0ZWRfaW50ZXJmYWNlcwo+ID4gOTNjNmI1M2IxN2Y0IG5l dDogZHNhOiBtdDc1MzA6IGNvcnJlY3QgcG9ydCBjYXBhYmlsaXRpZXMgb2YgTVQ3OTg4Cj4gPiBj OWM2ZDRjNTFhMWQgbmV0OiBkc2E6IG10NzUzMDogc2ltcGxpZnkgbXQ3NTMwX3NldHVwX3BvcnQ2 KCkgYW5kIGNoYW5nZSB0byB2b2lkCj4gPiBhZGZhOTQ4MjUzZTAgbmV0OiBkc2E6IG10NzUzMDog cmVtb3ZlIHBhZF9zZXR1cCBmdW5jdGlvbiBwb2ludGVyCj4gPiA1N2UyMWU2YzJmYzAgbmV0OiBk c2E6IG10NzUzMDogY2FsbCBwb3J0IDYgc2V0dXAgZnJvbSBtdDc1MzBfbWFjX2NvbmZpZygpCj4g PiA5NTlhMGY5MzIzYzggbmV0OiBkc2E6IG10NzUzMDogbW92ZSBYVEFMIGNoZWNrIHRvIG10NzUz MF9zZXR1cCgpCj4gPiA4NTZhYjY0YTIyZWYgbmV0OiBkc2E6IG10NzUzMDogZW1wdHkgZGVmYXVs dCBjYXNlIG9uIG10NzUzMF9zZXR1cF9wb3J0NSgpCj4gPiAKPiA+IE5vIHByb2JsZW1zLiBUaGUg ZW5kIHJlc3VsdCBpcyBpZGVudGljYWwgY29tcGFyaW5nIHRoZSBnaXQgdHJlZSBhdCB0aGUKPiA+ IG9yaWdpbmFsICJtb3ZlIFhUQUwiIHBhdGNoIHdpdGggYWRmYTk0ODI1M2UwLgo+ID4gCj4gPiBO b3csIGlmIHdlIGxvb2sgYXQgIm5ldDogZHNhOiBtdDc1MzA6IHJlbW92ZSBwYWRfc2V0dXAgZnVu Y3Rpb24gcG9pbnRlciIKPiA+IHdlIGNhbiBzZWUgdGhhdCB5ZXMsIHRoZSBwYWRfc2V0dXAoKSBt ZXRob2Qgd2FzIGNhbGxlZCBmcm9tIG1hY19jb25maW5nLAo+ID4gYnV0IHRoaXMgaXMgdGhlIGV4 YWN0IGNvbnRlbnRzIG9mIHRoYXQgcGF0Y2ggcmVtb3ZpbmcgdGhlIGNhbGxzaXRlOgo+ID4gCj4g PiAtICAgICAgICAgICAgICAgbXQ3NTN4X3BhZF9zZXR1cChkcywgc3RhdGUpOwo+ID4gCj4gPiBU aGlzIHJldHVybnMgYW4gaW50ZWdlciwgd2hpY2ggbWF5IGJlIGFuIGVycm9yIGNvZGUsIHdoaWNo IGlzIGlnbm9yZWQuCj4gPiBUaGVyZWZvcmUsIGlmIHRoZSBYVEFMIGZyZXF1ZW5jeSBjaGVjayBm aXJlcywgYW5kIG10NzUzeF9wYWRfc2V0dXAoKQo+ID4gcmV0dXJucyBhbiBlcnJvciwgaXQgaXMg aWdub3JlZCB0b2RheS4KPiA+IAo+ID4gQWZ0ZXIgIm5ldDogZHNhOiBtdDc1MzA6IGNhbGwgcG9y dCA2IHNldHVwIGZyb20gbXQ3NTMwX21hY19jb25maWcoKSIKPiA+IHRoZSByZW5hbWVkIHBhZF9z ZXR1cCgpIG1ldGhvZCBpcyBub3cgY2FsbGVkIGZyb20gbWFjX2NvbmZpZygpIHRodXNseToKPiA+ IAo+ID4gKyAgICAgICAgICAgICAgIHJldCA9IG10NzUzMF9zZXR1cF9wb3J0Nihwcml2LT5kcywg aW50ZXJmYWNlKTsKPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0KQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+IAo+ID4gU28gbm93IHRoZSBlcnJvciBjaGVja3Mg Y2F1c2UgbXQ3NTMwX21hY19jb25maWcoKSB0byByZXR1cm4gYW4gZXJyb3IKPiA+IHdoaWNoIGlu IHR1cm4gY2F1c2VzIG10NzUzeF9tYWNfY29uZmlnKCkgdG8gZmFpbCwgYW5kIHRoZXJlZm9yZQo+ ID4gbXQ3NTN4X3BoeWxpbmtfbWFjX2NvbmZpZygpIGhhcyBkaWZmZXJlbnQgYmVoYXZpb3VyLgo+ ID4gCj4gPiBTbywgcGF0Y2ggMiBjaGFuZ2VzIHRoZSBkcml2ZXIgYmVoYXZpb3VyIGluIHRoZSBj YXNlIG9mIGEgMjBNSHogWFRBTCwKPiA+IHdoaWNoIGlzIHRoZW4gY2hhbmdlZCBhZ2FpbiBieSBw YXRjaCA0Lgo+ID4gCj4gPiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gaGF2ZSBvbmx5IG9uZSBjaGFu Z2Ugb2YgYmVoYXZpb3VyIGJ5IG1vdmluZwo+ID4gcGF0Y2ggNCBiZWZvcmUgcGF0Y2ggMi4KPiAK PiBJZiB0aGUgaWRlYSBpcyB0byBub3QgYnJpbmcgYW55IG1vcmUgZXJyb3IgcmV0dXJucyB0byBt dDc1M3hfbWFjX2NvbmZpZygpCj4gYmVjYXVzZSB0aGUgcmV0dXJuIGNvZGUgaXMgYWN0dWFsbHkg Y2hlY2tlZCBmb3IgdGhhdCwgSSBzaG91bGQgZG8gYSBiaXQKPiBtb3JlIGVmZm9ydCBhbmQgcHV0 IHBhdGNoIDUgYmVmb3JlIHBhdGNoIDIgYXMgd2VsbCwgdG8gbGl2ZSB1cCB0byB3aGF0IHlvdQo+ IG9yaWdpbmFsbHkgcmVxdWVzdGVkLgoKSSBhc3N1bWUgeW91IGFyZSByZWZlcnJpbmcgdG8gZ2V0 dGluZyByaWQgb2YgdGhlIGRlZmF1bHQgY2FzZSBpbgptdDc1MzBfcGFkX2Nsa19zZXR1cCgpLgoK SW4gcGF0Y2ggIm5ldDogZHNhOiBtdDc1MzA6IGNhbGwgcG9ydCA2IHNldHVwIGZyb20gbXQ3NTMw X21hY19jb25maWcoKSIKd2hlcmUgeW91IG1vdmUgdGhpcyB0byBiZSBjYWxsZWQgZnJvbSBtdDc1 MzBfbWFjX2NvbmZpZygpLCB5b3UgYWRkIGl0CmFzOgoKKyAgICAgICB9IGVsc2UgaWYgKHBvcnQg PT0gNikgeworICAgICAgICAgICAgICAgcmV0ID0gbXQ3NTMwX3NldHVwX3BvcnQ2KHByaXYtPmRz LCBpbnRlcmZhY2UpOworICAgICAgICAgICAgICAgaWYgKHJldCkKKyAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKKyAgICAgICB9CgpTbyBpdCBpcyBvbmx5IGNhbGxlZCBmb3IgcG9y dCA2LiBUaGUgc3dpdGNoIHdpdGhpbiB0aGUgY2FsbGVkIGZ1bmN0aW9uCmRlYWxzIHdpdGggUEhZ X0lOVEVSRkFDRV9NT0RFX1JHTUlJIGFuZCBQSFlfSU5URVJGQUNFX01PREVfVFJHTUlJLgpBbnl0 aGluZyBlbHNlIHJlc3VsdHMgaW4gdGhlIHVzZSBvZiB0aGUgZGVmYXVsdCBjYXNlLCBhbmQgdGh1 cwpyZXR1cm5pbmcgYW4gZXJyb3IuCgpTaW5jZSBtdDc1MzBfbWFjX3BvcnRfZ2V0X2NhcHMoKSBk b2VzIHRoaXMgZm9yIHBvcnQgNjoKCiAgICAgICAgICAgICAgICBfX3NldF9iaXQoUEhZX0lOVEVS RkFDRV9NT0RFX1JHTUlJLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy0+c3VwcG9y dGVkX2ludGVyZmFjZXMpOwogICAgICAgICAgICAgICAgX19zZXRfYml0KFBIWV9JTlRFUkZBQ0Vf TU9ERV9UUkdNSUksCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLT5zdXBwb3J0ZWRf aW50ZXJmYWNlcyk7CgptdDc1MzBfc2V0dXBfcG9ydDYoKSB3aWxsIG9ubHkgZXZlciBiZSBjYWxs ZWQgZm9yIHRoZXNlIHR3byBtb2RlcywKd2hpY2ggbWVhbnMgdGhhdCB0aGUgZGVmYXVsdCBjYXNl IGlzIHVucmVhY2hhYmxlLCB0aHVzIHdlIHdpbGwgbmV2ZXIKZXhlY3V0ZSB0aGF0IHBhdGgsIHRo dXMgd2hldGhlciB0aGF0IHBhdGggcmV0dXJucyBhbiBlcnJvciBvciBub3QgaXMKY29tcGxldGVs eSBpcnJlbGV2YW50LgoKVGhlIG9ubHkgY2FzZSBpbiBtdDc1MzBfc2V0dXBfcG9ydDYoKSAvIG10 NzUzMF9wYWRfY2xrX3NldHVwKCkgd2hpY2gKY2FuIHRvZGF5IHJldHVybiBhbiBlcnJvciBpcyB0 aGUgWFRBTCBjaGVjay4KClRoZXJlZm9yZSwgbXkgc3VnZ2VzdGlvbiBtYWtlcyBjb21wbGV0ZSBz ZW5zZSwgYW5kIHRoZXJlIGlzIG5vIG5lZWQKdG8gYWxzbyBtb3ZlIHBhdGNoIDUuCgotLSAKUk1L J3MgUGF0Y2ggc3lzdGVtOiBodHRwczovL3d3dy5hcm1saW51eC5vcmcudWsvZGV2ZWxvcGVyL3Bh dGNoZXMvCkZUVFAgaXMgaGVyZSEgODBNYnBzIGRvd24gMTBNYnBzIHVwLiBEZWNlbnQgY29ubmVj dGl2aXR5IGF0IGxhc3QhCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==