clocksource/drivers/timer-sun4i: Add CLOCK_EVT_FEAT_DYNIRQ
authorYangtao Li <frank.li@vivo.com>
Thu, 9 Feb 2023 04:02:39 +0000 (12:02 +0800)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Mon, 13 Feb 2023 12:10:17 +0000 (13:10 +0100)
Add CLOCK_EVT_FEAT_DYNIRQ to allow the IRQ could be runtime set affinity
to the cores that needs wake up, otherwise saying core0 has to send
IPI to wakeup core1. With CLOCK_EVT_FEAT_DYNIRQ set, when broadcast
timer could wake up the cores, IPI is not needed.

After enabling this feature, especially the scene where cpuidle is
enabled can benefit.

Signed-off-by: Yangtao Li <frank.li@vivo.com>
Link: https://lore.kernel.org/r/20230209040239.24710-1-frank.li@vivo.com
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
drivers/clocksource/timer-sun4i.c

index e5a70aa1deb4633e7525953871d069895de0f7d7..7bdcc60ad43cb513a040cbb4a6e8df262807370f 100644 (file)
@@ -144,7 +144,8 @@ static struct timer_of to = {
        .clkevt = {
                .name = "sun4i_tick",
                .rating = 350,
-               .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
+               .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT |
+                               CLOCK_EVT_FEAT_DYNIRQ,
                .set_state_shutdown = sun4i_clkevt_shutdown,
                .set_state_periodic = sun4i_clkevt_set_periodic,
                .set_state_oneshot = sun4i_clkevt_set_oneshot,