To be used by kvmclock.c. Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> Index: kvm/arch/x86/include/asm/pvclock.h =================================================================== --- kvm.orig/arch/x86/include/asm/pvclock.h +++ kvm/arch/x86/include/asm/pvclock.h @@ -4,6 +4,20 @@ #include <linux/clocksource.h> #include <asm/pvclock-abi.h> +/* + * These are perodically updated + * xen: magic shared_info page + * kvm: gpa registered via msr + * and then copied here. + */ +struct pvclock_shadow_time { + u64 tsc_timestamp; /* TSC at last update of time vals. */ + u64 system_timestamp; /* Time, in nanosecs, since boot. */ + u32 tsc_to_nsec_mul; + int tsc_shift; + u32 version; +}; + /* some helper functions for xen and kvm pv clock sources */ cycle_t pvclock_clocksource_read(struct pvclock_vcpu_time_info *src); unsigned long pvclock_tsc_khz(struct pvclock_vcpu_time_info *src); @@ -11,4 +25,8 @@ void pvclock_read_wallclock(struct pvclo struct pvclock_vcpu_time_info *vcpu, struct timespec *ts); +u64 pvclock_get_nsec_offset(struct pvclock_shadow_time *shadow); +unsigned pvclock_get_time_values(struct pvclock_shadow_time *dst, + struct pvclock_vcpu_time_info *src); + #endif /* _ASM_X86_PVCLOCK_H */ Index: kvm/arch/x86/kernel/pvclock.c =================================================================== --- kvm.orig/arch/x86/kernel/pvclock.c +++ kvm/arch/x86/kernel/pvclock.c @@ -20,20 +20,6 @@ #include <asm/pvclock.h> /* - * These are perodically updated - * xen: magic shared_info page - * kvm: gpa registered via msr - * and then copied here. - */ -struct pvclock_shadow_time { - u64 tsc_timestamp; /* TSC at last update of time vals. */ - u64 system_timestamp; /* Time, in nanosecs, since boot. */ - u32 tsc_to_nsec_mul; - int tsc_shift; - u32 version; -}; - -/* * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction, * yielding a 64-bit result. */ @@ -71,7 +57,7 @@ static inline u64 scale_delta(u64 delta, return product; } -static u64 pvclock_get_nsec_offset(struct pvclock_shadow_time *shadow) +u64 pvclock_get_nsec_offset(struct pvclock_shadow_time *shadow) { u64 delta = native_read_tsc() - shadow->tsc_timestamp; return scale_delta(delta, shadow->tsc_to_nsec_mul, shadow->tsc_shift); @@ -81,8 +67,8 @@ static u64 pvclock_get_nsec_offset(struc * Reads a consistent set of time-base values from hypervisor, * into a shadow data area. */ -static unsigned pvclock_get_time_values(struct pvclock_shadow_time *dst, - struct pvclock_vcpu_time_info *src) +unsigned pvclock_get_time_values(struct pvclock_shadow_time *dst, + struct pvclock_vcpu_time_info *src) { do { dst->version = src->version; -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html