mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
x86/paravirt: Move paravirt_sched_clock() related code into tsc.c
The only user of paravirt_sched_clock() is in tsc.c, so move the code from paravirt.c and paravirt.h to tsc.c. Signed-off-by: Juergen Gross <jgross@suse.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://patch.msgid.link/20260105110520.21356-13-jgross@suse.com
This commit is contained in:
parent
589f41f2f0
commit
39965afb11
7 changed files with 14 additions and 20 deletions
|
|
@ -14,20 +14,8 @@
|
|||
#ifndef __ASSEMBLER__
|
||||
#include <linux/types.h>
|
||||
#include <linux/cpumask.h>
|
||||
#include <linux/static_call_types.h>
|
||||
#include <asm/frame.h>
|
||||
|
||||
u64 dummy_sched_clock(void);
|
||||
|
||||
DECLARE_STATIC_CALL(pv_sched_clock, dummy_sched_clock);
|
||||
|
||||
void paravirt_set_sched_clock(u64 (*func)(void));
|
||||
|
||||
static __always_inline u64 paravirt_sched_clock(void)
|
||||
{
|
||||
return static_call(pv_sched_clock)();
|
||||
}
|
||||
|
||||
__visible void __native_queued_spin_unlock(struct qspinlock *lock);
|
||||
bool pv_is_native_spin_unlock(void);
|
||||
__visible bool __native_vcpu_is_preempted(long cpu);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ extern void recalibrate_cpu_khz(void);
|
|||
extern int no_timer_check;
|
||||
|
||||
extern bool using_native_sched_clock(void);
|
||||
void paravirt_set_sched_clock(u64 (*func)(void));
|
||||
|
||||
/*
|
||||
* We use the full linear equation: f(x) = a + b*x, in order to allow
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
#include <linux/cc_platform.h>
|
||||
|
||||
#include <asm/hypervisor.h>
|
||||
#include <asm/timer.h>
|
||||
#include <asm/x86_init.h>
|
||||
#include <asm/kvmclock.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -60,13 +60,6 @@ void __init native_pv_lock_init(void)
|
|||
static_branch_enable(&virt_spin_lock_key);
|
||||
}
|
||||
|
||||
DEFINE_STATIC_CALL(pv_sched_clock, native_sched_clock);
|
||||
|
||||
void paravirt_set_sched_clock(u64 (*func)(void))
|
||||
{
|
||||
static_call_update(pv_sched_clock, func);
|
||||
}
|
||||
|
||||
static noinstr void pv_native_safe_halt(void)
|
||||
{
|
||||
native_safe_halt();
|
||||
|
|
|
|||
|
|
@ -267,19 +267,27 @@ u64 native_sched_clock_from_tsc(u64 tsc)
|
|||
/* We need to define a real function for sched_clock, to override the
|
||||
weak default version */
|
||||
#ifdef CONFIG_PARAVIRT
|
||||
DEFINE_STATIC_CALL(pv_sched_clock, native_sched_clock);
|
||||
|
||||
noinstr u64 sched_clock_noinstr(void)
|
||||
{
|
||||
return paravirt_sched_clock();
|
||||
return static_call(pv_sched_clock)();
|
||||
}
|
||||
|
||||
bool using_native_sched_clock(void)
|
||||
{
|
||||
return static_call_query(pv_sched_clock) == native_sched_clock;
|
||||
}
|
||||
|
||||
void paravirt_set_sched_clock(u64 (*func)(void))
|
||||
{
|
||||
static_call_update(pv_sched_clock, func);
|
||||
}
|
||||
#else
|
||||
u64 sched_clock_noinstr(void) __attribute__((alias("native_sched_clock")));
|
||||
|
||||
bool using_native_sched_clock(void) { return true; }
|
||||
void paravirt_set_sched_clock(u64 (*func)(void)) { }
|
||||
#endif
|
||||
|
||||
notrace u64 sched_clock(void)
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
#include <linux/sched/cputime.h>
|
||||
|
||||
#include <asm/pvclock.h>
|
||||
#include <asm/timer.h>
|
||||
#include <asm/xen/hypervisor.h>
|
||||
#include <asm/xen/hypercall.h>
|
||||
#include <asm/xen/cpuid.h>
|
||||
|
|
|
|||
|
|
@ -535,6 +535,8 @@ static __always_inline void hv_setup_sched_clock(void *sched_clock)
|
|||
sched_clock_register(sched_clock, 64, NSEC_PER_SEC);
|
||||
}
|
||||
#elif defined CONFIG_PARAVIRT
|
||||
#include <asm/timer.h>
|
||||
|
||||
static __always_inline void hv_setup_sched_clock(void *sched_clock)
|
||||
{
|
||||
/* We're on x86/x64 *and* using PV ops */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue