linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [patch 07/16] arm: omap: Use clocksource based sched_clock
Date: Mon, 2 May 2011 01:10:28 -0700	[thread overview]
Message-ID: <20110502081028.GC3755@atomide.com> (raw)
In-Reply-To: <alpine.LFD.2.02.1104291616160.3005@ionos>

* Thomas Gleixner <tglx@linutronix.de> [110429 07:16]:
> On Fri, 29 Apr 2011, Tony Lindgren wrote:
> > * Thomas Gleixner <tglx@linutronix.de> [110429 05:25]:
> > > 
> > > The generic sched_clock implementation returns a jiffies based value
> > > as long as there is no clocksource registered. But the above does not
> > > fail in sched_clock() it fails in read_persistent_clock() which does
> > > 
> > >         last_cycles = cycles;
> > >         cycles = clocksource_32k.read(&clocksource_32k);
> > > 
> > > So the following change causes this:
> > > 
> > > -     .read           = omap_32k_read_dummy,
> > 
> > Ah right.
> >  
> > > Which leads to the question why you have a read_persistent_clock() at
> > > all if it always reads 0 via omap_32k_read_dummy ? Or is this meant
> > > just for the resume case? Then the above and the removal of
> > > omap_32k_read_dummy() needs to be undone.
> > 
> > The omap_32k_read_dummy needs to return 0 until the clocks are
> > enabled and the right read function is selected. The .read gets
> > then set in omap_init_clocksource_32k.
> > 
> > It would be nice to handle that in a generic way though,
> > I would assume the same issue exists for other platforms too.
> 
> static inline cycles_t clocksource_read_safe(struct clocksource *c)
> {
> 	return c->read ? c->read(c) : 0;
> }

That adds testing for it for each read.. So the current setup
is better.
 
> For the core timekeeping code that's a non issue as nothing should
> register a clocksource with an invalid read function pointer :)

Looks like omap_device code calls read_persistent_clock before
omap_init_clocksource_32k is run. I'll take a look and see if that
is needed when I refresh other omap init_early patches.

Anyways, currently nothing prevents calling read_persistent_clock
before it's initialized and a platform specific hack is needed.
Maybe the default should be clocksource_read_safe that gets
changed by the platform code when initializing?

Regards,

Tony

  reply	other threads:[~2011-05-02  8:10 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-23 20:54 [patch 00/16] arm: Replace arm sched_clock by clocksource based sched_clock Thomas Gleixner
2011-04-23 20:54 ` [patch 01/16] time: Provide clocksource based sched_clock() Thomas Gleixner
2011-04-23 21:33   ` Stephen Boyd
2011-04-23 21:40     ` Thomas Gleixner
2011-04-25  7:10   ` Kukjin Kim
2011-04-26 16:36   ` Stephen Boyd
2011-04-23 20:54 ` [patch 02/16] arm: plat-orion: Use clocksource based sched_clock Thomas Gleixner
2011-04-23 20:54 ` [patch 03/16] arm: s5p: " Thomas Gleixner
2011-04-23 21:33   ` Stephen Boyd
2011-04-23 21:41     ` Thomas Gleixner
2011-04-25  7:08   ` Kukjin Kim
2011-04-23 20:54 ` [patch 04/16] arm: davinci: " Thomas Gleixner
2011-04-26 15:40   ` Nori, Sekhar
2011-04-23 20:54 ` [patch 05/16] arm: ixp4xx: " Thomas Gleixner
2011-04-23 20:54 ` [patch 06/16] arm: mmp: " Thomas Gleixner
2011-04-23 20:54 ` [patch 07/16] arm: omap: " Thomas Gleixner
2011-04-29 11:57   ` Tony Lindgren
2011-04-29 12:28     ` Thomas Gleixner
2011-04-29 12:51       ` Tony Lindgren
2011-04-29 14:19         ` Thomas Gleixner
2011-05-02  8:10           ` Tony Lindgren [this message]
2011-04-23 20:54 ` [patch 08/16] arm: pxa: " Thomas Gleixner
2011-04-25 16:25   ` Eric
2011-04-26  7:23     ` Sascha Hauer
2011-04-26  7:26       ` Eric Miao
2011-04-23 20:54 ` [patch 09/16] arm: sa1100: " Thomas Gleixner
2011-04-23 20:54 ` [patch 10/16] arm: tegra: " Thomas Gleixner
2011-04-23 20:54 ` [patch 11/16] arm: u300: " Thomas Gleixner
2011-04-24  7:03   ` Linus Walleij
2011-04-23 20:54 ` [patch 12/16] arm: plat-iop: " Thomas Gleixner
2011-04-23 20:54 ` [patch 13/16] arm plat-mxc: " Thomas Gleixner
2011-04-26  7:23   ` Sascha Hauer
2011-04-23 20:54 ` [patch 14/16] arm: nomadik: " Thomas Gleixner
2011-04-24  7:04   ` Linus Walleij
2011-04-23 20:54 ` [patch 15/16] arm: versatile: " Thomas Gleixner
2011-04-23 20:54 ` [patch 16/16] arm: Remove sched_clock code Thomas Gleixner
2011-04-25  7:11   ` Kukjin Kim
2011-04-24  7:27 ` [patch 00/16] arm: Replace arm sched_clock by clocksource based sched_clock Linus Walleij
2011-04-25 19:10   ` john stultz
2011-04-26  7:45     ` Linus Walleij
2011-04-26  8:50       ` Tony Lindgren
2011-04-26  8:02   ` Thomas Gleixner
2011-04-29  9:46 ` Russell King - ARM Linux
2011-04-29 10:22   ` Thomas Gleixner
2011-04-29 10:32     ` Tony Lindgren
2011-04-29 17:01       ` Thomas Gleixner
2011-04-29 21:53         ` Linus Walleij
2011-04-29 21:57           ` Thomas Gleixner
2011-05-02  8:18             ` Tony Lindgren
2011-05-08 20:34             ` Linus Walleij
2011-06-13  2:32 ` Rob Herring

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=20110502081028.GC3755@atomide.com \
    --to=tony@atomide.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).