[PATCH] powerpc/time: When starting the decrementer don't zero the other bits in TCR

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE5469d

6 messages, 2 authors, 2011-09-01 · open the first message on its own page

[PATCH] powerpc/time: When starting the decrementer don't zero the other bits in TCR

From: Laurentiu Tudor <hidden>
Date: 2011-08-25 12:21:53

Clearing the other TCR bits might break code that sets them (e.g. to setup
the watchdog or fixed interval timer) before start_cpu_decrementer() gets
called.

Signed-off-by: Laurentiu Tudor <redacted>
---
 arch/powerpc/kernel/time.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 03b29a6..e8b5cdc 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -721,7 +721,7 @@ void start_cpu_decrementer(void)
 	mtspr(SPRN_TSR, TSR_ENW | TSR_WIS | TSR_DIS | TSR_FIS);
 
 	/* Enable decrementer interrupt */
-	mtspr(SPRN_TCR, TCR_DIE);
+	mtspr(SPRN_TCR, mfspr(SPRN_TCR) | TCR_DIE);
 #endif /* defined(CONFIG_BOOKE) || defined(CONFIG_40x) */
 }
 
-- 
1.7.1

Re: [PATCH] powerpc/time: When starting the decrementer don't zero the other bits in TCR

From: Kumar Gala <hidden>
Date: 2011-09-01 06:27:33

On Aug 25, 2011, at 7:19 AM, Laurentiu Tudor wrote:
Clearing the other TCR bits might break code that sets them (e.g. to =
setup
the watchdog or fixed interval timer) before start_cpu_decrementer() =
gets
called.
Can you be more specific about the case you're concerned about.  I'm not =
sure we want to leave the FIT enabled if it was previously.  Watchdog I =
could possibly see leaving alone.
quoted hunk
=20
Signed-off-by: Laurentiu Tudor <redacted>
---
arch/powerpc/kernel/time.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
=20
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 03b29a6..e8b5cdc 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -721,7 +721,7 @@ void start_cpu_decrementer(void)
	mtspr(SPRN_TSR, TSR_ENW | TSR_WIS | TSR_DIS | TSR_FIS);
=20
	/* Enable decrementer interrupt */
-	mtspr(SPRN_TCR, TCR_DIE);
+	mtspr(SPRN_TCR, mfspr(SPRN_TCR) | TCR_DIE);
#endif /* defined(CONFIG_BOOKE) || defined(CONFIG_40x) */
}
=20
--=20
1.7.1
=20
=20
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH] powerpc/time: When starting the decrementer don't zero the other bits in TCR

From: Tudor Laurentiu <hidden>
Date: 2011-09-01 08:30:55

On 9/1/2011 9:27 AM, Kumar Gala wrote:
On Aug 25, 2011, at 7:19 AM, Laurentiu Tudor wrote:
quoted
Clearing the other TCR bits might break code that sets them (e.g. to setup
the watchdog or fixed interval timer) before start_cpu_decrementer() gets
called.
Can you be more specific about the case you're concerned about.  I'm not sure we want to leave the FIT enabled if it was previously.  Watchdog I could possibly see leaving alone.
My particular case was this: I was experimenting with having the 
watchdog enabled during the boot process, in case something goes wrong 
before the normal watchdog mechanism kicks in. That didn't work without 
making this modification.
Then, thinking that having a function start_cpu_decrementer() touching 
the other timers and not only the decrementer as its name implies might 
not be good. So I submitted this patch to the public mailing list to let 
the community decide if it's useful.
quoted
Signed-off-by: Laurentiu Tudor<redacted>
---
arch/powerpc/kernel/time.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 03b29a6..e8b5cdc 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -721,7 +721,7 @@ void start_cpu_decrementer(void)
	mtspr(SPRN_TSR, TSR_ENW | TSR_WIS | TSR_DIS | TSR_FIS);

	/* Enable decrementer interrupt */
-	mtspr(SPRN_TCR, TCR_DIE);
+	mtspr(SPRN_TCR, mfspr(SPRN_TCR) | TCR_DIE);
#endif /* defined(CONFIG_BOOKE) || defined(CONFIG_40x) */
}

--
1.7.1


_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH] powerpc/time: When starting the decrementer don't zero the other bits in TCR

From: Kumar Gala <hidden>
Date: 2011-09-01 13:56:12

On Sep 1, 2011, at 3:31 AM, Tudor Laurentiu wrote:
On 9/1/2011 9:27 AM, Kumar Gala wrote:
quoted
=20
On Aug 25, 2011, at 7:19 AM, Laurentiu Tudor wrote:
=20
quoted
Clearing the other TCR bits might break code that sets them (e.g. to =
setup
quoted
quoted
the watchdog or fixed interval timer) before start_cpu_decrementer() =
gets
quoted
quoted
called.
=20
Can you be more specific about the case you're concerned about.  I'm =
not sure we want to leave the FIT enabled if it was previously.  =
Watchdog I could possibly see leaving alone.
=20
My particular case was this: I was experimenting with having the =
watchdog enabled during the boot process, in case something goes wrong =
before the normal watchdog mechanism kicks in. That didn't work without =
making this modification.
Then, thinking that having a function start_cpu_decrementer() touching =
the other timers and not only the decrementer as its name implies might =
not be good. So I submitted this patch to the public mailing list to let =
the community decide if it's useful.

So I think renaming the function is fine, and I think not touching the =
watchdog bits is also reasonable.  So if you update the patch along =
those lines I think we can push in.  I do want to make sure that the FIT =
is disabled as we dont expect it.

Probably add a comment about how care needs to be taken if the wathchdog =
is enable be firmware or a previous kernel.
=20
quoted
quoted
Signed-off-by: Laurentiu Tudor<redacted>
---
arch/powerpc/kernel/time.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
=20
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index 03b29a6..e8b5cdc 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c
@@ -721,7 +721,7 @@ void start_cpu_decrementer(void)
	mtspr(SPRN_TSR, TSR_ENW | TSR_WIS | TSR_DIS | TSR_FIS);
=20
	/* Enable decrementer interrupt */
-	mtspr(SPRN_TCR, TCR_DIE);
+	mtspr(SPRN_TCR, mfspr(SPRN_TCR) | TCR_DIE);
#endif /* defined(CONFIG_BOOKE) || defined(CONFIG_40x) */
}
=20
--
1.7.1
=20
=20
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev
=20
=20
=20
=20

Re: [PATCH] powerpc/time: When starting the decrementer don't zero the other bits in TCR

From: Tudor Laurentiu <hidden>
Date: 2011-09-01 15:38:12

On 9/1/2011 4:56 PM, Kumar Gala wrote:
On Sep 1, 2011, at 3:31 AM, Tudor Laurentiu wrote:
quoted
On 9/1/2011 9:27 AM, Kumar Gala wrote:
quoted
On Aug 25, 2011, at 7:19 AM, Laurentiu Tudor wrote:
quoted
Clearing the other TCR bits might break code that sets them (e.g. to setup
the watchdog or fixed interval timer) before start_cpu_decrementer() gets
called.
Can you be more specific about the case you're concerned about.  I'm not sure we want to leave the FIT enabled if it was previously.  Watchdog I could possibly see leaving alone.
My particular case was this: I was experimenting with having the watchdog enabled during the boot process, in case something goes wrong before the normal watchdog mechanism kicks in. That didn't work without making this modification.
Then, thinking that having a function start_cpu_decrementer() touching the other timers and not only the decrementer as its name implies might not be good. So I submitted this patch to the public mailing list to let the community decide if it's useful.
So I think renaming the function is fine, and I think not touching the watchdog bits is also reasonable.  So if you update the patch along those lines I think we can push in.  I do want to make sure that the FIT is disabled as we dont expect it.
how about:

static void setup_cpu_timers()

?
Probably add a comment about how care needs to be taken if the wathchdog is enable be firmware or a previous kernel.
OK.

Re: [PATCH] powerpc/time: When starting the decrementer don't zero the other bits in TCR

From: Kumar Gala <hidden>
Date: 2011-09-01 18:49:47

On Sep 1, 2011, at 10:38 AM, Tudor Laurentiu wrote:
On 9/1/2011 4:56 PM, Kumar Gala wrote:
quoted
=20
On Sep 1, 2011, at 3:31 AM, Tudor Laurentiu wrote:
=20
quoted
On 9/1/2011 9:27 AM, Kumar Gala wrote:
quoted
=20
On Aug 25, 2011, at 7:19 AM, Laurentiu Tudor wrote:
=20
quoted
Clearing the other TCR bits might break code that sets them (e.g. =
to setup
quoted
quoted
quoted
quoted
the watchdog or fixed interval timer) before =
start_cpu_decrementer() gets
quoted
quoted
quoted
quoted
called.
=20
Can you be more specific about the case you're concerned about.  =
I'm not sure we want to leave the FIT enabled if it was previously.  =
Watchdog I could possibly see leaving alone.
quoted
quoted
=20
My particular case was this: I was experimenting with having the =
watchdog enabled during the boot process, in case something goes wrong =
before the normal watchdog mechanism kicks in. That didn't work without =
making this modification.
quoted
quoted
Then, thinking that having a function start_cpu_decrementer() =
touching the other timers and not only the decrementer as its name =
implies might not be good. So I submitted this patch to the public =
mailing list to let the community decide if it's useful.
quoted
=20
So I think renaming the function is fine, and I think not touching =
the watchdog bits is also reasonable.  So if you update the patch along =
those lines I think we can push in.  I do want to make sure that the FIT =
is disabled as we dont expect it.
=20
how about:
=20
static void setup_cpu_timers()
=20
?
Sounds fine to me
=20
quoted
Probably add a comment about how care needs to be taken if the =
wathchdog is enable be firmware or a previous kernel.
=20
OK.
=20
=20
=20
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help