[PATCH 13/14] powerpc/64: runlatch CTRL[RUN] set optimisation

Michael Ellerman mpe at ellerman.id.au
Tue Jun 13 20:04:27 AEST 2017


Vaidyanathan Srinivasan <svaidy at linux.vnet.ibm.com> writes:
> * Nicholas Piggin <npiggin at gmail.com> [2017-06-12 09:58:34]:
>
>> The CTRL register is read-only except bit 63 which is the run latch
>> control. This means it can be updated with a mtspr rather than
>> mfspr/mtspr.
>> 
>> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
>
>> diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
>> index baae104b16c7..a44ea034c226 100644
>> --- a/arch/powerpc/kernel/process.c
>> +++ b/arch/powerpc/kernel/process.c
>> @@ -1973,13 +1969,9 @@ void notrace __ppc64_runlatch_on(void)
>>  void notrace __ppc64_runlatch_off(void)
>>  {
>>  	struct thread_info *ti = current_thread_info();
>> -	unsigned long ctrl;
>> 
>>  	ti->local_flags &= ~_TLF_RUNLATCH;
>> -
>> -	ctrl = mfspr(SPRN_CTRLF);
>> -	ctrl &= ~CTRL_RUNLATCH;
>> -	mtspr(SPRN_CTRLT, ctrl);
>> +	mtspr(SPRN_CTRLT, 0);
>
> Good idea.  Writing to CTRL register can change only the RUN field.
> Was this any different in older generations?

No AFAICS back to 2.02.

> Anton and Ben kept the mfspr/mtspr part in earlier updates to this
> routine.

Doing the read/modify write is forward compatible vs a new writable
field, whereas writing the whole register with a known value is not.

cheers


More information about the Linuxppc-dev mailing list