Messages in this thread | | | Date | Thu, 19 Oct 2017 14:43:25 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: [PATCH 1/3] clockevents: Retry programming min delta up to 10 times |
| |
On Thu, 19 Oct 2017, Matt Redfearn wrote: > unsigned long long clc; > int64_t delta; > + int i; > > - delta = dev->min_delta_ns; > - dev->next_event = ktime_add_ns(ktime_get(), delta); > + for (i = 0;;) {
Bah. What's wrong with
for (i = 0; i < 10; i++) {
.... if (!(dev->set_next_event((unsigned long) clc, dev)) return 0; } return -ETIME;
Hmm?
> + delta = dev->min_delta_ns; > + dev->next_event = ktime_add_ns(ktime_get(), delta); > > - if (clockevent_state_shutdown(dev)) > - return 0; > + if (clockevent_state_shutdown(dev)) > + return 0; > > - dev->retries++; > - clc = ((unsigned long long) delta * dev->mult) >> dev->shift; > - return dev->set_next_event((unsigned long) clc, dev); > + dev->retries++; > + clc = ((unsigned long long) delta * dev->mult) >> dev->shift;
I'd rather make that:
delta = 0; for (i = 0; i < 10; i++) { delta += dev->min_delta_ns; dev->next_event = ktime_add_ns(ktime_get(), delta); clc = ..... .....
That makes it more likely to succeed fast. Hmm?
Thanks,
tglx
| |