[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <7h8rtj9zvh.fsf@baylibre.com>
Date: Wed, 09 Mar 2022 02:36:18 -0800
From: Kevin Hilman <khilman@...libre.com>
To: Tony Lindgren <tony@...mide.com>
Cc: linux-omap@...r.kernel.org, Dave Gerlach <d-gerlach@...com>,
Faiz Abbas <faiz_abbas@...com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Grygorii Strashko <grygorii.strashko@...com>,
Keerthy <j-keerthy@...com>, Nishanth Menon <nm@...com>,
Suman Anna <s-anna@...com>, linux-kernel@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org,
Jarkko Nikula <jarkko.nikula@...mer.com>
Subject: Re: [PATCH] bus: ti-sysc: Fix gpt12 system timer issue with
reserved status
Tony Lindgren <tony@...mide.com> writes:
> Hi,
>
> * Kevin Hilman <khilman@...libre.com> [220304 17:39]:
>> Hi Tony,
>>
>> Tony Lindgren <tony@...mide.com> writes:
>>
>> > Jarkko Nikula <jarkko.nikula@...mer.com> reported that Beagleboard
>> > revision c2 stopped booting. Jarkko bisected the issue down to
>> > commit 6cfcd5563b4f ("clocksource/drivers/timer-ti-dm: Fix suspend
>> > and resume for am3 and am4").
>> >
>> > Let's fix the issue by tagging system timers as reserved rather than
>> > ignoring them. And let's not probe any interconnect target module child
>> > devices for reserved modules.
>> >
>> > This allows PM runtime to keep track of clocks and clockdomains for
>> > the interconnect target module, and prevent the system timer from idling
>> > as we already have SYSC_QUIRK_NO_IDLE and SYSC_QUIRK_NO_IDLE_ON_INIT
>> > flags set for system timers.
>> >
>> > Fixes: 6cfcd5563b4f ("clocksource/drivers/timer-ti-dm: Fix suspend and resume for am3 and am4")
>> > Reported-by: Jarkko Nikula <jarkko.nikula@...mer.com>
>> > Signed-off-by: Tony Lindgren <tony@...mide.com>
>>
>> I'm debugging why suspend/resume on AM3x and AM4x are mostly working,
>> but getting the warning that not all powerdomains are transitioning:
>>
>> pm33xx pm33xx: PM: Could not transition all powerdomains to target state
>>
>> I bisected it down to $SUBJECT patch, and verified that reverting it
>> makes both on am335x-boneblack and am437x-gp-evm fully suspend, and I'm
>> now seeing:
>>
>> pm33xx pm33xx: PM: Successfully put all powerdomains to target state
>>
>> Note that it doesn't revert cleanly due to some other changes, but this
>> one-liner[1] effectively reverts the behavior of $SUBJECT patch, and
>> also makes things work again.
>>
>> I verified the revert (and hack[1]) on both v5.10 stable and mainline
>> v5.16 but TBH, I'm still not 100% sure what's going on so looking for
>> some guidance from you Tony on what the "real" fix should be.
>
> Thanks for debugging the issue Kevin. It seems the issue is caused by the
> extra runtime PM usage count done for modules tagged no-idle. However,
> this causes issues for am335x timers as the PM coprocessor needs all
> the domains idled for system suspend despite the system timers tagged
> with no-idle.
>
> We could patch ti-sysc.c for more timer workarounds, but I don't know if
> that really makes sense. It would add further dependencies between the
> system timer code and the interconnect code, and I'd rather go back to
> no dependencies between the system timers and the interconnect code :)
>
> So I suggest we make the omap3 gpt12 quirk checks SoC specific as below
> for now, they are not needed for the other SoCs.
>
> Then at some point we can plan on dropping support for the old beagleboard
> revisions A to B4, and then reverting commit 3ff340e24c9d ("bus: ti-sysc:
> Fix gpt12 system timer issue with reserved status").
>
> Note that we now have commit 23885389dbbb ("ARM: dts: Fix timer regression
> for beagleboard revision c"), so there no need to (wrongly) enable the
> old timer quirks for working omap3 revision C and later boards.
Thanks for the explanation.
> 8< ----------------------
> From tony Mon Sep 17 00:00:00 2001
> From: Tony Lindgren <tony@...mide.com>
> Date: Mon, 7 Mar 2022 14:28:44 +0200
> Subject: [PATCH] bus: ti-sysc: Make omap3 gpt12 quirk handling SoC
> specific
>
> On beagleboard revisions A to B4 we need to use gpt12 as the system timer.
> However, the quirk handling added for gpt12 caused a regression for system
> suspend for am335x as the PM coprocessor needs the timers idled for
> suspend.
>
> Let's make the gpt12 quirk specific to omap34xx, other SoCs don't need
> it. Beagleboard revisions C and later no longer need to use the gpt12
> related quirk. Then at some point, if we decide to drop support for the old
> beagleboard revisions A to B4, we can also drop the gpt12 related quirks
> completely.
>
> Fixes: 3ff340e24c9d ("bus: ti-sysc: Fix gpt12 system timer issue with reserved status")
> Reported-by: Kevin Hilman <khilman@...libre.com>
> Suggested-by: Kevin Hilman <khilman@...libre.com>
> Signed-off-by: Tony Lindgren <tony@...mide.com>
Reviewed-by: Kevin Hilman <khilman@...libre.com>
Tested-by: Kevin Hilman <khilman@...libre.com>
Teested on am335x-boneblack and am437x-gp-evm and am seeing
pm33xx pm33xx: PM: Successfully put all powerdomains to target state
on both boards.
Kevin
Powered by blists - more mailing lists