• Christophe Leroy's avatar
    powerpc/non-smp: Unconditionaly call smp_mb() on switch_mm · c8a6d910
    Christophe Leroy authored
    Commit 3ccfebed ("powerpc, membarrier: Skip memory barrier in
    switch_mm()") added some logic to skip the smp_mb() in
    switch_mm_irqs_off() before the call to switch_mmu_context().
    
    However, on non SMP smp_mb() is just a compiler barrier and doing
    it unconditionaly is simpler than the logic used to check whether the
    barrier is needed or not.
    
    After the patch:
    
    00000000 <switch_mm_irqs_off>:
    ...
       c:	7c 04 18 40 	cmplw   r4,r3
      10:	81 24 00 24 	lwz     r9,36(r4)
      14:	91 25 04 c8 	stw     r9,1224(r5)
      18:	4d 82 00 20 	beqlr
      1c:	48 00 00 00 	b       1c <switch_mm_irqs_off+0x1c>
    			1c: R_PPC_REL24	switch_mmu_context
    
    Before the patch:
    
    00000000 <switch_mm_irqs_off>:
    ...
       c:	7c 04 18 40 	cmplw   r4,r3
      10:	81 24 00 24 	lwz     r9,36(r4)
      14:	91 25 04 c8 	stw     r9,1224(r5)
      18:	4d 82 00 20 	beqlr
      1c:	81 24 00 28 	lwz     r9,40(r4)
      20:	71 29 00 0a 	andi.   r9,r9,10
      24:	40 82 00 34 	bne     58 <switch_mm_irqs_off+0x58>
      28:	48 00 00 00 	b       28 <switch_mm_irqs_off+0x28>
    			28: R_PPC_REL24	switch_mmu_context
    ...
      58:	2c 03 00 00 	cmpwi   r3,0
      5c:	41 82 ff cc 	beq     28 <switch_mm_irqs_off+0x28>
      60:	48 00 00 00 	b       60 <switch_mm_irqs_off+0x60>
    			60: R_PPC_REL24	switch_mmu_context
    Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/e9d501da0c59f60ca767b1b3ea4603fce6d02b9e.1625486440.git.christophe.leroy@csgroup.eu
    c8a6d910
membarrier.h 877 Bytes