mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	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
			
			
This commit is contained in:
		
						commit
						efba92d58f
					
				
					 3 changed files with 8 additions and 7 deletions
				
			
		| 
						 | 
					@ -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();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue