All of lore.kernel.org
 help / color / mirror / Atom feed
From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/6] ARM: add Highbank core platform support
Date: Fri, 19 Aug 2011 16:11:35 +0200	[thread overview]
Message-ID: <201108191611.36147.arnd@arndb.de> (raw)
In-Reply-To: <20110818154048.GD21865@n2100.arm.linux.org.uk>

On Thursday 18 August 2011, Russell King - ARM Linux wrote:
> On Thu, Aug 18, 2011 at 05:34:25PM +0200, Arnd Bergmann wrote:
> > On Tuesday 16 August 2011, Rob Herring wrote:
> > > +static void __init highbank_timer_init(void)
> > > +{
> > > +   int irq;
> > > +   struct device_node *np;
> > > +   void __iomem *timer_base;
> > > +
> > > +   /* Map system registers */
> > > +   np = of_find_compatible_node(NULL, NULL, "calxeda,hb-sregs");
> > > +   sregs_base = of_iomap(np, 0);
> > > +
> > > +   np = of_find_compatible_node(NULL, NULL, "arm,sp804");
> > > +   timer_base = of_iomap(np, 0);
> > > +   irq = irq_of_parse_and_map(np, 0);
> > > +
> > > +   highbank_clocks_init();
> > > +
> > > +   sp804_clocksource_init(timer_base + 0x20, "timer1");
> > > +   sp804_clockevents_init(timer_base, irq, "timer0");
> > > +}
> > 
> > How about moving the sp804 initialization from device tree into the
> > arch/arm/common/timer-sp.c file?
> > 
> > Why do you initialize sregs_base from timer_init?
> 
> That'd create special cases - ARM platforms need registers twiddled to
> change the clock rate for the timers from 32kHz to a more sensible 1MHz.

Is that a bad thing? Platforms that don't need the special case can
simply call sp804_clocksource_init_dt() which scans the device tree,
while other platforms do whatever is necessary to the registers
and then call the existing sp804_clockevents_init.

> > > diff --git a/arch/arm/mach-highbank/include/mach/timex.h b/arch/arm/mach-highbank/include/mach/timex.h
> > > new file mode 100644
> > > index 0000000..88dac7a
> > > --- /dev/null
> > > +++ b/arch/arm/mach-highbank/include/mach/timex.h
> > > @@ -0,0 +1,6 @@
> > > +#ifndef __MACH_TIMEX_H
> > > +#define __MACH_TIMEX_H
> > > +
> > > +#define CLOCK_TICK_RATE            1000000
> > > +
> > > +#endif
> > 
> > In 3.2, we shouldn't need this any more. We'll have to come up with a
> > way to remember removing the new definitions that come in in parallel
> > to the patch that removes the old ones.
> 
> Has anyone really properly evaluated the CLOCK_TICK_RATE issues on things
> like NTP etc?  I have problems with kernels on OMAP4 constantly jumping
> forwards/back by .5sec when NTP is running which suggests that there's
> something not quite right _somewhere_.
> 
> Given that OMAP uses an untrue value for this, and the platforms I have
> which do behave properly when running NTP have correct values, I still
> remain entirely unconvinced about the claims surrounding CLOCK_TICK_RATE
> not mattering.

(Taking John, Deepak an Thomas on Cc, they have all worked on this
in the past)

