clocksource/drivers/riscv: Increase the clock source rating
authorSamuel Holland <samuel@sholland.org>
Wed, 28 Dec 2022 00:44:44 +0000 (18:44 -0600)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Mon, 13 Feb 2023 12:10:16 +0000 (13:10 +0100)
RISC-V provides an architectural clock source via the time CSR. This
clock source exposes a 64-bit counter synchronized across all CPUs.
Because it is accessed using a CSR, it is much more efficient to read
than MMIO clock sources. For example, on the Allwinner D1, reading the
sun4i timer in a loop takes 131 cycles/iteration, while reading the
RISC-V time CSR takes only 5 cycles/iteration.

Adjust the RISC-V clock source rating so it is preferred over the
various platform-specific MMIO clock sources.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
Reviewed-by: Palmer Dabbelt <palmer@rivosinc.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Link: https://lore.kernel.org/r/20221228004444.61568-1-samuel@sholland.org
Signed-off-by: Daniel Lezcano <daniel.lezcano@kernel.org>
drivers/clocksource/timer-riscv.c

index 1b4b36df5484aa0ef8031c47e08bab29c8ccac29..adf7f98aab175533fa5dc354e774b36d9e8a75ea 100644 (file)
@@ -74,7 +74,7 @@ static u64 notrace riscv_sched_clock(void)
 
 static struct clocksource riscv_clocksource = {
        .name           = "riscv_clocksource",
-       .rating         = 300,
+       .rating         = 400,
        .mask           = CLOCKSOURCE_MASK(64),
        .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
        .read           = riscv_clocksource_rdtime,