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 3493BC76196 for ; Thu, 6 Apr 2023 21:58:38 +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=diNSykaS+oUedS7VRS2UScAeKnMuDa1g/Ie2fVWIof0=; b=tnAhNtBt+6kT/Kq5llW8uvbl8s WbZL2gGpIyaRwxRyrEel5YojwbiYsbnFzOh38bWX+NqO+MM6NejVds2cFvaPqTcxP5c2r3gwVXY17 epNoXepKaJ96iJBnxWd/UX8OG1DikkYPy8TCy86xPGuMHRQ9fcoRU1g7LAJ8JKdv5AL3779Y1emb4 vEy2T/3iLX71s67KFl9dvmRZDWCWZdpVVymZcOKxOHznUHOjo2+qp+wRvsdHFbc2PK4HgwttCL34w AeoUUWNRT7gA60iPkirogbCrqNJFRfVM0zHrKsxjmG8acx+ukpr0vpCL+lOEWHRGJ2I7UJysB7zu2 s3tZHC8w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkXck-008hjz-2d; Thu, 06 Apr 2023 21:58:30 +0000 Received: from fudo.makrotopia.org ([2a07:2ec0:3002::71]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkXcg-008hiy-15; Thu, 06 Apr 2023 21:58:27 +0000 Received: from local by fudo.makrotopia.org with esmtpsa (TLS1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.96) (envelope-from ) id 1pkXc9-0004wy-34; Thu, 06 Apr 2023 23:57:54 +0200 Date: Thu, 6 Apr 2023 22:57:51 +0100 From: Daniel Golle To: =?utf-8?B?QXLEsW7DpyDDnE5BTA==?= Cc: "Russell King (Oracle)" , Sean Wang , Landen Chao , DENG Qingfang , Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , erkin.bozoglu@xeront.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: Re: [RFC PATCH net-next] net: dsa: mt7530: fix port specifications for MT7988 Message-ID: References: <20230406100445.52915-1-arinc.unal@arinc9.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230406_145826_372508_F3B42BED X-CRM114-Status: GOOD ( 37.47 ) 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 Fri, Apr 07, 2023 at 12:43:41AM +0300, Arınç ÜNAL wrote: > On 6.04.2023 14:07, Russell King (Oracle) wrote: > > On Thu, Apr 06, 2023 at 01:04:45PM +0300, arinc9.unal@gmail.com wrote: > > > From: Arınç ÜNAL > > > > > > On the switch on the MT7988 SoC, there are only 4 PHYs. There's only port 6 > > > as the CPU port, there's no port 5. Split the switch statement with a check > > > to enforce these for the switch on the MT7988 SoC. The internal phy-mode is > > > specific to MT7988 so put it for MT7988 only. > > > > > > Signed-off-by: Arınç ÜNAL > > > --- > > > > > > Daniel, this is based on the information you provided me about the switch. > > > I will add this to my current patch series if it looks good to you. > > > > > > Arınç > > > > > > --- > > > drivers/net/dsa/mt7530.c | 67 ++++++++++++++++++++++++++-------------- > > > 1 file changed, 43 insertions(+), 24 deletions(-) > > > > > > diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c > > > index 6fbbdcb5987f..f167fa135ef1 100644 > > > --- a/drivers/net/dsa/mt7530.c > > > +++ b/drivers/net/dsa/mt7530.c > > > @@ -2548,7 +2548,7 @@ static void mt7988_mac_port_get_caps(struct dsa_switch *ds, int port, > > > phy_interface_zero(config->supported_interfaces); > > > switch (port) { > > > - case 0 ... 4: /* Internal phy */ > > > + case 0 ... 3: /* Internal phy */ > > > __set_bit(PHY_INTERFACE_MODE_INTERNAL, > > > config->supported_interfaces); > > > break; > > > @@ -2710,37 +2710,56 @@ mt753x_phylink_mac_config(struct dsa_switch *ds, int port, unsigned int mode, > > > struct mt7530_priv *priv = ds->priv; > > > u32 mcr_cur, mcr_new; > > > - switch (port) { > > > - case 0 ... 4: /* Internal phy */ > > > - if (state->interface != PHY_INTERFACE_MODE_GMII && > > > - state->interface != PHY_INTERFACE_MODE_INTERNAL) > > > - goto unsupported; > > > - break; > > > - case 5: /* Port 5, a CPU port. */ > > > - if (priv->p5_interface == state->interface) > > > + if (priv->id == ID_MT7988) { > > > + switch (port) { > > > + case 0 ... 3: /* Internal phy */ > > > + if (state->interface != PHY_INTERFACE_MODE_INTERNAL) > > > > How do these end up with PHY_INTERFACE_MODE_INTERNAL ? phylib defaults > > to GMII mode without something else being specified in DT. > > > > Also note that you should *not* be validating state->interface in the > > mac_config() method because it's way too late to reject it - if you get > > an unsupported interface here, then that is down to the get_caps() > > method being buggy. Only report interfaces in get_caps() that you are > > prepared to handle in the rest of the system. > > This is already the case for all three get_caps(). The supported interfaces > for each port are properly defined. > > Though mt7988_mac_port_get_caps() clears the config->supported_interfaces > bitmap before reporting the supported interfaces. I don't think this is > needed as all bits in the bitmap should already be initialized to zero when > the phylink_config structure is allocated. > > I'm not sure if your suggestion is to make sure the supported interfaces are > properly reported on get_caps(), or validate state->interface somewhere > else. I think what Russell meant is just there is no point in being overly precise about permitted interface modes in mt753x_phylink_mac_config, as this function is not meant and called too late to validate the validity of the selected interface mode. You change to mt7988_mac_port_get_caps looks correct to me and doing this will already prevent mt753x_phylink_mac_config from ever being called on MT7988 for port == 4 as well as and port == 5. 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 41C74C76196 for ; Thu, 6 Apr 2023 21:59:31 +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=OcXDuWa9Euha6aInBzHbuq/waiEzHZ5JsLQA2iGmSNo=; b=lYDB1y+io6QGRm 7H7pLaakPUEkrmFzOht1r0jlXa+8sW/ktPr+ctj2HB74BINeEJWCAe5y2x/uii2PCG1DqDtr9DbmC Dn+bo0FlD3UMjaZarsTUmQkwt1HLA2TBoBLosJUfzttm5evWDuTsxMRXmvrC6qOGhzPqlRlbLJE3w 8G6b1KdfRw9XWj57oc20ARzkBH06fX7Dxzc308/jlNwIaHDWwTtpM6zYo+F2JzutPVmljQlnu4He/ Nje3a46L54vp2Lwoj0QmgKPO21Mwxl76oiZjunfqRduCaLZ+fnd4qqD+WK1hEDH0Jjs5AIw1BgP4+ x8pr2pYVe5amFghTxQTQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pkXcj-008hjm-2S; Thu, 06 Apr 2023 21:58:29 +0000 Received: from fudo.makrotopia.org ([2a07:2ec0:3002::71]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pkXcg-008hiy-15; Thu, 06 Apr 2023 21:58:27 +0000 Received: from local by fudo.makrotopia.org with esmtpsa (TLS1.3:TLS_AES_256_GCM_SHA384:256) (Exim 4.96) (envelope-from ) id 1pkXc9-0004wy-34; Thu, 06 Apr 2023 23:57:54 +0200 Date: Thu, 6 Apr 2023 22:57:51 +0100 From: Daniel Golle To: =?utf-8?B?QXLEsW7DpyDDnE5BTA==?= Cc: "Russell King (Oracle)" , Sean Wang , Landen Chao , DENG Qingfang , Andrew Lunn , Florian Fainelli , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , erkin.bozoglu@xeront.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: Re: [RFC PATCH net-next] net: dsa: mt7530: fix port specifications for MT7988 Message-ID: References: <20230406100445.52915-1-arinc.unal@arinc9.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230406_145826_372508_F3B42BED X-CRM114-Status: GOOD ( 37.47 ) 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 T24gRnJpLCBBcHIgMDcsIDIwMjMgYXQgMTI6NDM6NDFBTSArMDMwMCwgQXLEsW7DpyDDnE5BTCB3 cm90ZToKPiBPbiA2LjA0LjIwMjMgMTQ6MDcsIFJ1c3NlbGwgS2luZyAoT3JhY2xlKSB3cm90ZToK PiA+IE9uIFRodSwgQXByIDA2LCAyMDIzIGF0IDAxOjA0OjQ1UE0gKzAzMDAsIGFyaW5jOS51bmFs QGdtYWlsLmNvbSB3cm90ZToKPiA+ID4gRnJvbTogQXLEsW7DpyDDnE5BTCA8YXJpbmMudW5hbEBh cmluYzkuY29tPgo+ID4gPiAKPiA+ID4gT24gdGhlIHN3aXRjaCBvbiB0aGUgTVQ3OTg4IFNvQywg dGhlcmUgYXJlIG9ubHkgNCBQSFlzLiBUaGVyZSdzIG9ubHkgcG9ydCA2Cj4gPiA+IGFzIHRoZSBD UFUgcG9ydCwgdGhlcmUncyBubyBwb3J0IDUuIFNwbGl0IHRoZSBzd2l0Y2ggc3RhdGVtZW50IHdp dGggYSBjaGVjawo+ID4gPiB0byBlbmZvcmNlIHRoZXNlIGZvciB0aGUgc3dpdGNoIG9uIHRoZSBN VDc5ODggU29DLiBUaGUgaW50ZXJuYWwgcGh5LW1vZGUgaXMKPiA+ID4gc3BlY2lmaWMgdG8gTVQ3 OTg4IHNvIHB1dCBpdCBmb3IgTVQ3OTg4IG9ubHkuCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBBcsSxbsOnIMOcTkFMIDxhcmluYy51bmFsQGFyaW5jOS5jb20+Cj4gPiA+IC0tLQo+ID4gPiAK PiA+ID4gRGFuaWVsLCB0aGlzIGlzIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiB5b3UgcHJvdmlk ZWQgbWUgYWJvdXQgdGhlIHN3aXRjaC4KPiA+ID4gSSB3aWxsIGFkZCB0aGlzIHRvIG15IGN1cnJl bnQgcGF0Y2ggc2VyaWVzIGlmIGl0IGxvb2tzIGdvb2QgdG8geW91Lgo+ID4gPiAKPiA+ID4gQXLE sW7Dpwo+ID4gPiAKPiA+ID4gLS0tCj4gPiA+ICAgZHJpdmVycy9uZXQvZHNhL210NzUzMC5jIHwg NjcgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ID4gPiAgIDEgZmls ZSBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMgYi9kcml2ZXJzL25ldC9kc2Ev bXQ3NTMwLmMKPiA+ID4gaW5kZXggNmZiYmRjYjU5ODdmLi5mMTY3ZmExMzVlZjEgMTAwNjQ0Cj4g PiA+IC0tLSBhL2RyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYwo+ID4gPiArKysgYi9kcml2ZXJzL25l dC9kc2EvbXQ3NTMwLmMKPiA+ID4gQEAgLTI1NDgsNyArMjU0OCw3IEBAIHN0YXRpYyB2b2lkIG10 Nzk4OF9tYWNfcG9ydF9nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LAo+ ID4gPiAgIAlwaHlfaW50ZXJmYWNlX3plcm8oY29uZmlnLT5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7 Cj4gPiA+ICAgCXN3aXRjaCAocG9ydCkgewo+ID4gPiAtCWNhc2UgMCAuLi4gNDogLyogSW50ZXJu YWwgcGh5ICovCj4gPiA+ICsJY2FzZSAwIC4uLiAzOiAvKiBJbnRlcm5hbCBwaHkgKi8KPiA+ID4g ICAJCV9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsCj4gPiA+ICAgCQkJICBj b25maWctPnN1cHBvcnRlZF9pbnRlcmZhY2VzKTsKPiA+ID4gICAJCWJyZWFrOwo+ID4gPiBAQCAt MjcxMCwzNyArMjcxMCw1NiBAQCBtdDc1M3hfcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBkc2Ff c3dpdGNoICpkcywgaW50IHBvcnQsIHVuc2lnbmVkIGludCBtb2RlLAo+ID4gPiAgIAlzdHJ1Y3Qg bXQ3NTMwX3ByaXYgKnByaXYgPSBkcy0+cHJpdjsKPiA+ID4gICAJdTMyIG1jcl9jdXIsIG1jcl9u ZXc7Cj4gPiA+IC0Jc3dpdGNoIChwb3J0KSB7Cj4gPiA+IC0JY2FzZSAwIC4uLiA0OiAvKiBJbnRl cm5hbCBwaHkgKi8KPiA+ID4gLQkJaWYgKHN0YXRlLT5pbnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFD RV9NT0RFX0dNSUkgJiYKPiA+ID4gLQkJICAgIHN0YXRlLT5pbnRlcmZhY2UgIT0gUEhZX0lOVEVS RkFDRV9NT0RFX0lOVEVSTkFMKQo+ID4gPiAtCQkJZ290byB1bnN1cHBvcnRlZDsKPiA+ID4gLQkJ YnJlYWs7Cj4gPiA+IC0JY2FzZSA1OiAvKiBQb3J0IDUsIGEgQ1BVIHBvcnQuICovCj4gPiA+IC0J CWlmIChwcml2LT5wNV9pbnRlcmZhY2UgPT0gc3RhdGUtPmludGVyZmFjZSkKPiA+ID4gKwlpZiAo cHJpdi0+aWQgPT0gSURfTVQ3OTg4KSB7Cj4gPiA+ICsJCXN3aXRjaCAocG9ydCkgewo+ID4gPiAr CQljYXNlIDAgLi4uIDM6IC8qIEludGVybmFsIHBoeSAqLwo+ID4gPiArCQkJaWYgKHN0YXRlLT5p bnRlcmZhY2UgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMKQo+ID4gCj4gPiBIb3cgZG8g dGhlc2UgZW5kIHVwIHdpdGggUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMID8gcGh5bGliIGRl ZmF1bHRzCj4gPiB0byBHTUlJIG1vZGUgd2l0aG91dCBzb21ldGhpbmcgZWxzZSBiZWluZyBzcGVj aWZpZWQgaW4gRFQuCj4gPiAKPiA+IEFsc28gbm90ZSB0aGF0IHlvdSBzaG91bGQgKm5vdCogYmUg dmFsaWRhdGluZyBzdGF0ZS0+aW50ZXJmYWNlIGluIHRoZQo+ID4gbWFjX2NvbmZpZygpIG1ldGhv ZCBiZWNhdXNlIGl0J3Mgd2F5IHRvbyBsYXRlIHRvIHJlamVjdCBpdCAtIGlmIHlvdSBnZXQKPiA+ IGFuIHVuc3VwcG9ydGVkIGludGVyZmFjZSBoZXJlLCB0aGVuIHRoYXQgaXMgZG93biB0byB0aGUg Z2V0X2NhcHMoKQo+ID4gbWV0aG9kIGJlaW5nIGJ1Z2d5LiBPbmx5IHJlcG9ydCBpbnRlcmZhY2Vz IGluIGdldF9jYXBzKCkgdGhhdCB5b3UgYXJlCj4gPiBwcmVwYXJlZCB0byBoYW5kbGUgaW4gdGhl IHJlc3Qgb2YgdGhlIHN5c3RlbS4KPiAKPiBUaGlzIGlzIGFscmVhZHkgdGhlIGNhc2UgZm9yIGFs bCB0aHJlZSBnZXRfY2FwcygpLiBUaGUgc3VwcG9ydGVkIGludGVyZmFjZXMKPiBmb3IgZWFjaCBw b3J0IGFyZSBwcm9wZXJseSBkZWZpbmVkLgo+IAo+IFRob3VnaCBtdDc5ODhfbWFjX3BvcnRfZ2V0 X2NhcHMoKSBjbGVhcnMgdGhlIGNvbmZpZy0+c3VwcG9ydGVkX2ludGVyZmFjZXMKPiBiaXRtYXAg YmVmb3JlIHJlcG9ydGluZyB0aGUgc3VwcG9ydGVkIGludGVyZmFjZXMuIEkgZG9uJ3QgdGhpbmsg dGhpcyBpcwo+IG5lZWRlZCBhcyBhbGwgYml0cyBpbiB0aGUgYml0bWFwIHNob3VsZCBhbHJlYWR5 IGJlIGluaXRpYWxpemVkIHRvIHplcm8gd2hlbgo+IHRoZSBwaHlsaW5rX2NvbmZpZyBzdHJ1Y3R1 cmUgaXMgYWxsb2NhdGVkLgo+IAo+IEknbSBub3Qgc3VyZSBpZiB5b3VyIHN1Z2dlc3Rpb24gaXMg dG8gbWFrZSBzdXJlIHRoZSBzdXBwb3J0ZWQgaW50ZXJmYWNlcyBhcmUKPiBwcm9wZXJseSByZXBv cnRlZCBvbiBnZXRfY2FwcygpLCBvciB2YWxpZGF0ZSBzdGF0ZS0+aW50ZXJmYWNlIHNvbWV3aGVy ZQo+IGVsc2UuCgpJIHRoaW5rIHdoYXQgUnVzc2VsbCBtZWFudCBpcyBqdXN0IHRoZXJlIGlzIG5v IHBvaW50IGluIGJlaW5nIG92ZXJseQpwcmVjaXNlIGFib3V0IHBlcm1pdHRlZCBpbnRlcmZhY2Ug bW9kZXMgaW4gbXQ3NTN4X3BoeWxpbmtfbWFjX2NvbmZpZywKYXMgdGhpcyBmdW5jdGlvbiBpcyBu b3QgbWVhbnQgYW5kIGNhbGxlZCB0b28gbGF0ZSB0byB2YWxpZGF0ZSB0aGUKdmFsaWRpdHkgb2Yg dGhlIHNlbGVjdGVkIGludGVyZmFjZSBtb2RlLgoKWW91IGNoYW5nZSB0byBtdDc5ODhfbWFjX3Bv cnRfZ2V0X2NhcHMgbG9va3MgY29ycmVjdCB0byBtZSBhbmQgZG9pbmcKdGhpcyB3aWxsIGFscmVh ZHkgcHJldmVudCBtdDc1M3hfcGh5bGlua19tYWNfY29uZmlnIGZyb20gZXZlciBiZWluZwpjYWxs ZWQgb24gTVQ3OTg4IGZvciBwb3J0ID09IDQgYXMgd2VsbCBhcyBhbmQgcG9ydCA9PSA1LgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtl cm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo=