diff mbox series

clk: bcm2835: fix bcm2835_clock_choose_div

Message ID 20220428183010.1635248-1-stefan.wahren@i2se.com (mailing list archive)
State Accepted, archived
Headers show
Series clk: bcm2835: fix bcm2835_clock_choose_div | expand

Commit Message

Stefan Wahren April 28, 2022, 6:30 p.m. UTC
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>
---
 drivers/clk/bcm/clk-bcm2835.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Maxime Ripard May 3, 2022, 2:58 p.m. UTC | #1
Hi,

On Thu, Apr 28, 2022 at 08:30:10PM +0200, 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>

I only found this patch after debugging why the HDMI driver was
returning -EINVAL at probe on -rc5.

Acked-by: Maxime Ripard <maxime@cerno.tech>
Tested-by: Maxime Ripard <maxime@cerno.tech>

Thanks!
Maxime
Stefan Wahren May 7, 2022, 9:26 a.m. UTC | #2
Am 03.05.22 um 16:58 schrieb Maxime Ripard:
> Hi,
>
> On Thu, Apr 28, 2022 at 08:30:10PM +0200, 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>
> I only found this patch after debugging why the HDMI driver was
> returning -EINVAL at probe on -rc5.
>
> Acked-by: Maxime Ripard <maxime@cerno.tech>
> Tested-by: Maxime Ripard <maxime@cerno.tech>

Thanks,

does this go via clk-fixes?

>
> Thanks!
> Maxime
Maxime Ripard May 10, 2022, 1:27 p.m. UTC | #3
On Sat, May 07, 2022 at 11:26:28AM +0200, Stefan Wahren wrote:
> Am 03.05.22 um 16:58 schrieb Maxime Ripard:
> > Hi,
> > 
> > On Thu, Apr 28, 2022 at 08:30:10PM +0200, 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>
> > I only found this patch after debugging why the HDMI driver was
> > returning -EINVAL at probe on -rc5.
> > 
> > Acked-by: Maxime Ripard <maxime@cerno.tech>
> > Tested-by: Maxime Ripard <maxime@cerno.tech>
> 
> Thanks,
> 
> does this go via clk-fixes?

Yep, it should.

Stephen, could we merge this?

Maxime
Stefan Wahren May 14, 2022, 8:17 a.m. UTC | #4
Hi,

Am 10.05.22 um 15:27 schrieb Maxime Ripard:
> On Sat, May 07, 2022 at 11:26:28AM +0200, Stefan Wahren wrote:
>> Am 03.05.22 um 16:58 schrieb Maxime Ripard:
>>> Hi,
>>>
>>> On Thu, Apr 28, 2022 at 08:30:10PM +0200, 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>
>>> I only found this patch after debugging why the HDMI driver was
>>> returning -EINVAL at probe on -rc5.
>>>
>>> Acked-by: Maxime Ripard <maxime@cerno.tech>
>>> Tested-by: Maxime Ripard <maxime@cerno.tech>
>> Thanks,
>>
>> does this go via clk-fixes?
> Yep, it should.
>
> Stephen, could we merge this?
Is there any chance to get this regression fix into mainline before 5.18 
is released?
>
> Maxime
Thorsten Leemhuis May 15, 2022, 7:34 a.m. UTC | #5
[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.
Stephen Boyd May 17, 2022, 7:01 a.m. UTC | #6
Quoting Stefan Wahren (2022-04-28 11:30:10)
> 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>
> ---

Applied to clk-fixes
diff mbox series

Patch

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;