Patch "powerpc/32: Don't use lmw/stmw for saving/restoring non volatile regs" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    powerpc/32: Don't use lmw/stmw for saving/restoring non volatile regs

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     powerpc-32-don-t-use-lmw-stmw-for-saving-restoring-n.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit f1c09f0b31f846a8d0c2ae5ed11258e0a405f3de
Author: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
Date:   Mon Aug 23 15:29:12 2021 +0000

    powerpc/32: Don't use lmw/stmw for saving/restoring non volatile regs
    
    [ Upstream commit a85c728cb5e12216c19ae5878980c2cbbbf8616d ]
    
    Instructions lmw/stmw are interesting for functions that are rarely
    used and not in the cache, because only one instruction is to be
    copied into the instruction cache instead of 19. However those
    instruction are less performant than 19x raw lwz/stw as they require
    synchronisation plus one additional cycle.
    
    SAVE_NVGPRS / REST_NVGPRS are used in only a few places which are
    mostly in interrupts entries/exits and in task switch so they are
    likely already in the cache.
    
    Using standard lwz improves null_syscall selftest by:
    - 10 cycles on mpc832x.
    - 2 cycles on mpc8xx.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
    Signed-off-by: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/316c543b8906712c108985c8463eec09c8db577b.1629732542.git.christophe.leroy@xxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/powerpc/include/asm/ppc_asm.h b/arch/powerpc/include/asm/ppc_asm.h
index 1c538a9a11e0..7be24048b8d1 100644
--- a/arch/powerpc/include/asm/ppc_asm.h
+++ b/arch/powerpc/include/asm/ppc_asm.h
@@ -28,8 +28,8 @@
 #else
 #define SAVE_GPR(n, base)	stw	n,GPR0+4*(n)(base)
 #define REST_GPR(n, base)	lwz	n,GPR0+4*(n)(base)
-#define SAVE_NVGPRS(base)	stmw	13, GPR0+4*13(base)
-#define REST_NVGPRS(base)	lmw	13, GPR0+4*13(base)
+#define SAVE_NVGPRS(base)	SAVE_GPR(13, base); SAVE_8GPRS(14, base); SAVE_10GPRS(22, base)
+#define REST_NVGPRS(base)	REST_GPR(13, base); REST_8GPRS(14, base); REST_10GPRS(22, base)
 #endif
 
 #define SAVE_2GPRS(n, base)	SAVE_GPR(n, base); SAVE_GPR(n+1, base)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux