All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Pavel Zhigulin <Pavel.Zhigulin@kaspersky.com>,
	Andrew Lunn <andrew+netdev@lunn.ch>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	Pavel Zhigulin <Pavel.Zhigulin@kaspersky.com>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Alexandre Torgue <alexandre.torgue@foss.st.com>,
	Maxime Chevallier <maxime.chevallier@bootlin.com>,
	Inochi Amaoto <inochiama@gmail.com>,
	Quentin Schulz <quentin.schulz@cherry.de>,
	Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp>,
	Rayagond Kokatanur <rayagond@vayavyalabs.com>,
	Giuseppe CAVALLARO <peppe.cavallaro@st.com>,
	netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, lvc-project@linuxtesting.org
Subject: Re: [PATCH net] net: stmmac: add clk_prepare_enable() error handling
Date: Fri, 14 Nov 2025 14:45:59 +0800	[thread overview]
Message-ID: <202511141014.PnFNp7CX-lkp@intel.com> (raw)
In-Reply-To: <20251113134009.79440-1-Pavel.Zhigulin@kaspersky.com>

Hi Pavel,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Pavel-Zhigulin/net-stmmac-add-clk_prepare_enable-error-handling/20251113-222525
base:   net/main
patch link:    https://lore.kernel.org/r/20251113134009.79440-1-Pavel.Zhigulin%40kaspersky.com
patch subject: [PATCH net] net: stmmac: add clk_prepare_enable() error handling
config: riscv-defconfig (https://download.01.org/0day-ci/archive/20251114/202511141014.PnFNp7CX-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 0bba1e76581bad04e7d7f09f5115ae5e2989e0d9)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251114/202511141014.PnFNp7CX-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511141014.PnFNp7CX-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:646:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
     646 |         if (rc < 0) {
         |             ^~~~~~
   drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:687:9: note: uninitialized use occurs here
     687 |         return ret;
         |                ^~~
   drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:646:2: note: remove the 'if' if its condition is always false
     646 |         if (rc < 0) {
         |         ^~~~~~~~~~~~~
     647 |                 dev_err(&pdev->dev, "Cannot enable pclk: %d\n", rc);
         |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     648 |                 goto error_pclk_get;
         |                 ~~~~~~~~~~~~~~~~~~~~
     649 |         }
         |         ~
   drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:436:11: note: initialize the variable 'ret' to silence this warning
     436 |         void *ret;
         |                  ^
         |                   = NULL
   1 warning generated.


vim +646 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c

   419	
   420	/**
   421	 * stmmac_probe_config_dt - parse device-tree driver parameters
   422	 * @pdev: platform_device structure
   423	 * @mac: MAC address to use
   424	 * Description:
   425	 * this function is to read the driver parameters from device-tree and
   426	 * set some private fields that will be used by the main at runtime.
   427	 */
   428	static struct plat_stmmacenet_data *
   429	stmmac_probe_config_dt(struct platform_device *pdev, u8 *mac)
   430	{
   431		struct device_node *np = pdev->dev.of_node;
   432		struct plat_stmmacenet_data *plat;
   433		struct stmmac_dma_cfg *dma_cfg;
   434		static int bus_id = -ENODEV;
   435		int phy_mode;
   436		void *ret;
   437		int rc;
   438	
   439		plat = devm_kzalloc(&pdev->dev, sizeof(*plat), GFP_KERNEL);
   440		if (!plat)
   441			return ERR_PTR(-ENOMEM);
   442	
   443		rc = of_get_mac_address(np, mac);
   444		if (rc) {
   445			if (rc == -EPROBE_DEFER)
   446				return ERR_PTR(rc);
   447	
   448			eth_zero_addr(mac);
   449		}
   450	
   451		phy_mode = device_get_phy_mode(&pdev->dev);
   452		if (phy_mode < 0)
   453			return ERR_PTR(phy_mode);
   454	
   455		plat->phy_interface = phy_mode;
   456	
   457		rc = stmmac_of_get_mac_mode(np);
   458		if (rc >= 0 && rc != phy_mode)
   459			dev_warn(&pdev->dev,
   460				 "\"mac-mode\" property used for %s but differs to \"phy-mode\" of %s, and will be ignored. Please report.\n",
   461				 phy_modes(rc), phy_modes(phy_mode));
   462	
   463		/* Some wrapper drivers still rely on phy_node. Let's save it while
   464		 * they are not converted to phylink. */
   465		plat->phy_node = of_parse_phandle(np, "phy-handle", 0);
   466	
   467		/* PHYLINK automatically parses the phy-handle property */
   468		plat->port_node = of_fwnode_handle(np);
   469	
   470		/* Get max speed of operation from device tree */
   471		of_property_read_u32(np, "max-speed", &plat->max_speed);
   472	
   473		plat->bus_id = of_alias_get_id(np, "ethernet");
   474		if (plat->bus_id < 0) {
   475			if (bus_id < 0)
   476				bus_id = of_alias_get_highest_id("ethernet");
   477			/* No ethernet alias found, init at -1 so first bus_id is 0 */
   478			if (bus_id < 0)
   479				bus_id = -1;
   480			plat->bus_id = ++bus_id;
   481		}
   482	
   483		/* Default to phy auto-detection */
   484		plat->phy_addr = -1;
   485	
   486		/* Default to get clk_csr from stmmac_clk_csr_set(),
   487		 * or get clk_csr from device tree.
   488		 */
   489		plat->clk_csr = -1;
   490		if (of_property_read_u32(np, "snps,clk-csr", &plat->clk_csr))
   491			of_property_read_u32(np, "clk_csr", &plat->clk_csr);
   492	
   493		/* "snps,phy-addr" is not a standard property. Mark it as deprecated
   494		 * and warn of its use. Remove this when phy node support is added.
   495		 */
   496		if (of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr) == 0)
   497			dev_warn(&pdev->dev, "snps,phy-addr property is deprecated\n");
   498	
   499		rc = stmmac_mdio_setup(plat, np, &pdev->dev);
   500		if (rc) {
   501			ret = ERR_PTR(rc);
   502			goto error_put_phy;
   503		}
   504	
   505		of_property_read_u32(np, "tx-fifo-depth", &plat->tx_fifo_size);
   506	
   507		of_property_read_u32(np, "rx-fifo-depth", &plat->rx_fifo_size);
   508	
   509		plat->force_sf_dma_mode =
   510			of_property_read_bool(np, "snps,force_sf_dma_mode");
   511	
   512		if (of_property_read_bool(np, "snps,en-tx-lpi-clockgating")) {
   513			dev_warn(&pdev->dev,
   514				 "OF property snps,en-tx-lpi-clockgating is deprecated, please convert driver to use STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP\n");
   515			plat->flags |= STMMAC_FLAG_EN_TX_LPI_CLOCKGATING;
   516		}
   517	
   518		/* Set the maxmtu to a default of JUMBO_LEN in case the
   519		 * parameter is not present in the device tree.
   520		 */
   521		plat->maxmtu = JUMBO_LEN;
   522	
   523		/* Set default value for multicast hash bins */
   524		plat->multicast_filter_bins = HASH_TABLE_SIZE;
   525	
   526		/* Set default value for unicast filter entries */
   527		plat->unicast_filter_entries = 1;
   528	
   529		/*
   530		 * Currently only the properties needed on SPEAr600
   531		 * are provided. All other properties should be added
   532		 * once needed on other platforms.
   533		 */
   534		if (of_device_is_compatible(np, "st,spear600-gmac") ||
   535			of_device_is_compatible(np, "snps,dwmac-3.50a") ||
   536			of_device_is_compatible(np, "snps,dwmac-3.70a") ||
   537			of_device_is_compatible(np, "snps,dwmac-3.72a") ||
   538			of_device_is_compatible(np, "snps,dwmac")) {
   539			/* Note that the max-frame-size parameter as defined in the
   540			 * ePAPR v1.1 spec is defined as max-frame-size, it's
   541			 * actually used as the IEEE definition of MAC Client
   542			 * data, or MTU. The ePAPR specification is confusing as
   543			 * the definition is max-frame-size, but usage examples
   544			 * are clearly MTUs
   545			 */
   546			of_property_read_u32(np, "max-frame-size", &plat->maxmtu);
   547			of_property_read_u32(np, "snps,multicast-filter-bins",
   548					     &plat->multicast_filter_bins);
   549			of_property_read_u32(np, "snps,perfect-filter-entries",
   550					     &plat->unicast_filter_entries);
   551			plat->unicast_filter_entries = dwmac1000_validate_ucast_entries(
   552					&pdev->dev, plat->unicast_filter_entries);
   553			plat->multicast_filter_bins = dwmac1000_validate_mcast_bins(
   554					&pdev->dev, plat->multicast_filter_bins);
   555			plat->has_gmac = 1;
   556			plat->pmt = 1;
   557		}
   558	
   559		if (of_device_is_compatible(np, "snps,dwmac-3.40a")) {
   560			plat->has_gmac = 1;
   561			plat->enh_desc = 1;
   562			plat->tx_coe = 1;
   563			plat->bugged_jumbo = 1;
   564			plat->pmt = 1;
   565		}
   566	
   567		if (of_device_compatible_match(np, stmmac_gmac4_compats)) {
   568			plat->has_gmac4 = 1;
   569			plat->has_gmac = 0;
   570			plat->pmt = 1;
   571			if (of_property_read_bool(np, "snps,tso"))
   572				plat->flags |= STMMAC_FLAG_TSO_EN;
   573		}
   574	
   575		if (of_device_is_compatible(np, "snps,dwmac-3.610") ||
   576			of_device_is_compatible(np, "snps,dwmac-3.710")) {
   577			plat->enh_desc = 1;
   578			plat->bugged_jumbo = 1;
   579			plat->force_sf_dma_mode = 1;
   580		}
   581	
   582		if (of_device_is_compatible(np, "snps,dwxgmac")) {
   583			plat->has_xgmac = 1;
   584			plat->pmt = 1;
   585			if (of_property_read_bool(np, "snps,tso"))
   586				plat->flags |= STMMAC_FLAG_TSO_EN;
   587			of_property_read_u32(np, "snps,multicast-filter-bins",
   588					     &plat->multicast_filter_bins);
   589		}
   590	
   591		dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*dma_cfg),
   592				       GFP_KERNEL);
   593		if (!dma_cfg) {
   594			ret = ERR_PTR(-ENOMEM);
   595			goto error_put_mdio;
   596		}
   597		plat->dma_cfg = dma_cfg;
   598	
   599		of_property_read_u32(np, "snps,pbl", &dma_cfg->pbl);
   600		if (!dma_cfg->pbl)
   601			dma_cfg->pbl = DEFAULT_DMA_PBL;
   602		of_property_read_u32(np, "snps,txpbl", &dma_cfg->txpbl);
   603		of_property_read_u32(np, "snps,rxpbl", &dma_cfg->rxpbl);
   604		dma_cfg->pblx8 = !of_property_read_bool(np, "snps,no-pbl-x8");
   605	
   606		dma_cfg->aal = of_property_read_bool(np, "snps,aal");
   607		dma_cfg->fixed_burst = of_property_read_bool(np, "snps,fixed-burst");
   608		dma_cfg->mixed_burst = of_property_read_bool(np, "snps,mixed-burst");
   609	
   610		plat->force_thresh_dma_mode = of_property_read_bool(np, "snps,force_thresh_dma_mode");
   611		if (plat->force_thresh_dma_mode && plat->force_sf_dma_mode) {
   612			plat->force_sf_dma_mode = 0;
   613			dev_warn(&pdev->dev,
   614				 "force_sf_dma_mode is ignored if force_thresh_dma_mode is set.\n");
   615		}
   616	
   617		of_property_read_u32(np, "snps,ps-speed", &plat->mac_port_sel_speed);
   618	
   619		plat->axi = stmmac_axi_setup(pdev);
   620	
   621		rc = stmmac_mtl_setup(pdev, plat);
   622		if (rc) {
   623			ret = ERR_PTR(rc);
   624			goto error_put_mdio;
   625		}
   626	
   627		/* clock setup */
   628		if (!of_device_is_compatible(np, "snps,dwc-qos-ethernet-4.10")) {
   629			plat->stmmac_clk = devm_clk_get(&pdev->dev,
   630							STMMAC_RESOURCE_NAME);
   631			if (IS_ERR(plat->stmmac_clk)) {
   632				dev_warn(&pdev->dev, "Cannot get CSR clock\n");
   633				plat->stmmac_clk = NULL;
   634			}
   635			rc = clk_prepare_enable(plat->stmmac_clk);
   636			if (rc < 0)
   637				dev_warn(&pdev->dev, "Cannot enable CSR clock: %d\n", rc);
   638		}
   639	
   640		plat->pclk = devm_clk_get_optional(&pdev->dev, "pclk");
   641		if (IS_ERR(plat->pclk)) {
   642			ret = plat->pclk;
   643			goto error_pclk_get;
   644		}
   645		rc = clk_prepare_enable(plat->pclk);
 > 646		if (rc < 0) {
   647			dev_err(&pdev->dev, "Cannot enable pclk: %d\n", rc);
   648			goto error_pclk_get;
   649		}
   650	
   651		/* Fall-back to main clock in case of no PTP ref is passed */
   652		plat->clk_ptp_ref = devm_clk_get(&pdev->dev, "ptp_ref");
   653		if (IS_ERR(plat->clk_ptp_ref)) {
   654			plat->clk_ptp_rate = clk_get_rate(plat->stmmac_clk);
   655			plat->clk_ptp_ref = NULL;
   656			dev_info(&pdev->dev, "PTP uses main clock\n");
   657		} else {
   658			plat->clk_ptp_rate = clk_get_rate(plat->clk_ptp_ref);
   659			dev_dbg(&pdev->dev, "PTP rate %lu\n", plat->clk_ptp_rate);
   660		}
   661	
   662		plat->stmmac_rst = devm_reset_control_get_optional(&pdev->dev,
   663								   STMMAC_RESOURCE_NAME);
   664		if (IS_ERR(plat->stmmac_rst)) {
   665			ret = plat->stmmac_rst;
   666			goto error_hw_init;
   667		}
   668	
   669		plat->stmmac_ahb_rst = devm_reset_control_get_optional_shared(
   670								&pdev->dev, "ahb");
   671		if (IS_ERR(plat->stmmac_ahb_rst)) {
   672			ret = plat->stmmac_ahb_rst;
   673			goto error_hw_init;
   674		}
   675	
   676		return plat;
   677	
   678	error_hw_init:
   679		clk_disable_unprepare(plat->pclk);
   680	error_pclk_get:
   681		clk_disable_unprepare(plat->stmmac_clk);
   682	error_put_mdio:
   683		of_node_put(plat->mdio_node);
   684	error_put_phy:
   685		of_node_put(plat->phy_node);
   686	
   687		return ret;
   688	}
   689	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


      reply	other threads:[~2025-11-14  6:47 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-13 13:40 [PATCH net] net: stmmac: add clk_prepare_enable() error handling Pavel Zhigulin
2025-11-14  6:45 ` kernel test robot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202511141014.PnFNp7CX-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Pavel.Zhigulin@kaspersky.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=edumazet@google.com \
    --cc=inochiama@gmail.com \
    --cc=joe@pf.is.s.u-tokyo.ac.jp \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=llvm@lists.linux.dev \
    --cc=lvc-project@linuxtesting.org \
    --cc=maxime.chevallier@bootlin.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pabeni@redhat.com \
    --cc=peppe.cavallaro@st.com \
    --cc=quentin.schulz@cherry.de \
    --cc=rayagond@vayavyalabs.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.