All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@linaro.org>
To: oe-kbuild@lists.linux.dev, Biju <biju.das.au@gmail.com>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>
Cc: lkp@intel.com, oe-kbuild-all@lists.linux.dev,
	Biju Das <biju.das.jz@bp.renesas.com>,
	linux-renesas-soc@vger.kernel.org, linux-clk@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@bp.renesas.com>
Subject: Re: [PATCH 2/4] clk: renesas: rzv2h: Add support for parent mod clocks
Date: Sat, 16 Aug 2025 13:28:27 +0300	[thread overview]
Message-ID: <202508160958.ounSAlER-lkp@intel.com> (raw)
In-Reply-To: <20250814124832.76266-3-biju.das.jz@bp.renesas.com>

Hi Biju,

kernel test robot noticed the following build warnings:

https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Biju/clk-renesas-rzv2h-Refactor-rzv2h_cpg_fixed_mod_status_clk_register/20250814-205111
base:   https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git renesas-clk
patch link:    https://lore.kernel.org/r/20250814124832.76266-3-biju.das.jz%40bp.renesas.com
patch subject: [PATCH 2/4] clk: renesas: rzv2h: Add support for parent mod clocks
config: hexagon-randconfig-r072-20250815 (https://download.01.org/0day-ci/archive/20250816/202508160958.ounSAlER-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 93d24b6b7b148c47a2fa228a4ef31524fa1d9f3f)

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>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202508160958.ounSAlER-lkp@intel.com/

New smatch warnings:
drivers/clk/renesas/rzv2h-cpg.c:875 rzv2h_cpg_register_mod_clk() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +875 drivers/clk/renesas/rzv2h-cpg.c

dd22e56217495e Lad Prabhakar 2024-07-29  770  static void __init
dd22e56217495e Lad Prabhakar 2024-07-29  771  rzv2h_cpg_register_mod_clk(const struct rzv2h_mod_clk *mod,
dd22e56217495e Lad Prabhakar 2024-07-29  772  			   struct rzv2h_cpg_priv *priv)
dd22e56217495e Lad Prabhakar 2024-07-29  773  {
dd22e56217495e Lad Prabhakar 2024-07-29  774  	struct mod_clock *clock = NULL;
dd22e56217495e Lad Prabhakar 2024-07-29  775  	struct device *dev = priv->dev;
dd22e56217495e Lad Prabhakar 2024-07-29  776  	struct clk_init_data init;
dd22e56217495e Lad Prabhakar 2024-07-29  777  	struct clk *parent, *clk;
dd22e56217495e Lad Prabhakar 2024-07-29  778  	const char *parent_name;
dd22e56217495e Lad Prabhakar 2024-07-29  779  	unsigned int id;
dd22e56217495e Lad Prabhakar 2024-07-29  780  	int ret;
dd22e56217495e Lad Prabhakar 2024-07-29  781  
dd22e56217495e Lad Prabhakar 2024-07-29  782  	id = GET_MOD_CLK_ID(priv->num_core_clks, mod->on_index, mod->on_bit);
dd22e56217495e Lad Prabhakar 2024-07-29  783  	WARN_DEBUG(id >= priv->num_core_clks + priv->num_mod_clks);
dd22e56217495e Lad Prabhakar 2024-07-29  784  	WARN_DEBUG(mod->parent >= priv->num_core_clks + priv->num_mod_clks);
dd22e56217495e Lad Prabhakar 2024-07-29  785  	WARN_DEBUG(PTR_ERR(priv->clks[id]) != -ENOENT);
dd22e56217495e Lad Prabhakar 2024-07-29  786  
dd22e56217495e Lad Prabhakar 2024-07-29  787  	parent = priv->clks[mod->parent];
dd22e56217495e Lad Prabhakar 2024-07-29  788  	if (IS_ERR(parent)) {
dd22e56217495e Lad Prabhakar 2024-07-29  789  		clk = parent;
dd22e56217495e Lad Prabhakar 2024-07-29  790  		goto fail;
dd22e56217495e Lad Prabhakar 2024-07-29  791  	}
dd22e56217495e Lad Prabhakar 2024-07-29  792  
dd22e56217495e Lad Prabhakar 2024-07-29  793  	clock = devm_kzalloc(dev, sizeof(*clock), GFP_KERNEL);
dd22e56217495e Lad Prabhakar 2024-07-29  794  	if (!clock) {
dd22e56217495e Lad Prabhakar 2024-07-29  795  		clk = ERR_PTR(-ENOMEM);
dd22e56217495e Lad Prabhakar 2024-07-29  796  		goto fail;
dd22e56217495e Lad Prabhakar 2024-07-29  797  	}
dd22e56217495e Lad Prabhakar 2024-07-29  798  
dd22e56217495e Lad Prabhakar 2024-07-29  799  	init.name = mod->name;
dd22e56217495e Lad Prabhakar 2024-07-29  800  	init.ops = &rzv2h_mod_clock_ops;
dd22e56217495e Lad Prabhakar 2024-07-29  801  	init.flags = CLK_SET_RATE_PARENT;
dd22e56217495e Lad Prabhakar 2024-07-29  802  	if (mod->critical)
dd22e56217495e Lad Prabhakar 2024-07-29  803  		init.flags |= CLK_IS_CRITICAL;
dd22e56217495e Lad Prabhakar 2024-07-29  804  
dd22e56217495e Lad Prabhakar 2024-07-29  805  	parent_name = __clk_get_name(parent);
dd22e56217495e Lad Prabhakar 2024-07-29  806  	init.parent_names = &parent_name;
dd22e56217495e Lad Prabhakar 2024-07-29  807  	init.num_parents = 1;
dd22e56217495e Lad Prabhakar 2024-07-29  808  
dd22e56217495e Lad Prabhakar 2024-07-29  809  	clock->on_index = mod->on_index;
dd22e56217495e Lad Prabhakar 2024-07-29  810  	clock->on_bit = mod->on_bit;
dd22e56217495e Lad Prabhakar 2024-07-29  811  	clock->mon_index = mod->mon_index;
dd22e56217495e Lad Prabhakar 2024-07-29  812  	clock->mon_bit = mod->mon_bit;
03108a2614ecab Lad Prabhakar 2024-12-02  813  	clock->no_pm = mod->no_pm;
899e7ede4c19c6 Lad Prabhakar 2025-05-09  814  	clock->ext_clk_mux_index = mod->ext_clk_mux_index;
dd22e56217495e Lad Prabhakar 2024-07-29  815  	clock->priv = priv;
dd22e56217495e Lad Prabhakar 2024-07-29  816  	clock->hw.init = &init;
9b6e63a777ea5f Biju Das      2024-12-13  817  	clock->mstop_data = mod->mstop_data;
dd22e56217495e Lad Prabhakar 2024-07-29  818  
dd22e56217495e Lad Prabhakar 2024-07-29  819  	ret = devm_clk_hw_register(dev, &clock->hw);
dd22e56217495e Lad Prabhakar 2024-07-29  820  	if (ret) {
dd22e56217495e Lad Prabhakar 2024-07-29  821  		clk = ERR_PTR(ret);
dd22e56217495e Lad Prabhakar 2024-07-29  822  		goto fail;
dd22e56217495e Lad Prabhakar 2024-07-29  823  	}
dd22e56217495e Lad Prabhakar 2024-07-29  824  
dd22e56217495e Lad Prabhakar 2024-07-29  825  	priv->clks[id] = clock->hw.clk;
18610e6bf54faa Biju Das      2025-08-14  826  	if (mod->child_name) {
18610e6bf54faa Biju Das      2025-08-14  827  		WARN_DEBUG(mod->child >= priv->num_core_clks);
18610e6bf54faa Biju Das      2025-08-14  828  		WARN_DEBUG(PTR_ERR(priv->clks[mod->child]) != -ENOENT);
18610e6bf54faa Biju Das      2025-08-14  829  
18610e6bf54faa Biju Das      2025-08-14  830  		clk = rzv2h_cpg_mod_status_clk_register(priv, mod->child_name, mod->name, 1, 1,
18610e6bf54faa Biju Das      2025-08-14  831  							FIXED_MOD_CONF_PACK(mod->mon_index,
18610e6bf54faa Biju Das      2025-08-14  832  									    mod->mon_bit));
18610e6bf54faa Biju Das      2025-08-14  833  		if (IS_ERR_OR_NULL(clk))
18610e6bf54faa Biju Das      2025-08-14  834  			goto fail;

This isn't how IS_ERR_OR_NULL() is supposed to work...  :(  The NULL should
be treated like success, it shouldn't print an error message, unless it's
something like:

	WARN_ON_ONCE(!clk); // rzv2h_cpg_mod_status_clk_register() is buggy

I have written a blog about how how IS_ERR_OR_NULL() is supposed to work:
https://staticthinking.wordpress.com/2022/08/01/mixing-error-pointers-and-null/

18610e6bf54faa Biju Das      2025-08-14  835  		priv->clks[mod->child] = clk;
18610e6bf54faa Biju Das      2025-08-14  836  	}
dd22e56217495e Lad Prabhakar 2024-07-29  837  
9b6e63a777ea5f Biju Das      2024-12-13  838  	/*
9b6e63a777ea5f Biju Das      2024-12-13  839  	 * Ensure the module clocks and MSTOP bits are synchronized when they are
9b6e63a777ea5f Biju Das      2024-12-13  840  	 * turned ON by the bootloader. Enable MSTOP bits for module clocks that were
9b6e63a777ea5f Biju Das      2024-12-13  841  	 * turned ON in an earlier boot stage.
9b6e63a777ea5f Biju Das      2024-12-13  842  	 */
9b6e63a777ea5f Biju Das      2024-12-13  843  	if (clock->mstop_data != BUS_MSTOP_NONE &&
9b6e63a777ea5f Biju Das      2024-12-13  844  	    !mod->critical && rzv2h_mod_clock_is_enabled(&clock->hw)) {
9b6e63a777ea5f Biju Das      2024-12-13  845  		rzv2h_mod_clock_mstop_enable(priv, clock->mstop_data);
9b6e63a777ea5f Biju Das      2024-12-13  846  	} else if (clock->mstop_data != BUS_MSTOP_NONE && mod->critical) {
9b6e63a777ea5f Biju Das      2024-12-13  847  		unsigned long mstop_mask = FIELD_GET(BUS_MSTOP_BITS_MASK, clock->mstop_data);
9b6e63a777ea5f Biju Das      2024-12-13  848  		u16 mstop_index = FIELD_GET(BUS_MSTOP_IDX_MASK, clock->mstop_data);
69ac2acd209a15 Biju Das      2025-02-22  849  		atomic_t *mstop = &priv->mstop_count[mstop_index * 16];
9b6e63a777ea5f Biju Das      2024-12-13  850  		unsigned long flags;
9b6e63a777ea5f Biju Das      2024-12-13  851  		unsigned int i;
9b6e63a777ea5f Biju Das      2024-12-13  852  		u32 val = 0;
9b6e63a777ea5f Biju Das      2024-12-13  853  
9b6e63a777ea5f Biju Das      2024-12-13  854  		/*
9b6e63a777ea5f Biju Das      2024-12-13  855  		 * Critical clocks are turned ON immediately upon registration, and the
9b6e63a777ea5f Biju Das      2024-12-13  856  		 * MSTOP counter is updated through the rzv2h_mod_clock_enable() path.
9b6e63a777ea5f Biju Das      2024-12-13  857  		 * However, if the critical clocks were already turned ON by the initial
9b6e63a777ea5f Biju Das      2024-12-13  858  		 * bootloader, synchronize the atomic counter here and clear the MSTOP bit.
9b6e63a777ea5f Biju Das      2024-12-13  859  		 */
9b6e63a777ea5f Biju Das      2024-12-13  860  		spin_lock_irqsave(&priv->rmw_lock, flags);
9b6e63a777ea5f Biju Das      2024-12-13  861  		for_each_set_bit(i, &mstop_mask, 16) {
9b6e63a777ea5f Biju Das      2024-12-13  862  			if (atomic_read(&mstop[i]))
9b6e63a777ea5f Biju Das      2024-12-13  863  				continue;
9b6e63a777ea5f Biju Das      2024-12-13  864  			val |= BIT(i) << 16;
9b6e63a777ea5f Biju Das      2024-12-13  865  			atomic_inc(&mstop[i]);
9b6e63a777ea5f Biju Das      2024-12-13  866  		}
9b6e63a777ea5f Biju Das      2024-12-13  867  		if (val)
9b6e63a777ea5f Biju Das      2024-12-13  868  			writel(val, priv->base + CPG_BUS_MSTOP(mstop_index));
9b6e63a777ea5f Biju Das      2024-12-13  869  		spin_unlock_irqrestore(&priv->rmw_lock, flags);
9b6e63a777ea5f Biju Das      2024-12-13  870  	}
9b6e63a777ea5f Biju Das      2024-12-13  871  
dd22e56217495e Lad Prabhakar 2024-07-29  872  	return;
dd22e56217495e Lad Prabhakar 2024-07-29  873  
dd22e56217495e Lad Prabhakar 2024-07-29  874  fail:
dd22e56217495e Lad Prabhakar 2024-07-29 @875  	dev_err(dev, "Failed to register module clock %s: %ld\n",
dd22e56217495e Lad Prabhakar 2024-07-29  876  		mod->name, PTR_ERR(clk));
dd22e56217495e Lad Prabhakar 2024-07-29  877  }

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


WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH 2/4] clk: renesas: rzv2h: Add support for parent mod clocks
Date: Sat, 16 Aug 2025 09:29:14 +0800	[thread overview]
Message-ID: <202508160958.ounSAlER-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20250814124832.76266-3-biju.das.jz@bp.renesas.com>
References: <20250814124832.76266-3-biju.das.jz@bp.renesas.com>
TO: Biju <biju.das.au@gmail.com>
TO: Geert Uytterhoeven <geert+renesas@glider.be>
TO: Michael Turquette <mturquette@baylibre.com>
TO: Stephen Boyd <sboyd@kernel.org>
CC: Biju Das <biju.das.jz@bp.renesas.com>
CC: linux-renesas-soc@vger.kernel.org
CC: linux-clk@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@bp.renesas.com>

