From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752834AbdJSMnf (ORCPT ); Thu, 19 Oct 2017 08:43:35 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:33112 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752807AbdJSMne (ORCPT ); Thu, 19 Oct 2017 08:43:34 -0400 Date: Thu, 19 Oct 2017 14:43:25 +0200 (CEST) From: Thomas Gleixner To: Matt Redfearn cc: Daniel Lezcano , James Hogan , linux-mips@linux-mips.org, James Hogan , Martin Schwidefsky , linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3] clockevents: Retry programming min delta up to 10 times In-Reply-To: <1508414135-29123-1-git-send-email-matt.redfearn@mips.com> Message-ID: References: <1508414135-29123-1-git-send-email-matt.redfearn@mips.com> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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