• Michael Kelley's avatar
    clocksource/drivers/hyper-v: Rework clocksource and sched clock setup · e5313f1c
    Michael Kelley authored
    Current code assigns either the Hyper-V TSC page or MSR-based ref counter
    as the sched clock. This may be sub-optimal in two cases. First, if there
    is hardware support to ensure consistent TSC frequency across live
    migrations and Hyper-V is using that support, the raw TSC is a faster
    source of time than the Hyper-V TSC page.  Second, the MSR-based ref
    counter is relatively slow because reads require a trap to the hypervisor.
    As such, it should never be used as the sched clock. The native sched
    clock based on the raw TSC or jiffies is much better.
    
    Rework the sched clock setup so it is set to the TSC page only if
    Hyper-V indicates that the TSC may have inconsistent frequency across
    live migrations. Also, remove the code that sets the sched clock to
    the MSR-based ref counter. In the cases where it is not set, the sched
    clock will then be the native sched clock.
    
    As part of the rework, always enable both the TSC page clocksource and
    the MSR-based ref counter clocksource. Set the ratings so the TSC page
    clocksource is preferred. While the MSR-based ref counter clocksource
    is unlikely to ever be the default, having it available for manual
    selection is convenient for development purposes.
    Signed-off-by: default avatarMichael Kelley <mikelley@microsoft.com>
    Reviewed-by: default avatarDexuan Cui <decui@microsoft.com>
    Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/1687201360-16003-1-git-send-email-mikelley@microsoft.com
    e5313f1c
hyperv_timer.c 16.1 KB