The argument why it is assumed to be safe is that almost all machines
today use a totally bogus CLOCK_TICK_RATE. This includes most x86
machines (which don't use PIT for periodic ticks any more), all sparc,
powerpc, s390, parisc and mips machines that have never used the PIT
time base but define CLOCK_TICK_RATE to 1193180 or 1193182 anyway.

The only explanation I have for these working correctly is that
the effect of the ACTHZ macro is not what it was meant to be
and that it should better be removed.

> Has anyone managed to run NTP on OMAP4 and had it sync successfully over
> a few days?

Omap is weird in many ways here. They define CLOCK_TICK_RATE to be
equal to HZ, which in turn is a power-of-two value, typically 128.
I have verified that the strange CLOCK_TICK_RATE won't cause problems
in the kernel (in theory), but I could well imagine that the problems
of OMAP are stemming from rounding problems when converting between
kernel ticks (128 Hz) to user ticks (100 Hz) in kernel/time.c, or perhaps
from the omap read_persistent_clock() function not being SMP safe.

	Arnd

  reply	other threads:[~2011-08-19 14:11 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-16 20:34 [PATCH 0/6] Initial Calxeda Highbank support Rob Herring
2011-08-16 20:34 ` [PATCH 1/6] ARM: highbank: add devicetree source Rob Herring
2011-08-17  7:27   ` Shawn Guo
2011-08-17 13:49     ` Rob Herring
2011-08-17 14:51       ` Shawn Guo
2011-08-20 18:32         ` Rob Herring
2011-08-17 17:52       ` Will Deacon
2011-08-20 18:29         ` Rob Herring
2011-08-17  9:27   ` Mark Rutland
     [not found]   ` <4e4b8979.533fd80a.2ff3.1626SMTPIN_ADDED@mx.google.com>
2011-08-17 14:08     ` Rob Herring
2011-08-17 14:34       ` Will Deacon
2011-08-20  9:51   ` Shawn Guo
2011-08-20 18:19     ` Rob Herring
2011-08-16 20:34 ` [PATCH 2/6] ARM: add Highbank core platform support Rob Herring
2011-08-16 22:19   ` Jamie Iles
2011-08-25  2:19     ` Rob Herring
2011-08-17  7:43   ` Russell King - ARM Linux
2011-08-18 15:34   ` Arnd Bergmann
2011-08-18 15:40     ` Russell King - ARM Linux
2011-08-19 14:11       ` Arnd Bergmann [this message]
2011-08-20 19:24         ` Rob Herring
2011-08-20 23:05         ` Russell King - ARM Linux
2011-08-20 18:44     ` Rob Herring
2011-08-25  2:45       ` Rob Herring
2011-08-25  4:03         ` Shawn Guo
2011-08-25 15:59         ` Arnd Bergmann
2011-08-25 16:02       ` Arnd Bergmann
2011-08-25 18:03         ` Rob Herring
2011-08-25 21:44           ` Arnd Bergmann
2011-08-19  6:43   ` Shawn Guo
2011-08-19  7:17     ` Shawn Guo
2011-08-20 18:16       ` Rob Herring
2011-08-19  8:56     ` Dave Martin
2011-08-19 13:45       ` Arnd Bergmann
2011-08-20 14:48   ` Shawn Guo
2011-08-20 18:21     ` Rob Herring
2011-08-20 15:54   ` Shawn Guo
2011-08-20 16:10   ` Shawn Guo
2011-08-20 18:22     ` Rob Herring
2011-08-22  5:55   ` Shawn Guo
2011-08-22 10:01     ` Jamie Iles
2011-08-23  3:33       ` Shawn Guo
2011-08-22  8:35   ` Shawn Guo
2011-08-22  9:15     ` Shawn Guo
2011-08-22 13:23     ` Rob Herring
2011-08-16 20:34 ` [PATCH 3/6] MAINTAINERS: add Calxeda Highbank ARM platform Rob Herring
2011-08-16 20:34 ` [PATCH 4/6] ARM: highbank: add SMP support Rob Herring
2011-08-17  7:37   ` Russell King - ARM Linux
2011-08-17 14:01     ` Rob Herring
2011-08-17 18:52       ` Russell King - ARM Linux
2011-08-16 20:34 ` [PATCH 5/6] ARM: highbank: Add cpu hotplug support Rob Herring
2011-08-16 20:34 ` [PATCH 6/6] ARM: highbank: add suspend support Rob Herring
2011-08-25  1:17   ` Shawn Guo

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=201108191611.36147.arnd@arndb.de \
    --to=arnd@arndb.de \
    --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.