[PATCH] powerpc/time: When starting the decrementer don't zero the other bits in TCR
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
>> 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) */
>>> Linuxppc-dev mailing list
>>> Linuxppc-dev at lists.ozlabs.org
More information about the Linuxppc-dev