All of lore.kernel.org
 help / color / mirror / Atom feed
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH] sched_clock: also call register_current_timer_delay() if possible
Date: Wed, 30 Apr 2014 13:48:00 +0100	[thread overview]
Message-ID: <20140430124800.GC21876@arm.com> (raw)
In-Reply-To: <1398860614-29469-1-git-send-email-bigeasy@linutronix.de>

Hi Sebastian,

On Wed, Apr 30, 2014 at 01:23:34PM +0100, Sebastian Andrzej Siewior wrote:
> On ARM one has to call register_current_timer_delay() in order to use
> the (quick) timer based calibrarion instead of the a little slower loop
> based delay.
> The timer function specified in register_current_timer_delay() is also
> used by read_current_timer() which would otherwise return -ENXIO.
> And read_current_timer() timer is used by get_cycles() which in turn is
> used by random_get_entropy(). That means each sub-architecture returned
> here 0 if register_current_timer_delay() was no performed.
> 
> The parameters for for sched_clock_register() and
> register_current_timer_delay() are mostly the same. Instead of calling
> register_current_timer_delay() each time just after (or before)
> sched_clock_register() I thought it might easier by doing it once at
> sched_clock time since the parameter are the same. That means each ARM sub
> arch that working sched-clock would also have a working random_get_entropy()
> implementation.
> 
> Any comments?

As long as sched_clock is guaranteed to be a fixed frequency, always-on
clocksource then this could work, but it removes the flexibility of having
a separate delay clock and sched clock (is this useful?).

Looking at your patch, I noticed that we need to extend the
register_current_timer_delay function to deal with clocks that aren't as
wide as cycle_t, otherwise we don't delay() for long enough when the clock
overflows (this is potentially already an issue for architected timers <
64-bit). Could you cook a patch for that please?

Will

WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will.deacon@arm.com>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Russell King <linux@arm.linux.org.uk>,
	John Stultz <john.stultz@linaro.org>,
	Theodore Ts o <tytso@mit.edu>,
	Stephen Boyd <sboyd@codeaurora.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [RFC PATCH] sched_clock: also call register_current_timer_delay() if possible
Date: Wed, 30 Apr 2014 13:48:00 +0100	[thread overview]
Message-ID: <20140430124800.GC21876@arm.com> (raw)
In-Reply-To: <1398860614-29469-1-git-send-email-bigeasy@linutronix.de>

Hi Sebastian,

On Wed, Apr 30, 2014 at 01:23:34PM +0100, Sebastian Andrzej Siewior wrote:
> On ARM one has to call register_current_timer_delay() in order to use
> the (quick) timer based calibrarion instead of the a little slower loop
> based delay.
> The timer function specified in register_current_timer_delay() is also
> used by read_current_timer() which would otherwise return -ENXIO.
> And read_current_timer() timer is used by get_cycles() which in turn is
> used by random_get_entropy(). That means each sub-architecture returned
> here 0 if register_current_timer_delay() was no performed.
> 
> The parameters for for sched_clock_register() and
> register_current_timer_delay() are mostly the same. Instead of calling
> register_current_timer_delay() each time just after (or before)
> sched_clock_register() I thought it might easier by doing it once at
> sched_clock time since the parameter are the same. That means each ARM sub
> arch that working sched-clock would also have a working random_get_entropy()
> implementation.
> 
> Any comments?

As long as sched_clock is guaranteed to be a fixed frequency, always-on
clocksource then this could work, but it removes the flexibility of having
a separate delay clock and sched clock (is this useful?).

Looking at your patch, I noticed that we need to extend the
register_current_timer_delay function to deal with clocks that aren't as
wide as cycle_t, otherwise we don't delay() for long enough when the clock
overflows (this is potentially already an issue for architected timers <
64-bit). Could you cook a patch for that please?

Will

  reply	other threads:[~2014-04-30 12:48 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-30 12:23 [RFC PATCH] sched_clock: also call register_current_timer_delay() if possible Sebastian Andrzej Siewior
2014-04-30 12:23 ` Sebastian Andrzej Siewior
2014-04-30 12:48 ` Will Deacon [this message]
2014-04-30 12:48   ` Will Deacon
2014-04-30 13:01   ` Sebastian Andrzej Siewior
2014-04-30 13:01     ` Sebastian Andrzej Siewior
2014-04-30 13:26     ` Will Deacon
2014-04-30 13:26       ` Will Deacon
2014-04-30 16:56       ` Sebastian Andrzej Siewior
2014-04-30 16:56         ` Sebastian Andrzej Siewior
2014-05-02 16:50         ` Will Deacon
2014-05-02 16:50           ` Will Deacon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140430124800.GC21876@arm.com \
    --to=will.deacon@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.