Hi Biju,

kernel test robot noticed the following build warnings:

[auto build test WARNING on geert-renesas-drivers/renesas-clk]
[also build test WARNING on clk/clk-next robh/for-next linus/master v6.17-rc1 next-20250815]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Biju/clk-renesas-rzv2h-Refactor-rzv2h_cpg_fixed_mod_status_clk_register/20250814-205111
base:   https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git renesas-clk
patch link:    https://lore.kernel.org/r/20250814124832.76266-3-biju.das.jz%40bp.renesas.com
patch subject: [PATCH 2/4] clk: renesas: rzv2h: Add support for parent mod clocks
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: hexagon-randconfig-r072-20250815 (https://download.01.org/0day-ci/archive/20250816/202508160958.ounSAlER-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 93d24b6b7b148c47a2fa228a4ef31524fa1d9f3f)

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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202508160958.ounSAlER-lkp@intel.com/

New smatch warnings:
drivers/clk/renesas/rzv2h-cpg.c:875 rzv2h_cpg_register_mod_clk() warn: passing zero to 'PTR_ERR'

Old smatch warnings:
drivers/clk/renesas/rzv2h-cpg.c:621 rzv2h_cpg_register_core_clk() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +875 drivers/clk/renesas/rzv2h-cpg.c

dd22e56217495e Lad Prabhakar 2024-07-29  769  
dd22e56217495e Lad Prabhakar 2024-07-29  770  static void __init
dd22e56217495e Lad Prabhakar 2024-07-29  771  rzv2h_cpg_register_mod_clk(const struct rzv2h_mod_clk *mod,
dd22e56217495e Lad Prabhakar 2024-07-29  772  			   struct rzv2h_cpg_priv *priv)
dd22e56217495e Lad Prabhakar 2024-07-29  773  {
dd22e56217495e Lad Prabhakar 2024-07-29  774  	struct mod_clock *clock = NULL;
dd22e56217495e Lad Prabhakar 2024-07-29  775  	struct device *dev = priv->dev;
dd22e56217495e Lad Prabhakar 2024-07-29  776  	struct clk_init_data init;
dd22e56217495e Lad Prabhakar 2024-07-29  777  	struct clk *parent, *clk;
dd22e56217495e Lad Prabhakar 2024-07-29  778  	const char *parent_name;
dd22e56217495e Lad Prabhakar 2024-07-29  779  	unsigned int id;
dd22e56217495e Lad Prabhakar 2024-07-29  780  	int ret;
dd22e56217495e Lad Prabhakar 2024-07-29  781  
dd22e56217495e Lad Prabhakar 2024-07-29  782  	id = GET_MOD_CLK_ID(priv->num_core_clks, mod->on_index, mod->on_bit);
dd22e56217495e Lad Prabhakar 2024-07-29  783  	WARN_DEBUG(id >= priv->num_core_clks + priv->num_mod_clks);
dd22e56217495e Lad Prabhakar 2024-07-29  784  	WARN_DEBUG(mod->parent >= priv->num_core_clks + priv->num_mod_clks);
dd22e56217495e Lad Prabhakar 2024-07-29  785  	WARN_DEBUG(PTR_ERR(priv->clks[id]) != -ENOENT);
dd22e56217495e Lad Prabhakar 2024-07-29  786  
dd22e56217495e Lad Prabhakar 2024-07-29  787  	parent = priv->clks[mod->parent];
dd22e56217495e Lad Prabhakar 2024-07-29  788  	if (IS_ERR(parent)) {
dd22e56217495e Lad Prabhakar 2024-07-29  789  		clk = parent;
dd22e56217495e Lad Prabhakar 2024-07-29  790  		goto fail;
dd22e56217495e Lad Prabhakar 2024-07-29  791  	}
dd22e56217495e Lad Prabhakar 2024-07-29  792  
dd22e56217495e Lad Prabhakar 2024-07-29  793  	clock = devm_kzalloc(dev, sizeof(*clock), GFP_KERNEL);
dd22e56217495e Lad Prabhakar 2024-07-29  794  	if (!clock) {
dd22e56217495e Lad Prabhakar 2024-07-29  795  		clk = ERR_PTR(-ENOMEM);
dd22e56217495e Lad Prabhakar 2024-07-29  796  		goto fail;
dd22e56217495e Lad Prabhakar 2024-07-29  797  	}
dd22e56217495e Lad Prabhakar 2024-07-29  798  
dd22e56217495e Lad Prabhakar 2024-07-29  799  	init.name = mod->name;
dd22e56217495e Lad Prabhakar 2024-07-29  800  	init.ops = &rzv2h_mod_clock_ops;
dd22e56217495e Lad Prabhakar 2024-07-29  801  	init.flags = CLK_SET_RATE_PARENT;
dd22e56217495e Lad Prabhakar 2024-07-29  802  	if (mod->critical)
dd22e56217495e Lad Prabhakar 2024-07-29  803  		init.flags |= CLK_IS_CRITICAL;
dd22e56217495e Lad Prabhakar 2024-07-29  804  
dd22e56217495e Lad Prabhakar 2024-07-29  805  	parent_name = __clk_get_name(parent);
dd22e56217495e Lad Prabhakar 2024-07-29  806  	init.parent_names = &parent_name;
dd22e56217495e Lad Prabhakar 2024-07-29  807  	init.num_parents = 1;
dd22e56217495e Lad Prabhakar 2024-07-29  808  
dd22e56217495e Lad Prabhakar 2024-07-29  809  	clock->on_index = mod->on_index;
dd22e56217495e Lad Prabhakar 2024-07-29  810  	clock->on_bit = mod->on_bit;
dd22e56217495e Lad Prabhakar 2024-07-29  811  	clock->mon_index = mod->mon_index;
dd22e56217495e Lad Prabhakar 2024-07-29  812  	clock->mon_bit = mod->mon_bit;
03108a2614ecab Lad Prabhakar 2024-12-02  813  	clock->no_pm = mod->no_pm;
899e7ede4c19c6 Lad Prabhakar 2025-05-09  814  	clock->ext_clk_mux_index = mod->ext_clk_mux_index;
dd22e56217495e Lad Prabhakar 2024-07-29  815  	clock->priv = priv;
dd22e56217495e Lad Prabhakar 2024-07-29  816  	clock->hw.init = &init;
9b6e63a777ea5f Biju Das      2024-12-13  817  	clock->mstop_data = mod->mstop_data;
dd22e56217495e Lad Prabhakar 2024-07-29  818  
dd22e56217495e Lad Prabhakar 2024-07-29  819  	ret = devm_clk_hw_register(dev, &clock->hw);
dd22e56217495e Lad Prabhakar 2024-07-29  820  	if (ret) {
dd22e56217495e Lad Prabhakar 2024-07-29  821  		clk = ERR_PTR(ret);
dd22e56217495e Lad Prabhakar 2024-07-29  822  		goto fail;
dd22e56217495e Lad Prabhakar 2024-07-29  823  	}
dd22e56217495e Lad Prabhakar 2024-07-29  824  
dd22e56217495e Lad Prabhakar 2024-07-29  825  	priv->clks[id] = clock->hw.clk;
18610e6bf54faa Biju Das      2025-08-14  826  	if (mod->child_name) {
18610e6bf54faa Biju Das      2025-08-14  827  		WARN_DEBUG(mod->child >= priv->num_core_clks);
18610e6bf54faa Biju Das      2025-08-14  828  		WARN_DEBUG(PTR_ERR(priv->clks[mod->child]) != -ENOENT);
18610e6bf54faa Biju Das      2025-08-14  829  
18610e6bf54faa Biju Das      2025-08-14  830  		clk = rzv2h_cpg_mod_status_clk_register(priv, mod->child_name, mod->name, 1, 1,
18610e6bf54faa Biju Das      2025-08-14  831  							FIXED_MOD_CONF_PACK(mod->mon_index,
18610e6bf54faa Biju Das      2025-08-14  832  									    mod->mon_bit));
18610e6bf54faa Biju Das      2025-08-14  833  		if (IS_ERR_OR_NULL(clk))
18610e6bf54faa Biju Das      2025-08-14  834  			goto fail;
18610e6bf54faa Biju Das      2025-08-14  835  		priv->clks[mod->child] = clk;
18610e6bf54faa Biju Das      2025-08-14  836  	}
dd22e56217495e Lad Prabhakar 2024-07-29  837  
9b6e63a777ea5f Biju Das      2024-12-13  838  	/*
9b6e63a777ea5f Biju Das      2024-12-13  839  	 * Ensure the module clocks and MSTOP bits are synchronized when they are
9b6e63a777ea5f Biju Das      2024-12-13  840  	 * turned ON by the bootloader. Enable MSTOP bits for module clocks that were
9b6e63a777ea5f Biju Das      2024-12-13  841  	 * turned ON in an earlier boot stage.
9b6e63a777ea5f Biju Das      2024-12-13  842  	 */
9b6e63a777ea5f Biju Das      2024-12-13  843  	if (clock->mstop_data != BUS_MSTOP_NONE &&
9b6e63a777ea5f Biju Das      2024-12-13  844  	    !mod->critical && rzv2h_mod_clock_is_enabled(&clock->hw)) {
9b6e63a777ea5f Biju Das      2024-12-13  845  		rzv2h_mod_clock_mstop_enable(priv, clock->mstop_data);
9b6e63a777ea5f Biju Das      2024-12-13  846  	} else if (clock->mstop_data != BUS_MSTOP_NONE && mod->critical) {
9b6e63a777ea5f Biju Das      2024-12-13  847  		unsigned long mstop_mask = FIELD_GET(BUS_MSTOP_BITS_MASK, clock->mstop_data);
9b6e63a777ea5f Biju Das      2024-12-13  848  		u16 mstop_index = FIELD_GET(BUS_MSTOP_IDX_MASK, clock->mstop_data);
69ac2acd209a15 Biju Das      2025-02-22  849  		atomic_t *mstop = &priv->mstop_count[mstop_index * 16];
9b6e63a777ea5f Biju Das      2024-12-13  850  		unsigned long flags;
9b6e63a777ea5f Biju Das      2024-12-13  851  		unsigned int i;
9b6e63a777ea5f Biju Das      2024-12-13  852  		u32 val = 0;
9b6e63a777ea5f Biju Das      2024-12-13  853  
9b6e63a777ea5f Biju Das      2024-12-13  854  		/*
9b6e63a777ea5f Biju Das      2024-12-13  855  		 * Critical clocks are turned ON immediately upon registration, and the
9b6e63a777ea5f Biju Das      2024-12-13  856  		 * MSTOP counter is updated through the rzv2h_mod_clock_enable() path.
9b6e63a777ea5f Biju Das      2024-12-13  857  		 * However, if the critical clocks were already turned ON by the initial
9b6e63a777ea5f Biju Das      2024-12-13  858  		 * bootloader, synchronize the atomic counter here and clear the MSTOP bit.
9b6e63a777ea5f Biju Das      2024-12-13  859  		 */
9b6e63a777ea5f Biju Das      2024-12-13  860  		spin_lock_irqsave(&priv->rmw_lock, flags);
9b6e63a777ea5f Biju Das      2024-12-13  861  		for_each_set_bit(i, &mstop_mask, 16) {
9b6e63a777ea5f Biju Das      2024-12-13  862  			if (atomic_read(&mstop[i]))
9b6e63a777ea5f Biju Das      2024-12-13  863  				continue;
9b6e63a777ea5f Biju Das      2024-12-13  864  			val |= BIT(i) << 16;
9b6e63a777ea5f Biju Das      2024-12-13  865  			atomic_inc(&mstop[i]);
9b6e63a777ea5f Biju Das      2024-12-13  866  		}
9b6e63a777ea5f Biju Das      2024-12-13  867  		if (val)
9b6e63a777ea5f Biju Das      2024-12-13  868  			writel(val, priv->base + CPG_BUS_MSTOP(mstop_index));
9b6e63a777ea5f Biju Das      2024-12-13  869  		spin_unlock_irqrestore(&priv->rmw_lock, flags);
9b6e63a777ea5f Biju Das      2024-12-13  870  	}
9b6e63a777ea5f Biju Das      2024-12-13  871  
dd22e56217495e Lad Prabhakar 2024-07-29  872  	return;
dd22e56217495e Lad Prabhakar 2024-07-29  873  
dd22e56217495e Lad Prabhakar 2024-07-29  874  fail:
dd22e56217495e Lad Prabhakar 2024-07-29 @875  	dev_err(dev, "Failed to register module clock %s: %ld\n",
dd22e56217495e Lad Prabhakar 2024-07-29  876  		mod->name, PTR_ERR(clk));
dd22e56217495e Lad Prabhakar 2024-07-29  877  }
dd22e56217495e Lad Prabhakar 2024-07-29  878  

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

  reply	other threads:[~2025-08-16 10:28 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-14 12:48 [PATCH 0/4] Add RZ/G3E GPT clocks and resets Biju
2025-08-14 12:48 ` [PATCH 1/4] clk: renesas: rzv2h: Refactor rzv2h_cpg_fixed_mod_status_clk_register() Biju
2025-08-14 12:48 ` [PATCH 2/4] clk: renesas: rzv2h: Add support for parent mod clocks Biju
2025-08-16  1:29   ` kernel test robot [this message]
2025-08-16 10:28     ` Dan Carpenter
2025-08-20  6:14     ` Biju Das
2025-08-14 12:48 ` [PATCH 3/4] dt-bindings: clock: renesas,r9a09g047-cpg: Add GPT core clocks Biju
2025-08-14 19:49   ` Conor Dooley
2025-08-20 10:39     ` Biju Das
2025-08-14 12:48 ` [PATCH 4/4] clk: renesas: r9a09g047: Add GPT clocks and resets Biju
2025-08-19 15:10 ` [PATCH 0/4] Add RZ/G3E " Geert Uytterhoeven
2025-08-20  6:35   ` Biju Das
2025-08-20  9:46   ` Geert Uytterhoeven

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=202508160958.ounSAlER-lkp@intel.com \
    --to=dan.carpenter@linaro.org \
    --cc=biju.das.au@gmail.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=geert+renesas@glider.be \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=mturquette@baylibre.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=oe-kbuild@lists.linux.dev \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=sboyd@kernel.org \
    /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.