diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-07-20 09:03:36 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-07-20 09:03:36 -0700 |
commit | d2be38b9a5514dbc7dc0c96a2a7f619fcddce00d (patch) | |
tree | 8588d09562d7171ab95b07d9c00fa18b6b691bd3 /arch/mips/kernel/csrc-r4k.c | |
parent | 3c3ff7be9729959699eb6cbc7fd7303566d74069 (diff) | |
parent | bb2d63500b5c8fd1ea425caffe2d44c931fefc6b (diff) | |
download | linux-d2be38b9a5514dbc7dc0c96a2a7f619fcddce00d.tar.gz linux-d2be38b9a5514dbc7dc0c96a2a7f619fcddce00d.tar.bz2 linux-d2be38b9a5514dbc7dc0c96a2a7f619fcddce00d.zip |
Merge tag 'mips_6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
Pull MIPS updates from Thomas Bogendoerfer:
- add support for Realtek RTL9302C
- add support for Mobileye EyeQ6H
- add support for Mobileye EyeQ OLB system controller
- improve r4k clocksource
- add mode for emulating ieee754 NAN2008
- rework for BMIPS CBR address handling
- fixes for Loongson 2K1000
- defconfig updates
- cleanups and fixes
* tag 'mips_6.11' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (58 commits)
MIPS: config: Add ip30_defconfig
MIPS: config: lemote2f: Regenerate defconfig
MIPS: config: generic: Add board-litex
MIPS: config: Enable MSA and virtualization for MIPS64R6
MIPS: Fix fallback march for SB1
mips: dts: realtek: Add RTL9302C board
mips: generic: add fdt fixup for Realtek reference board
mips: select REALTEK_OTTO_TIMER for Realtek platforms
dt-bindings: interrupt-controller: realtek,rtl-intc: Add rtl9300-intc
dt-bindings: mips: realtek: Add rtl930x-soc compatible
dt-bindings: vendor-prefixes: Add Cameo Communications
mips: dts: realtek: add device_type property to cpu node
mips: dts: realtek: use "serial" instead of "uart" in node name
MIPS: Implement ieee754 NAN2008 emulation mode
MIPS: lantiq: improve USB initialization
MIPS: GIC: Generate redirect block accessors
MIPS: CPS: Add a couple of multi-cluster utility functions
MIPS: Octeron: remove source file executable bit
MAINTAINERS: Mobileye: add OLB drivers and dt-bindings
MIPS: mobileye: eyeq5: add OLB system-controller node
...
Diffstat (limited to 'arch/mips/kernel/csrc-r4k.c')
-rw-r--r-- | arch/mips/kernel/csrc-r4k.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/arch/mips/kernel/csrc-r4k.c b/arch/mips/kernel/csrc-r4k.c index edc4afc080fa..bdb1fa8931f4 100644 --- a/arch/mips/kernel/csrc-r4k.c +++ b/arch/mips/kernel/csrc-r4k.c @@ -21,7 +21,9 @@ static struct clocksource clocksource_mips = { .name = "MIPS", .read = c0_hpt_read, .mask = CLOCKSOURCE_MASK(32), - .flags = CLOCK_SOURCE_IS_CONTINUOUS, + .flags = CLOCK_SOURCE_IS_CONTINUOUS | + CLOCK_SOURCE_MUST_VERIFY | + CLOCK_SOURCE_VERIFY_PERCPU, }; static u64 __maybe_unused notrace r4k_read_sched_clock(void) @@ -66,6 +68,18 @@ static bool rdhwr_count_usable(void) return false; } +static inline __init bool count_can_be_sched_clock(void) +{ + if (IS_ENABLED(CONFIG_CPU_FREQ)) + return false; + + if (num_possible_cpus() > 1 && + !IS_ENABLED(CONFIG_HAVE_UNSTABLE_SCHED_CLOCK)) + return false; + + return true; +} + #ifdef CONFIG_CPU_FREQ static bool __read_mostly r4k_clock_unstable; @@ -111,7 +125,8 @@ int __init init_r4k_clocksource(void) return -ENXIO; /* Calculate a somewhat reasonable rating value */ - clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; + clocksource_mips.rating = 200; + clocksource_mips.rating += clamp(mips_hpt_frequency / 10000000, 0, 99); /* * R2 onwards makes the count accessible to user mode so it can be used @@ -122,9 +137,8 @@ int __init init_r4k_clocksource(void) clocksource_register_hz(&clocksource_mips, mips_hpt_frequency); -#ifndef CONFIG_CPU_FREQ - sched_clock_register(r4k_read_sched_clock, 32, mips_hpt_frequency); -#endif + if (count_can_be_sched_clock()) + sched_clock_register(r4k_read_sched_clock, 32, mips_hpt_frequency); return 0; } |