Messages in this thread Patch in this message | | | From | Jisheng Zhang <> | Subject | [PATCH 2/3] clocksource/drivers/timer-clint: Add set_state_shutdown | Date | Wed, 27 Mar 2024 23:35:01 +0800 |
| |
Add clocksource detach/shutdown callback to disable RISC-V timer interrupt when switching out clockevent from clint timer to another timer.
Signed-off-by: Jisheng Zhang <jszhang@kernel.org> --- drivers/clocksource/timer-clint.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/drivers/clocksource/timer-clint.c b/drivers/clocksource/timer-clint.c index 09fd292eb83d..56cf6c672e6d 100644 --- a/drivers/clocksource/timer-clint.c +++ b/drivers/clocksource/timer-clint.c @@ -119,11 +119,21 @@ static int clint_clock_next_event(unsigned long delta, return 0; } +static int clint_clock_shutdown(struct clock_event_device *evt) +{ + void __iomem *r = clint_timer_cmp + + cpuid_to_hartid_map(smp_processor_id()); + + writeq_relaxed(ULONG_MAX, r); + return 0; +} + static DEFINE_PER_CPU(struct clock_event_device, clint_clock_event) = { - .name = "clint_clockevent", - .features = CLOCK_EVT_FEAT_ONESHOT, - .rating = 100, - .set_next_event = clint_clock_next_event, + .name = "clint_clockevent", + .features = CLOCK_EVT_FEAT_ONESHOT, + .rating = 100, + .set_next_event = clint_clock_next_event, + .set_state_shutdown = clint_clock_shutdown, }; static int clint_timer_starting_cpu(unsigned int cpu) -- 2.43.0
| |