Time running
Balaji Rao
balaji at raobalaji.com
Mon Oct 6 00:12:16 CEST 2008
On Wed, 01 Oct 2008 15:05:22 +0100
Andy Green <andy at openmoko.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Somebody in the thread at some point said:
> | Hi,
> |
> | I've noticed that time runs ~6x slower when using a stable-tracking
> | kernel and it makes booting _really_ slow!
> |
> | How do I fix this ? I've noticed that the number of timer interrupts
> | received is ~6x lesser. I wonder what the problem really is. Are the
> | interrupts not delivered at the required rate and is there a way I
> can | test this ?
> |
> | Suggestions welcome.
>
> I'm working on adding the andy-2.6.26 stuff to andy-tracking right now
> and seeing the same.
>
> Previously (some weeks ago) on tracking there was trouble with hdq
> that I put down to PWM init affecting the timer used for FIQ
> generation. I moved the FIQ timer to another PWM unit and the
> problems went away. Since then FIQ is trashed by later changes
> upstream I am trying to figure out now.
>
> Anyway I would dump the PWM-related registers from CPU on 2.6.24 or
> 2.6.26 and current tracking and compare them, it seems it might give
> a clue.
Andy,
I've narrowed down the problem to the following change upstream.
commit b999f0db941f56bb0f68ebf455f6e2960cfd5804
Author: Ben Dooks <ben-linux at fluff.org>
Date: Thu Jul 3 11:24:27 2008 +0100
[ARM] S3C24XX: Support for PWM timer clocks via clk_* API
Add support for the PWM timer clock routing via the
standard clk_ API.
Signed-off-by: Ben Dooks <ben-linux at fluff.org>
I'm able to temporarily fix the problem by a little patch which
prevents the TCFG1 register from being overwritten.
The actual fix is to use the clk_* api (I have no idea what it is!). We
can start worrying about it when we are looking to send our timer code
upstream. :)
diff --git a/arch/arm/plat-s3c24xx/pwm-clock.c
b/arch/arm/plat-s3c24xx/pwm-clock.c
index 306cc9c..de7b91d 100644
--- a/arch/arm/plat-s3c24xx/pwm-clock.c
+++ b/arch/arm/plat-s3c24xx/pwm-clock.c
@@ -325,7 +325,7 @@ static int clk_pwm_tin_set_parent(struct clk *clk,
struct clk *parent)
tcfg1 = __raw_readl(S3C2410_TCFG1);
tcfg1 &= ~(S3C2410_TCFG1_MUX_MASK << shift);
- __raw_writel(tcfg1 | bits, S3C2410_TCFG1);
+ //__raw_writel(tcfg1 | bits, S3C2410_TCFG1);
local_irq_restore(flags);
Does that remotely help the FIQ problem in any way ?
- Balaji
More information about the openmoko-kernel
mailing list