# git rev-parse -q --verify 6cc5522b62bbc176e1a5666c401466a37ffc746e^{commit} 6cc5522b62bbc176e1a5666c401466a37ffc746e already have revision, skipping fetch # git checkout -q -f -B kisskb 6cc5522b62bbc176e1a5666c401466a37ffc746e # git clean -qxdf # < git log -1 # commit 6cc5522b62bbc176e1a5666c401466a37ffc746e # Author: Christophe Leroy # Date: Sat Nov 21 17:59:19 2020 +0000 # # powerpc: inline iomap accessors # # ioreadXX()/ioreadXXbe() accessors are equivalent to ppc # in_leXX()/in_be16() accessors but they are not inlined. # # Since commit 0eb573682872 ("powerpc/kerenl: Enable EEH for IO # accessors"), the 'le' versions are equivalent to the ones # defined in asm-generic/io.h, allthough the ones there are inlined. # # Include asm-generic/io.h to get them. Keep ppc versions of the # 'be' ones as they are optimised, but make them inline in ppc io.h. # # This reduces the size of ppc64e_defconfig build by 3 kbytes: # # text data bss dec hex filename # 10160733 4343422 562972 15067127 e5e7f7 vmlinux.before # 10159239 4341590 562972 15063801 e5daf9 vmlinux.after # # A typical function using ioread and iowrite before the change: # # c00000000066a3c4 <.ata_bmdma_stop>: # c00000000066a3c4: 7c 08 02 a6 mflr r0 # c00000000066a3c8: fb c1 ff f0 std r30,-16(r1) # c00000000066a3cc: f8 01 00 10 std r0,16(r1) # c00000000066a3d0: fb e1 ff f8 std r31,-8(r1) # c00000000066a3d4: f8 21 ff 81 stdu r1,-128(r1) # c00000000066a3d8: eb e3 00 00 ld r31,0(r3) # c00000000066a3dc: eb df 00 98 ld r30,152(r31) # c00000000066a3e0: 7f c3 f3 78 mr r3,r30 # c00000000066a3e4: 4b 9b 6f 7d bl c000000000021360 <.ioread8> # c00000000066a3e8: 60 00 00 00 nop # c00000000066a3ec: 7f c4 f3 78 mr r4,r30 # c00000000066a3f0: 54 63 06 3c rlwinm r3,r3,0,24,30 # c00000000066a3f4: 4b 9b 70 4d bl c000000000021440 <.iowrite8> # c00000000066a3f8: 60 00 00 00 nop # c00000000066a3fc: 7f e3 fb 78 mr r3,r31 # c00000000066a400: 38 21 00 80 addi r1,r1,128 # c00000000066a404: e8 01 00 10 ld r0,16(r1) # c00000000066a408: eb c1 ff f0 ld r30,-16(r1) # c00000000066a40c: 7c 08 03 a6 mtlr r0 # c00000000066a410: eb e1 ff f8 ld r31,-8(r1) # c00000000066a414: 4b ff ff 8c b c00000000066a3a0 <.ata_sff_dma_pause> # # The same function with this patch: # # c000000000669cb4 <.ata_bmdma_stop>: # c000000000669cb4: e8 63 00 00 ld r3,0(r3) # c000000000669cb8: e9 43 00 98 ld r10,152(r3) # c000000000669cbc: 7c 00 04 ac hwsync # c000000000669cc0: 89 2a 00 00 lbz r9,0(r10) # c000000000669cc4: 0c 09 00 00 twi 0,r9,0 # c000000000669cc8: 4c 00 01 2c isync # c000000000669ccc: 55 29 06 3c rlwinm r9,r9,0,24,30 # c000000000669cd0: 7c 00 04 ac hwsync # c000000000669cd4: 99 2a 00 00 stb r9,0(r10) # c000000000669cd8: a1 4d 06 f0 lhz r10,1776(r13) # c000000000669cdc: 2c 2a 00 00 cmpdi r10,0 # c000000000669ce0: 41 c2 00 08 beq- c000000000669ce8 <.ata_bmdma_stop+0x34> # c000000000669ce4: b1 4d 06 f2 sth r10,1778(r13) # c000000000669ce8: 4b ff ff a8 b c000000000669c90 <.ata_sff_dma_pause> # # Signed-off-by: Christophe Leroy # Signed-off-by: Michael Ellerman # Link: https://lore.kernel.org/r/18b357d68c4cde149f75c7a1031c850925cd8128.1605981539.git.christophe.leroy@csgroup.eu # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 6cc5522b62bbc176e1a5666c401466a37ffc746e # < make -s -j 24 ARCH=powerpc O=/kisskb/build/powerpc-next_powernv_defconfig+STRICT_RWX_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- powernv_defconfig # Added to kconfig CONFIG_RELOCATABLE=n # Added to kconfig CONFIG_STRICT_KERNEL_RWX=y # < make -s -j 24 ARCH=powerpc O=/kisskb/build/powerpc-next_powernv_defconfig+STRICT_RWX_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 24 ARCH=powerpc O=/kisskb/build/powerpc-next_powernv_defconfig+STRICT_RWX_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig .config:4005:warning: override: reassigning to symbol RELOCATABLE # make -s -j 24 ARCH=powerpc O=/kisskb/build/powerpc-next_powernv_defconfig+STRICT_RWX_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- Completed OK # rm -rf /kisskb/build/powerpc-next_powernv_defconfig+STRICT_RWX_powerpc-gcc5 # Build took: 0:04:03.591432