On Tue, 13 Jun 2017 20:04:27 +1000 Michael Ellerman <m...@ellerman.id.au> wrote:
> Vaidyanathan Srinivasan <sva...@linux.vnet.ibm.com> writes: > > * Nicholas Piggin <npig...@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 <npig...@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. Can we call that an incompatible arch change and not worry about it? ISA says we may expect TS (read-only) field to expand, but I guess they could shoehorn something else in there.