[openwrt/openwrt] realtek: mark clock source as continuous

LEDE Commits lede-commits at lists.infradead.org
Tue Nov 1 01:14:03 PDT 2022


svanheule pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/75c576d4c4763785c665e3211b17868b3ed8e819

commit 75c576d4c4763785c665e3211b17868b3ed8e819
Author: Sander Vanheule <sander at svanheule.net>
AuthorDate: Mon Oct 31 10:11:04 2022 +0100

    realtek: mark clock source as continuous
    
    After replacing the R4K event timer and clock source with the new
    Realtek Otto timer, performance for RTL839x devices was severely
    impacted, as reported by Hiroshi.
    
    Research by Markus showed that after commit 4657a5301eb5 ("realtek:
    avoid busy waiting for RTL839x PHY read/write"), the ethernet driver
    could only update a phy once per timer interval, which also heavily
    impacted boot time. On e.g. a Zyxel GS1900-48, this added around a
    minute to the time to fully initialise the switch.
    
    By marking the otto clocksource as continuous, the kernel enables it to
    be used for high resolution timers. This allows readx_poll_timeout() to
    sleep for less than one system timer interval, reducing system dead
    time.
    
    Link: https://github.com/openwrt/openwrt/issues/11117
    Reported-by: INAGAKI Hiroshi <musashino.open at gmail.com>
    Cc: Markus Stockhausen <markus.stockhausen at gmx.de>
    Signed-off-by: Sander Vanheule <sander at svanheule.net>
    Tested-by: INAGAKI Hiroshi <musashino.open at gmail.com> # Panasonic Switch-M48eG PN28480K
    Tested-by: Jan Hoffmann <jan at 3e8.eu> # HPE 1920-8G, HPE 1920-48G
---
 target/linux/realtek/files-5.10/drivers/clocksource/timer-rtl-otto.c | 1 +
 1 file changed, 1 insertion(+)

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 12eed78653..14e28e50f4 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
@@ -227,6 +227,7 @@ struct rttm_cs rttm_cs = {
 		.name	= "realtek_otto_timer",
 		.rating	= 400,
 		.mask	= CLOCKSOURCE_MASK(RTTM_BIT_COUNT),
+		.flags	= CLOCK_SOURCE_IS_CONTINUOUS,
 		.read	= rttm_read_clocksource,
 		.enable	= rttm_enable_clocksource
 	}




More information about the lede-commits mailing list