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

Kumar Gala galak at kernel.crashing.org
Thu Sep 1 23:56:04 EST 2011


On Sep 1, 2011, at 3:31 AM, Tudor Laurentiu wrote:

> On 9/1/2011 9:27 AM, Kumar Gala wrote:
>> 
>> 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.
> 
> 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.

> 
>>> Signed-off-by: Laurentiu Tudor<Laurentiu.Tudor at freescale.com>
>>> ---
>>> 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 at lists.ozlabs.org
>>> https://lists.ozlabs.org/listinfo/linuxppc-dev
>> 
>> 
> 
> 



More information about the Linuxppc-dev mailing list