2022-05-02 07:26:37

by Stefan Wahren

[permalink] [raw]
Subject: [PATCH] clk: bcm2835: fix bcm2835_clock_choose_div

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 <[email protected]>
---
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;

--
2.25.1


2022-05-04 00:19:47

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH] clk: bcm2835: fix bcm2835_clock_choose_div

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 <[email protected]>

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

Acked-by: Maxime Ripard <[email protected]>
Tested-by: Maxime Ripard <[email protected]>

Thanks!
Maxime


Attachments:
(No filename) (656.00 B)
signature.asc (235.00 B)
Download all attachments

2022-05-08 16:15:47

by Stefan Wahren

[permalink] [raw]
Subject: Re: [PATCH] clk: bcm2835: fix bcm2835_clock_choose_div

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 <[email protected]>
> I only found this patch after debugging why the HDMI driver was
> returning -EINVAL at probe on -rc5.
>
> Acked-by: Maxime Ripard <[email protected]>
> Tested-by: Maxime Ripard <[email protected]>

Thanks,

does this go via clk-fixes?

>
> Thanks!
> Maxime

2022-05-10 18:06:30

by Maxime Ripard

[permalink] [raw]
Subject: Re: [PATCH] clk: bcm2835: fix bcm2835_clock_choose_div

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 <[email protected]>
> > I only found this patch after debugging why the HDMI driver was
> > returning -EINVAL at probe on -rc5.
> >
> > Acked-by: Maxime Ripard <[email protected]>
> > Tested-by: Maxime Ripard <[email protected]>
>
> Thanks,
>
> does this go via clk-fixes?

Yep, it should.

Stephen, could we merge this?

Maxime


Attachments:
(No filename) (918.00 B)
signature.asc (235.00 B)
Download all attachments

2022-05-15 22:07:41

by Stefan Wahren

[permalink] [raw]
Subject: Re: [PATCH] clk: bcm2835: fix bcm2835_clock_choose_div

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 <[email protected]>
>>> I only found this patch after debugging why the HDMI driver was
>>> returning -EINVAL at probe on -rc5.
>>>
>>> Acked-by: Maxime Ripard <[email protected]>
>>> Tested-by: Maxime Ripard <[email protected]>
>> 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

Subject: Re: [PATCH] clk: bcm2835: fix bcm2835_clock_choose_div

[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 <[email protected]>

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.

2022-05-17 22:26:59

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH] clk: bcm2835: fix bcm2835_clock_choose_div

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 <[email protected]>
> ---

Applied to clk-fixes