clocksource: extend the max_delta_ns of timer-riscv and timer-clint to ULONG_MAX
authorVincent Chen <vincent.chen@sifive.com>
Tue, 5 Sep 2023 07:09:45 +0000 (15:09 +0800)
committerPalmer Dabbelt <palmer@rivosinc.com>
Tue, 23 Jan 2024 02:09:49 +0000 (18:09 -0800)
commitd38e2e7bcb3e27d1d1433e5f7480f2a1ff6bcd98
tree2e2c0e22b87c6f1998049c9868243f4d56124f03
parent67daf84203a02cf004e7c3faed8b654817326e26
clocksource: extend the max_delta_ns of timer-riscv and timer-clint to ULONG_MAX

When registering the riscv-timer or clint-timer as a clock_event device,
the driver needs to specify the value of max_delta_ticks. This value
directly influences the max_delta_ns, which represents the maximum time
interval for configuring subsequent clock events. Currently, both
riscv-timer and clint-timer are set with a max_delta_ticks value of
0x7fff_ffff. When the timer operates at a high frequency, this values
limists the system to sleep only for a short time. For the 1GHz case,
the sleep cannot exceed two seconds. To address this limitation, refer to
other timer implementations to extend it to 2^(bit-width of the timer) - 1.
Because the bit-width of $mtimecmp is 64bit, this value becomes ULONG_MAX
(0xffff_ffff_ffff_ffff).

Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
Link: https://lore.kernel.org/r/20230905070945.404653-1-vincent.chen@sifive.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
drivers/clocksource/timer-clint.c
drivers/clocksource/timer-riscv.c