diff options
| -rw-r--r-- | arch/arm/kernel/sched_clock.c | 6 | 
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/arm/kernel/sched_clock.c b/arch/arm/kernel/sched_clock.c index bd6f56b9ec2..040168e8a60 100644 --- a/arch/arm/kernel/sched_clock.c +++ b/arch/arm/kernel/sched_clock.c @@ -20,6 +20,7 @@ struct clock_data {  	u64 epoch_ns;  	u32 epoch_cyc;  	u32 epoch_cyc_copy; +	unsigned long rate;  	u32 mult;  	u32 shift;  	bool suspended; @@ -113,11 +114,14 @@ void __init setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate)  	u64 res, wrap;  	char r_unit; +	if (cd.rate > rate) +		return; +  	BUG_ON(bits > 32);  	WARN_ON(!irqs_disabled()); -	WARN_ON(read_sched_clock != jiffy_sched_clock_read);  	read_sched_clock = read;  	sched_clock_mask = (1 << bits) - 1; +	cd.rate = rate;  	/* calculate the mult/shift to convert counter ticks to ns. */  	clocks_calc_mult_shift(&cd.mult, &cd.shift, rate, NSEC_PER_SEC, 0);  |