Messages in this thread Patch in this message | | | From | Kevin Hilman <> | Subject | Re: [PATCH] bus: ti-sysc: Fix gpt12 system timer issue with reserved status | Date | Fri, 04 Mar 2022 09:41:07 -0800 |
| |
Hi Tony,
Tony Lindgren <tony@atomide.com> writes:
> Jarkko Nikula <jarkko.nikula@bitmer.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@bitmer.com> > Signed-off-by: Tony Lindgren <tony@atomide.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.
Kevin
[1] diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c index 54c0ee6dda30..82379ff9dce5 100644 --- a/drivers/bus/ti-sysc.c +++ b/drivers/bus/ti-sysc.c @@ -3304,7 +3304,7 @@ static int sysc_probe(struct platform_device *pdev) error = sysc_check_active_timer(ddata); if (error == -ENXIO) - ddata->reserved = true; + return error; else if (error) return error;
| |