Re: [PATCH] clk: bcm2835: fix bcm2835_clock_choose_div

Thorsten Leemhuis
2022-05-15T07:34:28Z

[TLDR: I'm adding this regression report to the list of tracked
regressions; all text from me you find below is based on a few templates
paragraphs you might have encountered already already in similar form.]

Hi, this is your Linux kernel regression tracker. Thx for CCing the
regression list in a later mail.

On 28.04.22 20:30, Stefan Wahren wrote:
> The commit 09e3b18ca5de ("clk: bcm2835: Remove unused variable")
> accidentially breaks the behavior of bcm2835_clock_choose_div() and
> booting of Raspberry Pi. The removed do_div macro call had side effects,
> so we need to restore it.
>
> Fixes: 09e3b18ca5de ("clk: bcm2835: Remove unused variable")
> Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>

To be sure the issue doesn't fall through the cracks unnoticed as it
mentioned in the weekly reports, I'm adding it to regzbot, my Linux
kernel regression tracking bot:

#regzbot ^introduced 09e3b18ca5de
#regzbot title clk: bcm2835: 09e3b18ca5de broke the behavior of
bcm2835_clock_choose_div() and booting of Raspberry Pi booting of
Raspberry Pi
#regzbot ignore-activity

> ---
> drivers/clk/bcm/clk-bcm2835.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
> index 3ad20e75fd23..48a1eb9f2d55 100644
> --- a/drivers/clk/bcm/clk-bcm2835.c
> +++ b/drivers/clk/bcm/clk-bcm2835.c
> @@ -941,6 +941,7 @@ static u32 bcm2835_clock_choose_div(struct clk_hw *hw,
> u64 temp = (u64)parent_rate << CM_DIV_FRAC_BITS;
> u32 div, mindiv, maxdiv;
>
> + do_div(temp, rate);
> div = temp;
> div &= ~unused_frac_mask;
>

Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)

P.S.: As the Linux kernel's regression tracker I deal with a lot of
reports and sometimes miss something important when writing mails like
this. If that's the case here, don't hesitate to tell me in a public
reply, it's in everyone's interest to set the public record straight.