diff options
Diffstat (limited to 'arch/arm64/kernel/vdso.c')
| -rw-r--r-- | arch/arm64/kernel/vdso.c | 20 | 
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c index 17948fc7d66..ba457943a16 100644 --- a/arch/arm64/kernel/vdso.c +++ b/arch/arm64/kernel/vdso.c @@ -28,6 +28,7 @@  #include <linux/sched.h>  #include <linux/signal.h>  #include <linux/slab.h> +#include <linux/timekeeper_internal.h>  #include <linux/vmalloc.h>  #include <asm/cacheflush.h> @@ -222,11 +223,10 @@ struct vm_area_struct *get_gate_vma(struct mm_struct *mm)  /*   * Update the vDSO data page to keep in sync with kernel timekeeping.   */ -void update_vsyscall(struct timespec *ts, struct timespec *wtm, -		     struct clocksource *clock, u32 mult) +void update_vsyscall(struct timekeeper *tk)  {  	struct timespec xtime_coarse; -	u32 use_syscall = strcmp(clock->name, "arch_sys_counter"); +	u32 use_syscall = strcmp(tk->clock->name, "arch_sys_counter");  	++vdso_data->tb_seq_count;  	smp_wmb(); @@ -237,13 +237,13 @@ void update_vsyscall(struct timespec *ts, struct timespec *wtm,  	vdso_data->xtime_coarse_nsec		= xtime_coarse.tv_nsec;  	if (!use_syscall) { -		vdso_data->cs_cycle_last	= clock->cycle_last; -		vdso_data->xtime_clock_sec	= ts->tv_sec; -		vdso_data->xtime_clock_nsec	= ts->tv_nsec; -		vdso_data->cs_mult		= mult; -		vdso_data->cs_shift		= clock->shift; -		vdso_data->wtm_clock_sec	= wtm->tv_sec; -		vdso_data->wtm_clock_nsec	= wtm->tv_nsec; +		vdso_data->cs_cycle_last	= tk->clock->cycle_last; +		vdso_data->xtime_clock_sec	= tk->xtime_sec; +		vdso_data->xtime_clock_nsec	= tk->xtime_nsec >> tk->shift; +		vdso_data->cs_mult		= tk->mult; +		vdso_data->cs_shift		= tk->shift; +		vdso_data->wtm_clock_sec	= tk->wall_to_monotonic.tv_sec; +		vdso_data->wtm_clock_nsec	= tk->wall_to_monotonic.tv_nsec;  	}  	smp_wmb();  |