On Tue 19 Apr 18:54 CDT 2022, Dmitry Baryshkov wrote: > Since the commit 948fb0969eae ("clk: Always clamp the rounded rate"), > the clk_core_determine_round_nolock() would clamp the requested rate > between min and max rates from the rate request. Normally these fields > would be filled by clk_core_get_boundaries() called from > clk_round_rate(). > > However clk_gfx3d_determine_rate() uses a manually crafted rate request, > which did not have these fields filled. Thus the requested frequency > would be clamped to 0, resulting in weird frequencies being requested > from the hardware. > > Fix this by filling min_rate and max_rate to the values valid for the > respective PLLs (0 and ULONG_MAX). > > Fixes: 948fb0969eae ("clk: Always clamp the rounded rate") > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> Reviewed-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> Stephen, please pick this for -fixes. Thanks, Bjorn > --- > drivers/clk/qcom/clk-rcg2.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/clk/qcom/clk-rcg2.c b/drivers/clk/qcom/clk-rcg2.c > index f675fd969c4d..e9c357309fd9 100644 > --- a/drivers/clk/qcom/clk-rcg2.c > +++ b/drivers/clk/qcom/clk-rcg2.c > @@ -818,7 +818,7 @@ EXPORT_SYMBOL_GPL(clk_pixel_ops); > static int clk_gfx3d_determine_rate(struct clk_hw *hw, > struct clk_rate_request *req) > { > - struct clk_rate_request parent_req = { }; > + struct clk_rate_request parent_req = { .min_rate = 0, .max_rate = ULONG_MAX }; > struct clk_rcg2_gfx3d *cgfx = to_clk_rcg2_gfx3d(hw); > struct clk_hw *xo, *p0, *p1, *p2; > unsigned long p0_rate; > -- > 2.35.1 >