# git rev-parse -q --verify 62aef98aa07ec7b0984b3e67b4e3a1604ed8ada8^{commit} # git fetch -q -n -f git://gitlab.ozlabs.ibm.com/linuxppc/linux.git next-test warning: The last gc run reported the following. Please correct the root cause and remove .git/gc.log. Automatic cleanup will not be performed until the file is removed. warning: There are too many unreachable loose objects; run 'git prune' to remove them. # git rev-parse -q --verify 62aef98aa07ec7b0984b3e67b4e3a1604ed8ada8^{commit} 62aef98aa07ec7b0984b3e67b4e3a1604ed8ada8 # git checkout -q -f -B kisskb 62aef98aa07ec7b0984b3e67b4e3a1604ed8ada8 # git clean -qxdf # < git log -1 # commit 62aef98aa07ec7b0984b3e67b4e3a1604ed8ada8 # Author: Christophe Leroy # Date: Thu Apr 16 12:39:42 2020 +0000 # # powerpc/uaccess: Use flexible addressing with __put_user()/__get_user() # # At the time being, __put_user()/__get_user() and friends only use # D-form addressing, with 0 offset. Ex: # # lwz reg1, 0(reg2) # # Give the compiler the opportunity to use other adressing modes # whenever possible, to get more optimised code. # # Hereunder is a small exemple: # # struct test { # u32 item1; # u16 item2; # u8 item3; # u64 item4; # }; # # int set_test_user(struct test __user *from, struct test __user *to) # { # int err; # u32 item1; # u16 item2; # u8 item3; # u64 item4; # # err = __get_user(item1, &from->item1); # err |= __get_user(item2, &from->item2); # err |= __get_user(item3, &from->item3); # err |= __get_user(item4, &from->item4); # # err |= __put_user(item1, &to->item1); # err |= __put_user(item2, &to->item2); # err |= __put_user(item3, &to->item3); # err |= __put_user(item4, &to->item4); # # return err; # } # # Before the patch: # # 00000df0 : # df0: 94 21 ff f0 stwu r1,-16(r1) # df4: 39 40 00 00 li r10,0 # df8: 93 c1 00 08 stw r30,8(r1) # dfc: 93 e1 00 0c stw r31,12(r1) # e00: 7d 49 53 78 mr r9,r10 # e04: 80 a3 00 00 lwz r5,0(r3) # e08: 38 e3 00 04 addi r7,r3,4 # e0c: 7d 46 53 78 mr r6,r10 # e10: a0 e7 00 00 lhz r7,0(r7) # e14: 7d 29 33 78 or r9,r9,r6 # e18: 39 03 00 06 addi r8,r3,6 # e1c: 7d 46 53 78 mr r6,r10 # e20: 89 08 00 00 lbz r8,0(r8) # e24: 7d 29 33 78 or r9,r9,r6 # e28: 38 63 00 08 addi r3,r3,8 # e2c: 7d 46 53 78 mr r6,r10 # e30: 83 c3 00 00 lwz r30,0(r3) # e34: 83 e3 00 04 lwz r31,4(r3) # e38: 7d 29 33 78 or r9,r9,r6 # e3c: 7d 43 53 78 mr r3,r10 # e40: 90 a4 00 00 stw r5,0(r4) # e44: 7d 29 1b 78 or r9,r9,r3 # e48: 38 c4 00 04 addi r6,r4,4 # e4c: 7d 43 53 78 mr r3,r10 # e50: b0 e6 00 00 sth r7,0(r6) # e54: 7d 29 1b 78 or r9,r9,r3 # e58: 38 e4 00 06 addi r7,r4,6 # e5c: 7d 43 53 78 mr r3,r10 # e60: 99 07 00 00 stb r8,0(r7) # e64: 7d 23 1b 78 or r3,r9,r3 # e68: 38 84 00 08 addi r4,r4,8 # e6c: 93 c4 00 00 stw r30,0(r4) # e70: 93 e4 00 04 stw r31,4(r4) # e74: 7c 63 53 78 or r3,r3,r10 # e78: 83 c1 00 08 lwz r30,8(r1) # e7c: 83 e1 00 0c lwz r31,12(r1) # e80: 38 21 00 10 addi r1,r1,16 # e84: 4e 80 00 20 blr # # After the patch: # # 00000dbc : # dbc: 39 40 00 00 li r10,0 # dc0: 7d 49 53 78 mr r9,r10 # dc4: 80 03 00 00 lwz r0,0(r3) # dc8: 7d 48 53 78 mr r8,r10 # dcc: a1 63 00 04 lhz r11,4(r3) # dd0: 7d 29 43 78 or r9,r9,r8 # dd4: 7d 48 53 78 mr r8,r10 # dd8: 88 a3 00 06 lbz r5,6(r3) # ddc: 7d 29 43 78 or r9,r9,r8 # de0: 7d 48 53 78 mr r8,r10 # de4: 80 c3 00 08 lwz r6,8(r3) # de8: 80 e3 00 0c lwz r7,12(r3) # dec: 7d 29 43 78 or r9,r9,r8 # df0: 7d 43 53 78 mr r3,r10 # df4: 90 04 00 00 stw r0,0(r4) # df8: 7d 29 1b 78 or r9,r9,r3 # dfc: 7d 43 53 78 mr r3,r10 # e00: b1 64 00 04 sth r11,4(r4) # e04: 7d 29 1b 78 or r9,r9,r3 # e08: 7d 43 53 78 mr r3,r10 # e0c: 98 a4 00 06 stb r5,6(r4) # e10: 7d 23 1b 78 or r3,r9,r3 # e14: 90 c4 00 08 stw r6,8(r4) # e18: 90 e4 00 0c stw r7,12(r4) # e1c: 7c 63 53 78 or r3,r3,r10 # e20: 4e 80 00 20 blr # # Signed-off-by: Christophe Leroy # Reviewed-by: Segher Boessenkool # Signed-off-by: Michael Ellerman # Link: https://lore.kernel.org/r/c2addbd9d76212242d3d8554a2f7ff849fb08b85.1587040754.git.christophe.leroy@c-s.fr # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/m68k-linux/bin/m68k-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/m68k-linux/bin/m68k-linux-ld --version # < git log --format=%s --max-count=1 62aef98aa07ec7b0984b3e67b4e3a1604ed8ada8 # < make -s -j 48 ARCH=m68k O=/kisskb/build/powerpc-next_m68k-defconfig_m68k-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/m68k-linux/bin/m68k-linux- defconfig # < make -s -j 48 ARCH=m68k O=/kisskb/build/powerpc-next_m68k-defconfig_m68k-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/m68k-linux/bin/m68k-linux- help # make -s -j 48 ARCH=m68k O=/kisskb/build/powerpc-next_m68k-defconfig_m68k-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/m68k-linux/bin/m68k-linux- olddefconfig # make -s -j 48 ARCH=m68k O=/kisskb/build/powerpc-next_m68k-defconfig_m68k-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/m68k-linux/bin/m68k-linux- /kisskb/src/arch/m68k/mvme147/config.c: In function 'mvme147_hwclk': /kisskb/src/arch/m68k/mvme147/config.c:174:2: warning: #warning check me! [-Wcpp] #warning check me! ^~~~~~~ /kisskb/src/arch/m68k/mvme16x/config.c: In function 'mvme16x_hwclk': /kisskb/src/arch/m68k/mvme16x/config.c:439:2: warning: #warning check me! [-Wcpp] #warning check me! ^~~~~~~ In file included from /kisskb/src/arch/m68k/include/asm/atomic.h:7, from /kisskb/src/include/linux/atomic.h:7, from /kisskb/src/include/linux/spinlock.h:460, from /kisskb/src/include/linux/mmzone.h:8, from /kisskb/src/include/linux/gfp.h:6, from /kisskb/src/include/linux/mm.h:10, from /kisskb/src/kernel/acct.c:47: /kisskb/src/kernel/acct.c: In function 'acct_pin_kill': /kisskb/src/arch/m68k/include/asm/cmpxchg.h:137:3: warning: value computed is not used [-Wunused-value] ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (unsigned long)(n), sizeof(*(ptr)))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/cmpxchg.h:106:28: note: in expansion of macro 'cmpxchg_local' #define cmpxchg(ptr, o, n) cmpxchg_local((ptr), (o), (n)) ^~~~~~~~~~~~~ /kisskb/src/kernel/acct.c:177:2: note: in expansion of macro 'cmpxchg' cmpxchg(&acct->ns->bacct, pin, NULL); ^~~~~~~ In file included from /kisskb/src/drivers/net/ethernet/8390/xsurf100.c:48: /kisskb/src/drivers/net/ethernet/8390/lib8390.c:988:27: warning: '____alloc_ei_netdev' defined but not used [-Wunused-function] static struct net_device *____alloc_ei_netdev(int size) ^~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/net/ethernet/8390/lib8390.c:950:13: warning: '__ei_set_multicast_list' defined but not used [-Wunused-function] static void __ei_set_multicast_list(struct net_device *dev) ^~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/net/ethernet/8390/lib8390.c:850:33: warning: '__ei_get_stats' defined but not used [-Wunused-function] static struct net_device_stats *__ei_get_stats(struct net_device *dev) ^~~~~~~~~~~~~~ /kisskb/src/drivers/net/ethernet/8390/lib8390.c:509:13: warning: '__ei_poll' defined but not used [-Wunused-function] static void __ei_poll(struct net_device *dev) ^~~~~~~~~ /kisskb/src/drivers/net/ethernet/8390/lib8390.c:300:20: warning: '__ei_start_xmit' defined but not used [-Wunused-function] static netdev_tx_t __ei_start_xmit(struct sk_buff *skb, ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/ethernet/8390/lib8390.c:254:13: warning: '__ei_tx_timeout' defined but not used [-Wunused-function] static void __ei_tx_timeout(struct net_device *dev, unsigned int txqueue) ^~~~~~~~~~~~~~~ /kisskb/src/drivers/net/ethernet/8390/lib8390.c:230:12: warning: '__ei_close' defined but not used [-Wunused-function] static int __ei_close(struct net_device *dev) ^~~~~~~~~~ /kisskb/src/drivers/net/ethernet/8390/lib8390.c:201:12: warning: '__ei_open' defined but not used [-Wunused-function] static int __ei_open(struct net_device *dev) ^~~~~~~~~ In file included from /kisskb/src/arch/m68k/include/asm/atomic.h:7, from /kisskb/src/include/linux/atomic.h:7, from /kisskb/src/include/linux/spinlock.h:460, from /kisskb/src/include/linux/seqlock.h:36, from /kisskb/src/include/linux/time.h:6, from /kisskb/src/include/linux/stat.h:19, from /kisskb/src/include/linux/module.h:13, from /kisskb/src/net/core/filter.c:20: /kisskb/src/net/core/filter.c: In function 'bpf_clear_redirect_map': /kisskb/src/arch/m68k/include/asm/cmpxchg.h:137:3: warning: value computed is not used [-Wunused-value] ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (unsigned long)(n), sizeof(*(ptr)))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/cmpxchg.h:106:28: note: in expansion of macro 'cmpxchg_local' #define cmpxchg(ptr, o, n) cmpxchg_local((ptr), (o), (n)) ^~~~~~~~~~~~~ /kisskb/src/net/core/filter.c:3569:4: note: in expansion of macro 'cmpxchg' cmpxchg(&ri->map, map, NULL); ^~~~~~~ In file included from /kisskb/src/arch/m68k/include/asm/atomic.h:7, from /kisskb/src/include/linux/atomic.h:7, from /kisskb/src/include/linux/spinlock.h:460, from /kisskb/src/include/linux/mmzone.h:8, from /kisskb/src/include/linux/gfp.h:6, from /kisskb/src/include/linux/slab.h:15, from /kisskb/src/fs/posix_acl.c:15: /kisskb/src/fs/posix_acl.c: In function 'get_acl': /kisskb/src/arch/m68k/include/asm/cmpxchg.h:137:3: warning: value computed is not used [-Wunused-value] ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (unsigned long)(n), sizeof(*(ptr)))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/include/asm-generic/cmpxchg.h:106:28: note: in expansion of macro 'cmpxchg_local' #define cmpxchg(ptr, o, n) cmpxchg_local((ptr), (o), (n)) ^~~~~~~~~~~~~ /kisskb/src/fs/posix_acl.c:148:3: note: in expansion of macro 'cmpxchg' cmpxchg(p, sentinel, ACL_NOT_CACHED); ^~~~~~~ In file included from /kisskb/src/arch/m68k/include/asm/atomic.h:7, from /kisskb/src/include/linux/atomic.h:7, from /kisskb/src/include/linux/spinlock.h:460, from /kisskb/src/include/linux/wait.h:9, from /kisskb/src/include/linux/wait_bit.h:8, from /kisskb/src/include/linux/fs.h:6, from /kisskb/src/fs/ocfs2/file.c:13: /kisskb/src/fs/ocfs2/file.c: In function 'ocfs2_file_write_iter': /kisskb/src/arch/m68k/include/asm/cmpxchg.h:79:22: warning: value computed is not used [-Wunused-value] #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/fs/ocfs2/file.c:2419:3: note: in expansion of macro 'xchg' xchg(&iocb->ki_complete, saved_ki_complete); ^~~~ Completed OK # rm -rf /kisskb/build/powerpc-next_m68k-defconfig_m68k-gcc8 # Build took: 0:02:17.755577