In order to use sched_clock() from noinstr code, mark it and all it's implenentations noinstr. The whole pvclock thing (used by KVM/Xen) is a bit of a pain, since it calls out to watchdogs, create a pvclock_clocksource_read_nowd() variant doesn't do that and can be noinstr. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lore.kernel.org/r/20230126151323.702003578@infradead.org
22 lines
515 B
C
22 lines
515 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _ASM_X86_KVM_CLOCK_H
|
|
#define _ASM_X86_KVM_CLOCK_H
|
|
|
|
#include <linux/percpu.h>
|
|
|
|
extern struct clocksource kvm_clock;
|
|
|
|
DECLARE_PER_CPU(struct pvclock_vsyscall_time_info *, hv_clock_per_cpu);
|
|
|
|
static __always_inline struct pvclock_vcpu_time_info *this_cpu_pvti(void)
|
|
{
|
|
return &this_cpu_read(hv_clock_per_cpu)->pvti;
|
|
}
|
|
|
|
static inline struct pvclock_vsyscall_time_info *this_cpu_hvclock(void)
|
|
{
|
|
return this_cpu_read(hv_clock_per_cpu);
|
|
}
|
|
|
|
#endif /* _ASM_X86_KVM_CLOCK_H */
|