# 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 
- List: linuxppc-dev
- Page: https://ratatoskr.run/linuxppc-dev/2011/09/9466195
- Thread: https://ratatoskr.run/linuxppc-dev/2011/08/9466090/t.md

```text

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

> On 9/1/2011 9:27 AM, Kumar Gala wrote:
>>=20
>> On Aug 25, 2011, at 7:19 AM, Laurentiu Tudor wrote:
>>=20
>>> 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.
>>=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
>>> 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
```
