Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d826404 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

x86: Move tsc_calibration to x86_init_ops



TSC calibration is modified by the vmware hypervisor and paravirt by
separate means. Moorestown wants to add its own calibration routine as
well. So make calibrate_tsc a proper x86_init_ops function and
override it by paravirt or by the early setup of the vmware
hypervisor.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 47926214
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -20,7 +20,7 @@
#ifndef ASM_X86__HYPERVISOR_H
#ifndef ASM_X86__HYPERVISOR_H
#define ASM_X86__HYPERVISOR_H
#define ASM_X86__HYPERVISOR_H


extern unsigned long get_hypervisor_tsc_freq(void);
extern void init_hypervisor(struct cpuinfo_x86 *c);
extern void init_hypervisor(struct cpuinfo_x86 *c);
extern void init_hypervisor_platform(void);


#endif
#endif
+0 −1
Original line number Original line Diff line number Diff line
@@ -210,7 +210,6 @@ static inline unsigned long long paravirt_sched_clock(void)
{
{
	return PVOP_CALL0(unsigned long long, pv_time_ops.sched_clock);
	return PVOP_CALL0(unsigned long long, pv_time_ops.sched_clock);
}
}
#define calibrate_tsc() (pv_time_ops.get_tsc_khz())


static inline unsigned long long paravirt_read_pmc(int counter)
static inline unsigned long long paravirt_read_pmc(int counter)
{
{
+0 −5
Original line number Original line Diff line number Diff line
@@ -8,7 +8,6 @@
#define TICK_SIZE (tick_nsec / 1000)
#define TICK_SIZE (tick_nsec / 1000)


unsigned long long native_sched_clock(void);
unsigned long long native_sched_clock(void);
unsigned long native_calibrate_tsc(void);
extern int recalibrate_cpu_khz(void);
extern int recalibrate_cpu_khz(void);


#if defined(CONFIG_X86_32) && defined(CONFIG_X86_IO_APIC)
#if defined(CONFIG_X86_32) && defined(CONFIG_X86_IO_APIC)
@@ -19,10 +18,6 @@ extern int timer_ack;


extern int no_timer_check;
extern int no_timer_check;


#ifndef CONFIG_PARAVIRT
#define calibrate_tsc() native_calibrate_tsc()
#endif

/* Accelerators for sched_clock()
/* Accelerators for sched_clock()
 * convert from cycles(64bits) => nanoseconds (64bits)
 * convert from cycles(64bits) => nanoseconds (64bits)
 *  basic equation:
 *  basic equation:
+2 −1
Original line number Original line Diff line number Diff line
@@ -48,7 +48,8 @@ static __always_inline cycles_t vget_cycles(void)
extern void tsc_init(void);
extern void tsc_init(void);
extern void mark_tsc_unstable(char *reason);
extern void mark_tsc_unstable(char *reason);
extern int unsynchronized_tsc(void);
extern int unsynchronized_tsc(void);
int check_tsc_unstable(void);
extern int check_tsc_unstable(void);
extern unsigned long native_calibrate_tsc(void);


/*
/*
 * Boot-time check whether the TSCs are synchronized across
 * Boot-time check whether the TSCs are synchronized across
+1 −1
Original line number Original line Diff line number Diff line
@@ -20,7 +20,7 @@
#ifndef ASM_X86__VMWARE_H
#ifndef ASM_X86__VMWARE_H
#define ASM_X86__VMWARE_H
#define ASM_X86__VMWARE_H


extern unsigned long vmware_get_tsc_khz(void);
extern void vmware_platform_setup(void);
extern int vmware_platform(void);
extern int vmware_platform(void);
extern void vmware_set_feature_bits(struct cpuinfo_x86 *c);
extern void vmware_set_feature_bits(struct cpuinfo_x86 *c);


Loading