From: john.stultz@linaro.org (John Stultz)
To: linux-arm-kernel@lists.infradead.org
Subject: One of these things (CONFIG_HZ) is not like the others..
Date: Mon, 21 Jan 2013 14:18:20 -0800 [thread overview]
Message-ID: <50FDBEAC.2050606@linaro.org> (raw)
In-Reply-To: <20130121211218.GX23505@n2100.arm.linux.org.uk>
On 01/21/2013 01:12 PM, Russell King - ARM Linux wrote:
> On Mon, Jan 21, 2013 at 01:00:15PM -0800, John Stultz wrote:
>> So if you can not get actual timer ticks any faster then 200 HZ on that
>> hardware, setting HZ higher could cause some jiffies related timer
>> trouble
> Err, no John. It's the other way around - especially on some platforms
> which are incapable of being converted to the clock source support.
>
> EBSA110 has _one_ counter. It counts down at a certain rate, and when
> it rolls over from 0 to FFFF, it produces an interrupt and continues
> counting down from FFFF.
>
> To produce anything close to a reasonable regular tick rate from that,
> the only way to do it is - with interrupts disabled - read the current
> value to find out how far the timer has rolled over, and set it so that
> the next event will expire as close as possible to the desired HZ rate.
>
> So, none of the clcokevent stuff can be used; and we rely _purely_ on
> counting interrupts in jiffy based increments to provide any reference
> of time.
> Moreover, because the counter is only 16-bit, and it's clocked from
> something around 7MHz, well, maths will tell you why 200Hz had to be
> chosen rather than 100Hz.
Ah, so the counter can't do anything *lower* then ~107HZ, right? (7MHZ/2^16)
So we used to have the ACTHZ code to handle error from the HZ rate
requested and the HZ rate possible given the underlying hardware. That's
been moved to the register_refined_jiffies(), but do you have a sense if
there a reason it couldn't be used? I don't quite recall the bounds at
this second, so ~7% error might very well be too large.
So yes, I suspect these sorts of platforms, where there are no modern
clocksource/clockevent driver, as well as further constraints (like
specific HZ) are likely not good candidates for a multi-arch build.
thanks
-john
WARNING: multiple messages have this Message-ID (diff)
From: John Stultz <john.stultz@linaro.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Arnd Bergmann <arnd@arndb.de>, Matt Sealey <matt@genesi-usa.com>,
Linux ARM Kernel ML <linux-arm-kernel@lists.infradead.org>,
LKML <linux-kernel@vger.kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>, Ben Dooks <ben@simtec.co.uk>
Subject: Re: One of these things (CONFIG_HZ) is not like the others..
Date: Mon, 21 Jan 2013 14:18:20 -0800 [thread overview]
Message-ID: <50FDBEAC.2050606@linaro.org> (raw)
In-Reply-To: <20130121211218.GX23505@n2100.arm.linux.org.uk>
On 01/21/2013 01:12 PM, Russell King - ARM Linux wrote:
> On Mon, Jan 21, 2013 at 01:00:15PM -0800, John Stultz wrote:
>> So if you can not get actual timer ticks any faster then 200 HZ on that
>> hardware, setting HZ higher could cause some jiffies related timer
>> trouble
> Err, no John. It's the other way around - especially on some platforms
> which are incapable of being converted to the clock source support.
>
> EBSA110 has _one_ counter. It counts down at a certain rate, and when
> it rolls over from 0 to FFFF, it produces an interrupt and continues
> counting down from FFFF.
>
> To produce anything close to a reasonable regular tick rate from that,
> the only way to do it is - with interrupts disabled - read the current
> value to find out how far the timer has rolled over, and set it so that
> the next event will expire as close as possible to the desired HZ rate.
>
> So, none of the clcokevent stuff can be used; and we rely _purely_ on
> counting interrupts in jiffy based increments to provide any reference
> of time.
> Moreover, because the counter is only 16-bit, and it's clocked from
> something around 7MHz, well, maths will tell you why 200Hz had to be
> chosen rather than 100Hz.
Ah, so the counter can't do anything *lower* then ~107HZ, right? (7MHZ/2^16)
So we used to have the ACTHZ code to handle error from the HZ rate
requested and the HZ rate possible given the underlying hardware. That's
been moved to the register_refined_jiffies(), but do you have a sense if
there a reason it couldn't be used? I don't quite recall the bounds at
this second, so ~7% error might very well be too large.
So yes, I suspect these sorts of platforms, where there are no modern
clocksource/clockevent driver, as well as further constraints (like
specific HZ) are likely not good candidates for a multi-arch build.
thanks
-john
next prev parent reply other threads:[~2013-01-21 22:18 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-21 20:01 One of these things (CONFIG_HZ) is not like the others Matt Sealey
2013-01-21 20:01 ` Matt Sealey
2013-01-21 20:41 ` Arnd Bergmann
2013-01-21 20:41 ` Arnd Bergmann
2013-01-21 21:00 ` John Stultz
2013-01-21 21:00 ` John Stultz
2013-01-21 21:12 ` Russell King - ARM Linux
2013-01-21 21:12 ` Russell King - ARM Linux
2013-01-21 22:18 ` John Stultz [this message]
2013-01-21 22:18 ` John Stultz
2013-01-21 22:44 ` Russell King - ARM Linux
2013-01-21 22:44 ` Russell King - ARM Linux
2013-01-22 8:27 ` Arnd Bergmann
2013-01-22 8:27 ` Arnd Bergmann
2013-01-21 22:20 ` Matt Sealey
2013-01-21 22:20 ` Matt Sealey
2013-01-21 22:42 ` Russell King - ARM Linux
2013-01-21 22:42 ` Russell King - ARM Linux
2013-01-21 23:23 ` Matt Sealey
2013-01-21 23:23 ` Matt Sealey
2013-01-21 23:49 ` Russell King - ARM Linux
2013-01-21 23:49 ` Russell King - ARM Linux
2013-01-22 0:09 ` Matt Sealey
2013-01-22 0:09 ` Matt Sealey
2013-01-22 0:26 ` Matt Sealey
2013-01-22 0:26 ` Matt Sealey
2013-01-21 21:14 ` Matt Sealey
2013-01-21 21:14 ` Matt Sealey
2013-01-21 22:36 ` John Stultz
2013-01-21 22:36 ` John Stultz
2013-01-21 22:49 ` Russell King - ARM Linux
2013-01-21 22:49 ` Russell King - ARM Linux
2013-01-21 22:54 ` Matt Sealey
2013-01-21 22:54 ` Matt Sealey
2013-01-21 23:13 ` Russell King - ARM Linux
2013-01-21 23:13 ` Russell King - ARM Linux
2013-01-21 23:30 ` Matt Sealey
2013-01-21 23:30 ` Matt Sealey
2013-01-22 0:02 ` Russell King - ARM Linux
2013-01-22 0:02 ` Russell King - ARM Linux
2013-01-22 0:38 ` John Stultz
2013-01-22 0:38 ` John Stultz
2013-01-22 0:51 ` John Stultz
2013-01-22 0:51 ` John Stultz
2013-01-22 1:06 ` Matt Sealey
2013-01-22 1:06 ` Matt Sealey
2013-01-22 1:18 ` Russell King - ARM Linux
2013-01-22 1:18 ` Russell King - ARM Linux
2013-01-22 1:56 ` Matt Sealey
2013-01-22 1:56 ` Matt Sealey
2013-01-22 1:31 ` John Stultz
2013-01-22 1:31 ` John Stultz
2013-01-22 2:10 ` Matt Sealey
2013-01-22 2:10 ` Matt Sealey
2013-01-31 21:31 ` Thomas Gleixner
2013-01-31 21:31 ` Thomas Gleixner
2013-01-21 21:02 ` Matt Sealey
2013-01-21 21:02 ` Matt Sealey
2013-01-21 22:30 ` Arnd Bergmann
2013-01-21 22:30 ` Arnd Bergmann
2013-01-21 22:45 ` Russell King - ARM Linux
2013-01-21 22:45 ` Russell King - ARM Linux
2013-01-21 23:01 ` Matt Sealey
2013-01-21 23:01 ` Matt Sealey
2013-01-21 21:03 ` Russell King - ARM Linux
2013-01-21 21:03 ` Russell King - ARM Linux
2013-01-21 23:23 ` Tony Lindgren
2013-01-21 23:23 ` Tony Lindgren
2013-01-22 6:23 ` Santosh Shilimkar
2013-01-22 6:23 ` Santosh Shilimkar
2013-01-22 9:31 ` Arnd Bergmann
2013-01-22 9:31 ` Arnd Bergmann
2013-01-22 10:14 ` Santosh Shilimkar
2013-01-22 10:14 ` Santosh Shilimkar
2013-01-22 14:51 ` Russell King - ARM Linux
2013-01-22 14:51 ` Russell King - ARM Linux
2013-01-22 15:05 ` Santosh Shilimkar
2013-01-22 15:05 ` Santosh Shilimkar
2013-01-28 6:08 ` Santosh Shilimkar
2013-01-28 6:08 ` Santosh Shilimkar
2013-01-29 0:01 ` John Stultz
2013-01-29 0:01 ` John Stultz
2013-01-29 6:43 ` Santosh Shilimkar
2013-01-29 6:43 ` Santosh Shilimkar
2013-01-29 10:06 ` Russell King - ARM Linux
2013-01-29 10:06 ` Russell King - ARM Linux
2013-01-29 18:43 ` John Stultz
2013-01-29 18:43 ` John Stultz
2013-01-22 17:31 ` Arnd Bergmann
2013-01-22 17:31 ` Arnd Bergmann
2013-01-22 18:59 ` John Stultz
2013-01-22 18:59 ` John Stultz
2013-01-22 21:52 ` Tony Lindgren
2013-01-22 21:52 ` Tony Lindgren
2013-01-23 5:18 ` Santosh Shilimkar
2013-01-23 5:18 ` Santosh Shilimkar
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=50FDBEAC.2050606@linaro.org \
--to=john.stultz@linaro.org \
--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.