Re: [PATCH 13/14] powerpc/64: runlatch CTRL[RUN] set optimisation
From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2017-06-13 10:04:28
Vaidyanathan Srinivasan [off-list ref] writes:
* Nicholas Piggin [off-list ref] [2017-06-12 09:58:34]:quoted
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@gmail.com>quoted
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