Re: [PATCH v2] clocksource/drivers/sh_cmt: Always leave device running after probe

From: Daniel Lezcano

Date: Wed Nov 05 2025 - 11:39:18 EST


On 11/5/25 17:06, Niklas Söderlund wrote:
On 2025-11-05 16:36:15 +0100, Daniel Lezcano wrote:
On 10/16/25 20:20, Niklas Söderlund wrote:
The CMT device can be used as both a clocksource and a clockevent
provider. The driver tries to be smart and power itself on and off, as
well as enabling and disabling its clock when it's not in operation.
This behavior is slightly altered if the CMT is used as an early
platform device in which case the device is left powered on after probe,
but the clock is still enabled and disabled at runtime.

This has worked for a long time, but recent improvements in PREEMPT_RT
and PROVE_LOCKING have highlighted an issue. As the CMT registers itself
as a clockevent provider, clockevents_register_device(), it needs to use
raw spinlocks internally as this is the context of which the clockevent
framework interacts with the CMT driver. However in the context of
holding a raw spinlock the CMT driver can't really manage its power
state or clock with calls to pm_runtime_*() and clk_*() as these calls
end up in other platform drivers using regular spinlocks to control
power and clocks.

So the fix is to remove PM management in the driver ?

Yes. As I understand it we can't do runtime pm in these drivers as the
core calls into the functions with the raw spinlock held. I hope we can
improve this in future.


IIUC, the changes done for PREEMPT_RT prevent to use pm_runtime by functions running in atomic context because the spinlocks are actually mutexes.

But if PREEMPT_RT is not set, then everything is running as usual.

This change drops the PM while it should be working for kernel compiled without PREEMPT_RT.

I suggest to handle the case with/out PREEMPT_RT.

Hopefully pm_runtime will be fixed with PREEMPT_RT and you won't have to reintroduce pm_runtime in this driver but just remove the PREEMPT_RT case.


--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog