On Thu, Feb 11, 2021 at 02:43:18PM +0100, Niklas Söderlund wrote: > The struct clocksource callbacks enable() and disable() are described as > a way to allow clock sources to enter a power save mode [1]. But using > runtime PM from these callbacks triggers a cyclic lockdep warning when > switching clock source using change_clocksource(). > > This change allows the new clocksource to be enabled() and the old one > to be disabled() without holding the timekeeper_lock. This solution is > modeled on timekeeping_resume() and timekeeping_suspend() where the > struct clocksource resume() and suspend() callbacks are called without > holding the timekeeper_lock. > > Triggering and log of the deadlock warning, > > # echo e60f0000.timer > /sys/devices/system/clocksource/clocksource0/current_clocksource ... I had the same issue when running 'clocksource-switch' from the Kernel selftests with a Renesas Falcon board using a R-Car V3U. This patch fixed the deadlock warning, so: Tested-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
Attachment:
signature.asc
Description: PGP signature