mbox series

[0/5] drm/vc4: hdmi: Remove CPU hangs, take 2

Message ID 20210922125419.4125779-1-maxime@cerno.tech (mailing list archive)
Headers show
Series drm/vc4: hdmi: Remove CPU hangs, take 2 | expand

Message

Maxime Ripard Sept. 22, 2021, 12:54 p.m. UTC
Hi,

Here's another attempt at fixing the complete CPU stall while retrieving the
HDMI connector status when the connector is disabled.

This was fixed already, but eventually got reverted by Linus due to the same
symptom happening in another situation. This was likely (but not confirmed by
the reporter) due to the kernel being booted without an HDMI display connected,
in which case the firmware won't initialise the HDMI State Machine clock.

This is fixed by patch 3. However, further changes in the clock drivers were
needed for clk_set_min_rate to be used, which are patches 1 and 2.

Finally, patches 4 and 5 are the original patches that were reverted. Patch 4
got a small modification to move the clk_set_min_rate() call before the HSM
clock is enabled.

Let me know what you think,
Maxime

Maxime Ripard (5):
  clk: bcm-2835: Pick the closest clock rate
  clk: bcm-2835: Remove rounding up the dividers
  drm/vc4: hdmi: Set a default HSM rate
  drm/vc4: hdmi: Move the HSM clock enable to runtime_pm
  drm/vc4: hdmi: Make sure the controller is powered in detect

 drivers/clk/bcm/clk-bcm2835.c  | 13 ++---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 90 ++++++++++++++++++++++++----------
 2 files changed, 68 insertions(+), 35 deletions(-)

Comments

Michael Stapelberg Sept. 23, 2021, 7:05 a.m. UTC | #1
I can confirm that this patch series (applied to linux commit
58e2cf5d794616b84f591d4d1276c8953278ce24) works for me — my Raspberry
Pi 3 still boots fine (without HDMI connected).

Thanks!


On Wed, 22 Sept 2021 at 23:18, Michael Stapelberg <michael@stapelberg.ch> wrote:
>
>
> On Wed, 22 Sept 2021 at 14:54, Maxime Ripard <maxime@cerno.tech> wrote:
>>
>> Hi,
>>
>> Here's another attempt at fixing the complete CPU stall while retrieving the
>> HDMI connector status when the connector is disabled.
>>
>> This was fixed already, but eventually got reverted by Linus due to the same
>> symptom happening in another situation. This was likely (but not confirmed by
>> the reporter) due to the kernel being booted without an HDMI display connected,
>> in which case the firmware won't initialise the HDMI State Machine clock.
>
>
> Sorry for the lack of confirmation: yes, this problem was encountered when no HDMI display was connected.
>
> I’ll try testing your patch series tomorrow.
>
> Thanks for taking care of this!
>
>>
>>
>> This is fixed by patch 3. However, further changes in the clock drivers were
>> needed for clk_set_min_rate to be used, which are patches 1 and 2.
>>
>> Finally, patches 4 and 5 are the original patches that were reverted. Patch 4
>> got a small modification to move the clk_set_min_rate() call before the HSM
>> clock is enabled.
>>
>> Let me know what you think,
>> Maxime
>>
>> Maxime Ripard (5):
>>   clk: bcm-2835: Pick the closest clock rate
>>   clk: bcm-2835: Remove rounding up the dividers
>>   drm/vc4: hdmi: Set a default HSM rate
>>   drm/vc4: hdmi: Move the HSM clock enable to runtime_pm
>>   drm/vc4: hdmi: Make sure the controller is powered in detect
>>
>>  drivers/clk/bcm/clk-bcm2835.c  | 13 ++---
>>  drivers/gpu/drm/vc4/vc4_hdmi.c | 90 ++++++++++++++++++++++++----------
>>  2 files changed, 68 insertions(+), 35 deletions(-)
>>
>> --
>> 2.31.1
>>
>
>
> --
> Best regards,
> Michael
Maxime Ripard Sept. 24, 2021, 7:40 a.m. UTC | #2
Hi,

On Wed, Sep 22, 2021 at 02:54:14PM +0200, Maxime Ripard wrote:
> Hi,
> 
> Here's another attempt at fixing the complete CPU stall while retrieving the
> HDMI connector status when the connector is disabled.
> 
> This was fixed already, but eventually got reverted by Linus due to the same
> symptom happening in another situation. This was likely (but not confirmed by
> the reporter) due to the kernel being booted without an HDMI display connected,
> in which case the firmware won't initialise the HDMI State Machine clock.
> 
> This is fixed by patch 3. However, further changes in the clock drivers were
> needed for clk_set_min_rate to be used, which are patches 1 and 2.
> 
> Finally, patches 4 and 5 are the original patches that were reverted. Patch 4
> got a small modification to move the clk_set_min_rate() call before the HSM
> clock is enabled.

If we merge the clock patches and DRM patches separately we're going to
break bisectability. I guess the easiest approach would be to merge the
clk patches through DRM. Does that work for everyone?

Maxime
Maxime Ripard Sept. 28, 2021, 1:05 p.m. UTC | #3
On Fri, Sep 24, 2021 at 09:40:44AM +0200, Maxime Ripard wrote:
> Hi,
> 
> On Wed, Sep 22, 2021 at 02:54:14PM +0200, Maxime Ripard wrote:
> > Hi,
> > 
> > Here's another attempt at fixing the complete CPU stall while retrieving the
> > HDMI connector status when the connector is disabled.
> > 
> > This was fixed already, but eventually got reverted by Linus due to the same
> > symptom happening in another situation. This was likely (but not confirmed by
> > the reporter) due to the kernel being booted without an HDMI display connected,
> > in which case the firmware won't initialise the HDMI State Machine clock.
> > 
> > This is fixed by patch 3. However, further changes in the clock drivers were
> > needed for clk_set_min_rate to be used, which are patches 1 and 2.
> > 
> > Finally, patches 4 and 5 are the original patches that were reverted. Patch 4
> > got a small modification to move the clk_set_min_rate() call before the HSM
> > clock is enabled.
> 
> If we merge the clock patches and DRM patches separately we're going to
> break bisectability. I guess the easiest approach would be to merge the
> clk patches through DRM. Does that work for everyone?

Anyone? I can ask around for reviews on DRM, but I'd really like some
reviews on the clock patches here..

Maxime
Stephen Boyd Sept. 30, 2021, 6:09 p.m. UTC | #4
Quoting Maxime Ripard (2021-09-28 06:05:49)
> On Fri, Sep 24, 2021 at 09:40:44AM +0200, Maxime Ripard wrote:
> > Hi,
> > 
> > On Wed, Sep 22, 2021 at 02:54:14PM +0200, Maxime Ripard wrote:
> > > Hi,
> > > 
> > > Here's another attempt at fixing the complete CPU stall while retrieving the
> > > HDMI connector status when the connector is disabled.
> > > 
> > > This was fixed already, but eventually got reverted by Linus due to the same
> > > symptom happening in another situation. This was likely (but not confirmed by
> > > the reporter) due to the kernel being booted without an HDMI display connected,
> > > in which case the firmware won't initialise the HDMI State Machine clock.
> > > 
> > > This is fixed by patch 3. However, further changes in the clock drivers were
> > > needed for clk_set_min_rate to be used, which are patches 1 and 2.
> > > 
> > > Finally, patches 4 and 5 are the original patches that were reverted. Patch 4
> > > got a small modification to move the clk_set_min_rate() call before the HSM
> > > clock is enabled.
> > 
> > If we merge the clock patches and DRM patches separately we're going to
> > break bisectability. I guess the easiest approach would be to merge the
> > clk patches through DRM. Does that work for everyone?
> 
> Anyone? I can ask around for reviews on DRM, but I'd really like some
> reviews on the clock patches here..
> 

Looks ok to me to take through drm.
Florian Fainelli Sept. 30, 2021, 6:39 p.m. UTC | #5
On 9/30/21 11:09 AM, Stephen Boyd wrote:
> Quoting Maxime Ripard (2021-09-28 06:05:49)
>> On Fri, Sep 24, 2021 at 09:40:44AM +0200, Maxime Ripard wrote:
>>> Hi,
>>>
>>> On Wed, Sep 22, 2021 at 02:54:14PM +0200, Maxime Ripard wrote:
>>>> Hi,
>>>>
>>>> Here's another attempt at fixing the complete CPU stall while retrieving the
>>>> HDMI connector status when the connector is disabled.
>>>>
>>>> This was fixed already, but eventually got reverted by Linus due to the same
>>>> symptom happening in another situation. This was likely (but not confirmed by
>>>> the reporter) due to the kernel being booted without an HDMI display connected,
>>>> in which case the firmware won't initialise the HDMI State Machine clock.
>>>>
>>>> This is fixed by patch 3. However, further changes in the clock drivers were
>>>> needed for clk_set_min_rate to be used, which are patches 1 and 2.
>>>>
>>>> Finally, patches 4 and 5 are the original patches that were reverted. Patch 4
>>>> got a small modification to move the clk_set_min_rate() call before the HSM
>>>> clock is enabled.
>>>
>>> If we merge the clock patches and DRM patches separately we're going to
>>> break bisectability. I guess the easiest approach would be to merge the
>>> clk patches through DRM. Does that work for everyone?
>>
>> Anyone? I can ask around for reviews on DRM, but I'd really like some
>> reviews on the clock patches here..
>>
> 
> Looks ok to me to take through drm.

Same here, assuming I even have a say in this ;)