diff options
Diffstat (limited to 'kernel/hrtimer.c')
| -rw-r--r-- | kernel/hrtimer.c | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index cc47812d3fe..258720741d3 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c @@ -83,6 +83,12 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base, hrtimer_bases) =  			.get_time = &ktime_get_boottime,  			.resolution = KTIME_LOW_RES,  		}, +		{ +			.index = HRTIMER_BASE_TAI, +			.clockid = CLOCK_TAI, +			.get_time = &ktime_get_clocktai, +			.resolution = KTIME_LOW_RES, +		},  	}  }; @@ -90,6 +96,7 @@ static const int hrtimer_clock_to_base_table[MAX_CLOCKS] = {  	[CLOCK_REALTIME]	= HRTIMER_BASE_REALTIME,  	[CLOCK_MONOTONIC]	= HRTIMER_BASE_MONOTONIC,  	[CLOCK_BOOTTIME]	= HRTIMER_BASE_BOOTTIME, +	[CLOCK_TAI]		= HRTIMER_BASE_TAI,  };  static inline int hrtimer_clockid_to_base(clockid_t clock_id) @@ -106,8 +113,10 @@ static void hrtimer_get_softirq_time(struct hrtimer_cpu_base *base)  {  	ktime_t xtim, mono, boot;  	struct timespec xts, tom, slp; +	s32 tai_offset;  	get_xtime_and_monotonic_and_sleep_offset(&xts, &tom, &slp); +	tai_offset = timekeeping_get_tai_offset();  	xtim = timespec_to_ktime(xts);  	mono = ktime_add(xtim, timespec_to_ktime(tom)); @@ -115,6 +124,8 @@ static void hrtimer_get_softirq_time(struct hrtimer_cpu_base *base)  	base->clock_base[HRTIMER_BASE_REALTIME].softirq_time = xtim;  	base->clock_base[HRTIMER_BASE_MONOTONIC].softirq_time = mono;  	base->clock_base[HRTIMER_BASE_BOOTTIME].softirq_time = boot; +	base->clock_base[HRTIMER_BASE_TAI].softirq_time = +				ktime_add(xtim,	ktime_set(tai_offset, 0));  }  /* @@ -651,8 +662,9 @@ static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base)  {  	ktime_t *offs_real = &base->clock_base[HRTIMER_BASE_REALTIME].offset;  	ktime_t *offs_boot = &base->clock_base[HRTIMER_BASE_BOOTTIME].offset; +	ktime_t *offs_tai = &base->clock_base[HRTIMER_BASE_TAI].offset; -	return ktime_get_update_offsets(offs_real, offs_boot); +	return ktime_get_update_offsets(offs_real, offs_boot, offs_tai);  }  /*  |