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

Commit efba92d5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull timer fixes from Thomas Gleixner:
 "A set of small fixes:

   - Repair the ktime_get_coarse() functions so they actually deliver
     what they are supposed to: tick granular time stamps. The current
     code missed to add the accumulated nanoseconds part of the
     timekeeper so the resulting granularity was 1 second.

   - Prevent the tracer from infinitely recursing into time getter
     functions in the arm architectured timer by marking these functions
     notrace

   - Fix a trivial compiler warning caused by wrong qualifier ordering"

* 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  timekeeping: Repair ktime_get_coarse*() granularity
  clocksource/drivers/arm_arch_timer: Don't trace count reader functions
  clocksource/drivers/timer-ti-dm: Change to new style declaration
parents f763cf8e e3ff9c36
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -149,22 +149,22 @@ u32 arch_timer_reg_read(int access, enum arch_timer_reg reg,
	return val;
	return val;
}
}


static u64 arch_counter_get_cntpct_stable(void)
static notrace u64 arch_counter_get_cntpct_stable(void)
{
{
	return __arch_counter_get_cntpct_stable();
	return __arch_counter_get_cntpct_stable();
}
}


static u64 arch_counter_get_cntpct(void)
static notrace u64 arch_counter_get_cntpct(void)
{
{
	return __arch_counter_get_cntpct();
	return __arch_counter_get_cntpct();
}
}


static u64 arch_counter_get_cntvct_stable(void)
static notrace u64 arch_counter_get_cntvct_stable(void)
{
{
	return __arch_counter_get_cntvct_stable();
	return __arch_counter_get_cntvct_stable();
}
}


static u64 arch_counter_get_cntvct(void)
static notrace u64 arch_counter_get_cntvct(void)
{
{
	return __arch_counter_get_cntvct();
	return __arch_counter_get_cntvct();
}
}
+1 −1
Original line number Original line Diff line number Diff line
@@ -896,7 +896,7 @@ static int omap_dm_timer_remove(struct platform_device *pdev)
	return ret;
	return ret;
}
}


const static struct omap_dm_timer_ops dmtimer_ops = {
static const struct omap_dm_timer_ops dmtimer_ops = {
	.request_by_node = omap_dm_timer_request_by_node,
	.request_by_node = omap_dm_timer_request_by_node,
	.request_specific = omap_dm_timer_request_specific,
	.request_specific = omap_dm_timer_request_specific,
	.request = omap_dm_timer_request,
	.request = omap_dm_timer_request,
+3 −2
Original line number Original line Diff line number Diff line
@@ -808,17 +808,18 @@ ktime_t ktime_get_coarse_with_offset(enum tk_offsets offs)
	struct timekeeper *tk = &tk_core.timekeeper;
	struct timekeeper *tk = &tk_core.timekeeper;
	unsigned int seq;
	unsigned int seq;
	ktime_t base, *offset = offsets[offs];
	ktime_t base, *offset = offsets[offs];
	u64 nsecs;


	WARN_ON(timekeeping_suspended);
	WARN_ON(timekeeping_suspended);


	do {
	do {
		seq = read_seqcount_begin(&tk_core.seq);
		seq = read_seqcount_begin(&tk_core.seq);
		base = ktime_add(tk->tkr_mono.base, *offset);
		base = ktime_add(tk->tkr_mono.base, *offset);
		nsecs = tk->tkr_mono.xtime_nsec >> tk->tkr_mono.shift;


	} while (read_seqcount_retry(&tk_core.seq, seq));
	} while (read_seqcount_retry(&tk_core.seq, seq));


	return base;
	return base + nsecs;

}
}
EXPORT_SYMBOL_GPL(ktime_get_coarse_with_offset);
EXPORT_SYMBOL_GPL(ktime_get_coarse_with_offset);