[openwrt/openwrt] realtek: timer: Register enabled scheduler clock

LEDE Commits lede-commits at lists.infradead.org
Sat Jan 28 08:47:45 PST 2023


svanheule pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/38cba61bff52f22affa66cc764dab2ac158ab7d3

commit 38cba61bff52f22affa66cc764dab2ac158ab7d3
Author: Sander Vanheule <sander at svanheule.net>
AuthorDate: Fri Jan 27 23:35:47 2023 +0100

    realtek: timer: Register enabled scheduler clock
    
    Before calling sched_clock_register(), the timer used to drive the
    scheduling clock should already be enabled. Otherwise the kernel log
    will show strange time jumps during, and the watchdog might not be
    pinged in a timely fashion, resulting in reboots.
    
    [    0.160281] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [   78.104319] clocksource: Switched to clocksource realtek_otto_timer
    
    Fixes: 3cc801117118 ("realtek: resurrect timer driver")
    Signed-off-by: Sander Vanheule <sander at svanheule.net>
---
 target/linux/realtek/files-5.10/drivers/clocksource/timer-rtl-otto.c | 2 +-
 target/linux/realtek/files-5.15/drivers/clocksource/timer-rtl-otto.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/linux/realtek/files-5.10/drivers/clocksource/timer-rtl-otto.c b/target/linux/realtek/files-5.10/drivers/clocksource/timer-rtl-otto.c
index c096d8742b..0395cf29e5 100644
--- a/target/linux/realtek/files-5.10/drivers/clocksource/timer-rtl-otto.c
+++ b/target/linux/realtek/files-5.10/drivers/clocksource/timer-rtl-otto.c
@@ -229,7 +229,6 @@ struct rttm_cs rttm_cs = {
 		.mask	= CLOCKSOURCE_MASK(RTTM_BIT_COUNT),
 		.flags	= CLOCK_SOURCE_IS_CONTINUOUS,
 		.read	= rttm_read_clocksource,
-		.enable	= rttm_enable_clocksource
 	}
 };
 
@@ -276,6 +275,7 @@ static int __init rttm_probe(struct device_node *np)
 	to->of_base.index = clkidx;
 	timer_of_init(np, to);
 	if (rttm_cs.to.of_base.base && rttm_cs.to.of_clk.rate) {
+		rttm_enable_clocksource(&rttm_cs.cs);
 		clocksource_register_hz(&rttm_cs.cs, RTTM_TICKS_PER_SEC);
 		sched_clock_register(rttm_read_clock, RTTM_BIT_COUNT, RTTM_TICKS_PER_SEC);
 	} else
diff --git a/target/linux/realtek/files-5.15/drivers/clocksource/timer-rtl-otto.c b/target/linux/realtek/files-5.15/drivers/clocksource/timer-rtl-otto.c
index c096d8742b..0395cf29e5 100644
--- a/target/linux/realtek/files-5.15/drivers/clocksource/timer-rtl-otto.c
+++ b/target/linux/realtek/files-5.15/drivers/clocksource/timer-rtl-otto.c
@@ -229,7 +229,6 @@ struct rttm_cs rttm_cs = {
 		.mask	= CLOCKSOURCE_MASK(RTTM_BIT_COUNT),
 		.flags	= CLOCK_SOURCE_IS_CONTINUOUS,
 		.read	= rttm_read_clocksource,
-		.enable	= rttm_enable_clocksource
 	}
 };
 
@@ -276,6 +275,7 @@ static int __init rttm_probe(struct device_node *np)
 	to->of_base.index = clkidx;
 	timer_of_init(np, to);
 	if (rttm_cs.to.of_base.base && rttm_cs.to.of_clk.rate) {
+		rttm_enable_clocksource(&rttm_cs.cs);
 		clocksource_register_hz(&rttm_cs.cs, RTTM_TICKS_PER_SEC);
 		sched_clock_register(rttm_read_clock, RTTM_BIT_COUNT, RTTM_TICKS_PER_SEC);
 	} else




More information about the lede-commits mailing list