|
@@ -83,6 +83,12 @@ void __init register_current_timer_delay(const struct delay_timer *timer)
|
|
NSEC_PER_SEC, 3600);
|
|
NSEC_PER_SEC, 3600);
|
|
res = cyc_to_ns(1ULL, new_mult, new_shift);
|
|
res = cyc_to_ns(1ULL, new_mult, new_shift);
|
|
|
|
|
|
|
|
+ if (res > 1000) {
|
|
|
|
+ pr_err("Ignoring delay timer %ps, which has insufficient resolution of %lluns\n",
|
|
|
|
+ timer, res);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
if (!delay_calibrated && (!delay_res || (res < delay_res))) {
|
|
if (!delay_calibrated && (!delay_res || (res < delay_res))) {
|
|
pr_info("Switching to timer-based delay loop, resolution %lluns\n", res);
|
|
pr_info("Switching to timer-based delay loop, resolution %lluns\n", res);
|
|
delay_timer = timer;
|
|
delay_timer = timer;
|