* [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() @ 2020-07-16 6:30 Rahul Tanwar 2020-07-16 6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Rahul Tanwar @ 2020-07-16 6:30 UTC (permalink / raw) To: sboyd, mturquette, linux-clk Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu, cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar To ensure that clks are unregistered in case of any failure, use devm_clk_hw_register() instead of clk_hw_register(). Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com> --- drivers/clk/x86/clk-cgu-pll.c | 2 +- drivers/clk/x86/clk-cgu.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/clk/x86/clk-cgu-pll.c b/drivers/clk/x86/clk-cgu-pll.c index c03cc6b85b9f..3179557b5f78 100644 --- a/drivers/clk/x86/clk-cgu-pll.c +++ b/drivers/clk/x86/clk-cgu-pll.c @@ -128,7 +128,7 @@ lgm_clk_register_pll(struct lgm_clk_provider *ctx, pll->hw.init = &init; hw = &pll->hw; - ret = clk_hw_register(dev, hw); + ret = devm_clk_hw_register(dev, hw); if (ret) return ERR_PTR(ret); diff --git a/drivers/clk/x86/clk-cgu.c b/drivers/clk/x86/clk-cgu.c index 56af0e04ec1e..88ebeb53b109 100644 --- a/drivers/clk/x86/clk-cgu.c +++ b/drivers/clk/x86/clk-cgu.c @@ -119,7 +119,7 @@ lgm_clk_register_mux(struct lgm_clk_provider *ctx, mux->hw.init = &init; hw = &mux->hw; - ret = clk_hw_register(dev, hw); + ret = devm_clk_hw_register(dev, hw); if (ret) return ERR_PTR(ret); @@ -247,7 +247,7 @@ lgm_clk_register_divider(struct lgm_clk_provider *ctx, div->hw.init = &init; hw = &div->hw; - ret = clk_hw_register(dev, hw); + ret = devm_clk_hw_register(dev, hw); if (ret) return ERR_PTR(ret); @@ -361,7 +361,7 @@ lgm_clk_register_gate(struct lgm_clk_provider *ctx, gate->hw.init = &init; hw = &gate->hw; - ret = clk_hw_register(dev, hw); + ret = devm_clk_hw_register(dev, hw); if (ret) return ERR_PTR(ret); @@ -624,7 +624,7 @@ int lgm_clk_register_ddiv(struct lgm_clk_provider *ctx, ddiv->hw.init = &init; hw = &ddiv->hw; - ret = clk_hw_register(dev, hw); + ret = devm_clk_hw_register(dev, hw); if (ret) { dev_err(dev, "register clk: %s failed!\n", list->name); return ret; -- 2.11.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] clk: intel: Improve locking in the driver 2020-07-16 6:30 [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Rahul Tanwar @ 2020-07-16 6:30 ` Rahul Tanwar 2020-07-24 8:57 ` Stephen Boyd 2020-07-16 6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar 2020-07-24 8:57 ` [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Stephen Boyd 2 siblings, 1 reply; 7+ messages in thread From: Rahul Tanwar @ 2020-07-16 6:30 UTC (permalink / raw) To: sboyd, mturquette, linux-clk Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu, cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar Remove/reduce unnecessary spin locking of the code. Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com> --- drivers/clk/x86/clk-cgu.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/drivers/clk/x86/clk-cgu.c b/drivers/clk/x86/clk-cgu.c index 88ebeb53b109..c379fedfb9f2 100644 --- a/drivers/clk/x86/clk-cgu.c +++ b/drivers/clk/x86/clk-cgu.c @@ -420,18 +420,14 @@ lgm_clk_ddiv_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) { struct lgm_clk_ddiv *ddiv = to_lgm_clk_ddiv(hw); unsigned int div0, div1, exdiv; - unsigned long flags; u64 prate; - spin_lock_irqsave(&ddiv->lock, flags); div0 = lgm_get_clk_val(ddiv->membase, ddiv->reg, ddiv->shift0, ddiv->width0) + 1; div1 = lgm_get_clk_val(ddiv->membase, ddiv->reg, ddiv->shift1, ddiv->width1) + 1; exdiv = lgm_get_clk_val(ddiv->membase, ddiv->reg, ddiv->shift2, ddiv->width2); - spin_unlock_irqrestore(&ddiv->lock, flags); - prate = (u64)parent_rate; do_div(prate, div0); do_div(prate, div1); @@ -548,24 +544,21 @@ lgm_clk_ddiv_round_rate(struct clk_hw *hw, unsigned long rate, div = div * 2; div = DIV_ROUND_CLOSEST_ULL((u64)div, 5); } + spin_unlock_irqrestore(&ddiv->lock, flags); - if (div <= 0) { - spin_unlock_irqrestore(&ddiv->lock, flags); + if (div <= 0) return *prate; - } - if (lgm_clk_get_ddiv_val(div, &ddiv1, &ddiv2) != 0) { - if (lgm_clk_get_ddiv_val(div + 1, &ddiv1, &ddiv2) != 0) { - spin_unlock_irqrestore(&ddiv->lock, flags); + if (lgm_clk_get_ddiv_val(div, &ddiv1, &ddiv2) != 0) + if (lgm_clk_get_ddiv_val(div + 1, &ddiv1, &ddiv2) != 0) return -EINVAL; - } - } rate64 = *prate; do_div(rate64, ddiv1); do_div(rate64, ddiv2); /* if predivide bit is enabled, modify rounded rate by factor of 2.5 */ + spin_lock_irqsave(&ddiv->lock, flags); if (lgm_get_clk_val(ddiv->membase, ddiv->reg, ddiv->shift2, 1)) { rate64 = rate64 * 2; rate64 = DIV_ROUND_CLOSEST_ULL(rate64, 5); -- 2.11.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] clk: intel: Improve locking in the driver 2020-07-16 6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar @ 2020-07-24 8:57 ` Stephen Boyd 0 siblings, 0 replies; 7+ messages in thread From: Stephen Boyd @ 2020-07-24 8:57 UTC (permalink / raw) To: Rahul Tanwar, linux-clk, mturquette Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu, cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar Quoting Rahul Tanwar (2020-07-15 23:30:31) > Remove/reduce unnecessary spin locking of the code. > > Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com> > --- Applied to clk-next ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code 2020-07-16 6:30 [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Rahul Tanwar 2020-07-16 6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar @ 2020-07-16 6:30 ` Rahul Tanwar 2020-07-24 8:56 ` Stephen Boyd 2020-07-24 8:58 ` Stephen Boyd 2020-07-24 8:57 ` [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Stephen Boyd 2 siblings, 2 replies; 7+ messages in thread From: Rahul Tanwar @ 2020-07-16 6:30 UTC (permalink / raw) To: sboyd, mturquette, linux-clk Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu, cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar memset can be avoided in a loop if the variables used are declared inside the loop. Move such variables declaration inside the loop to avoid memset. Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com> --- drivers/clk/x86/clk-cgu.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/clk/x86/clk-cgu.c b/drivers/clk/x86/clk-cgu.c index c379fedfb9f2..9a1be7035fd0 100644 --- a/drivers/clk/x86/clk-cgu.c +++ b/drivers/clk/x86/clk-cgu.c @@ -581,19 +581,18 @@ int lgm_clk_register_ddiv(struct lgm_clk_provider *ctx, unsigned int nr_clk) { struct device *dev = ctx->dev; - struct clk_init_data init = {}; - struct lgm_clk_ddiv *ddiv; struct clk_hw *hw; unsigned int idx; int ret; for (idx = 0; idx < nr_clk; idx++, list++) { - ddiv = NULL; + struct clk_init_data init = {}; + struct lgm_clk_ddiv *ddiv = NULL; + ddiv = devm_kzalloc(dev, sizeof(*ddiv), GFP_KERNEL); if (!ddiv) return -ENOMEM; - memset(&init, 0, sizeof(init)); init.name = list->name; init.ops = &lgm_clk_ddiv_ops; init.flags = list->flags; -- 2.11.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code 2020-07-16 6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar @ 2020-07-24 8:56 ` Stephen Boyd 2020-07-24 8:58 ` Stephen Boyd 1 sibling, 0 replies; 7+ messages in thread From: Stephen Boyd @ 2020-07-24 8:56 UTC (permalink / raw) To: Rahul Tanwar, linux-clk, mturquette Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu, cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar Quoting Rahul Tanwar (2020-07-15 23:30:32) > memset can be avoided in a loop if the variables used are declared > inside the loop. Move such variables declaration inside the loop > to avoid memset. > > Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com> > --- > drivers/clk/x86/clk-cgu.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/clk/x86/clk-cgu.c b/drivers/clk/x86/clk-cgu.c > index c379fedfb9f2..9a1be7035fd0 100644 > --- a/drivers/clk/x86/clk-cgu.c > +++ b/drivers/clk/x86/clk-cgu.c > @@ -581,19 +581,18 @@ int lgm_clk_register_ddiv(struct lgm_clk_provider *ctx, > unsigned int nr_clk) > { > struct device *dev = ctx->dev; > - struct clk_init_data init = {}; > - struct lgm_clk_ddiv *ddiv; > struct clk_hw *hw; > unsigned int idx; > int ret; > > for (idx = 0; idx < nr_clk; idx++, list++) { > - ddiv = NULL; > + struct clk_init_data init = {}; > + struct lgm_clk_ddiv *ddiv = NULL; Assigning to NULL isn't necessary... > + > ddiv = devm_kzalloc(dev, sizeof(*ddiv), GFP_KERNEL); because it's assigned right here. I'll just fix it. > if (!ddiv) > return -ENOMEM; > > - memset(&init, 0, sizeof(init)); > init.name = list->name; > init.ops = &lgm_clk_ddiv_ops; > init.flags = list->flags; ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code 2020-07-16 6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar 2020-07-24 8:56 ` Stephen Boyd @ 2020-07-24 8:58 ` Stephen Boyd 1 sibling, 0 replies; 7+ messages in thread From: Stephen Boyd @ 2020-07-24 8:58 UTC (permalink / raw) To: Rahul Tanwar, linux-clk, mturquette Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu, cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar Quoting Rahul Tanwar (2020-07-15 23:30:32) > memset can be avoided in a loop if the variables used are declared > inside the loop. Move such variables declaration inside the loop > to avoid memset. > > Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com> > --- Applied to clk-next ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() 2020-07-16 6:30 [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Rahul Tanwar 2020-07-16 6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar 2020-07-16 6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar @ 2020-07-24 8:57 ` Stephen Boyd 2 siblings, 0 replies; 7+ messages in thread From: Stephen Boyd @ 2020-07-24 8:57 UTC (permalink / raw) To: Rahul Tanwar, linux-clk, mturquette Cc: linux-kernel, andriy.shevchenko, qi-ming.wu, yixin.zhu, cheol.yong.kim, rahul.tanwar.linux, Rahul Tanwar Quoting Rahul Tanwar (2020-07-15 23:30:30) > To ensure that clks are unregistered in case of any failure, use > devm_clk_hw_register() instead of clk_hw_register(). > > Signed-off-by: Rahul Tanwar <rahul.tanwar@linux.intel.com> > --- Applied to clk-next ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-07-24 8:58 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-07-16 6:30 [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Rahul Tanwar 2020-07-16 6:30 ` [PATCH v2 2/3] clk: intel: Improve locking in the driver Rahul Tanwar 2020-07-24 8:57 ` Stephen Boyd 2020-07-16 6:30 ` [PATCH v2 3/3] clk: intel: Avoid unnecessary memset by improving code Rahul Tanwar 2020-07-24 8:56 ` Stephen Boyd 2020-07-24 8:58 ` Stephen Boyd 2020-07-24 8:57 ` [PATCH v2 1/3] clk: intel: Use devm_clk_hw_register() instead of clk_hw_register() Stephen Boyd
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).