powerpc/64: Force inlining of prevent_user_access() and set_kuap()
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Fri, 11 Feb 2022 14:16:51 +0000 (15:16 +0100)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 8 Mar 2022 11:33:07 +0000 (22:33 +1100)
commit792993919349fefba20f58ae4843c80e8b01f518
tree8b17c751bbb57d33302a09ed404b34670255d105
parent0b0057cc4193c7cd9c0829a440e4901b29ce4ff8
powerpc/64: Force inlining of prevent_user_access() and set_kuap()

A ppc64_defconfig build exhibits about 10 copied of
prevent_user_access(). It also have one copy of set_kuap().

c000000000017340 <.prevent_user_access.constprop.0>:
c00000000001a038: 4b ff d3 09  bl      c000000000017340 <.prevent_user_access.constprop.0>
c00000000001aabc: 4b ff c8 85  bl      c000000000017340 <.prevent_user_access.constprop.0>
c00000000001ab38: 4b ff c8 09  bl      c000000000017340 <.prevent_user_access.constprop.0>
c00000000001ade0: 4b ff c5 61  bl      c000000000017340 <.prevent_user_access.constprop.0>
c000000000039b90 <.prevent_user_access.constprop.0>:
c00000000003ac08: 4b ff ef 89  bl      c000000000039b90 <.prevent_user_access.constprop.0>
c00000000003b9d0: 4b ff e1 c1  bl      c000000000039b90 <.prevent_user_access.constprop.0>
c00000000003ba54: 4b ff e1 3d  bl      c000000000039b90 <.prevent_user_access.constprop.0>
c00000000003bbfc: 4b ff df 95  bl      c000000000039b90 <.prevent_user_access.constprop.0>
c00000000015dde0 <.prevent_user_access.constprop.0>:
c0000000001612c0: 4b ff cb 21  bl      c00000000015dde0 <.prevent_user_access.constprop.0>
c000000000161b54: 4b ff c2 8d  bl      c00000000015dde0 <.prevent_user_access.constprop.0>
c000000000188cf0 <.prevent_user_access.constprop.0>:
c00000000018d658: 4b ff b6 99  bl      c000000000188cf0 <.prevent_user_access.constprop.0>
c00000000030fe20 <.prevent_user_access.constprop.0>:
c0000000003123d4: 4b ff da 4d  bl      c00000000030fe20 <.prevent_user_access.constprop.0>
c000000000313970: 4b ff c4 b1  bl      c00000000030fe20 <.prevent_user_access.constprop.0>
c0000000005e6bd0 <.prevent_user_access.constprop.0>:
c0000000005e7d8c: 4b ff ee 45  bl      c0000000005e6bd0 <.prevent_user_access.constprop.0>
c0000000007bcae0 <.prevent_user_access.constprop.0>:
c0000000007bda10: 4b ff f0 d1  bl      c0000000007bcae0 <.prevent_user_access.constprop.0>
c0000000007bda54: 4b ff f0 8d  bl      c0000000007bcae0 <.prevent_user_access.constprop.0>
c0000000007bdd28: 4b ff ed b9  bl      c0000000007bcae0 <.prevent_user_access.constprop.0>
c0000000007c0390: 4b ff c7 51  bl      c0000000007bcae0 <.prevent_user_access.constprop.0>
c00000000094e4f0 <.prevent_user_access.constprop.0>:
c000000000950e40: 4b ff d6 b1  bl      c00000000094e4f0 <.prevent_user_access.constprop.0>
c00000000097d2d0 <.prevent_user_access.constprop.0>:
c0000000009813fc: 4b ff be d5  bl      c00000000097d2d0 <.prevent_user_access.constprop.0>
c000000000acd540 <.prevent_user_access.constprop.0>:
c000000000ad1d60: 4b ff b7 e1  bl      c000000000acd540 <.prevent_user_access.constprop.0>
c000000000e5d680 <.prevent_user_access.constprop.0>:
c000000000e64b60: 4b ff 8b 21  bl      c000000000e5d680 <.prevent_user_access.constprop.0>
c000000000e64b6c: 4b ff 8b 15  bl      c000000000e5d680 <.prevent_user_access.constprop.0>
c000000000e64c38: 4b ff 8a 49  bl      c000000000e5d680 <.prevent_user_access.constprop.0>

When building signal_64.c with -Winline the following messages appear:

./arch/powerpc/include/asm/book3s/64/kup.h:331:20: error: inlining failed in call to 'set_kuap': call is unlikely and code size would grow [-Werror=inline]
./arch/powerpc/include/asm/book3s/64/kup.h:401:20: error: inlining failed in call to 'prevent_user_access.constprop': call is unlikely and code size would grow [-Werror=inline]

Those functions are used on hot pathes and have been
expected to be inlined at all time.

Force them inline.

This patch reduces the kernel text size by 700 bytes, confirming
that not inlining those functions is not worth it.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/eff9b2b211957fa2e8707e46f31674097fd563a3.1644588972.git.christophe.leroy@csgroup.eu
arch/powerpc/include/asm/book3s/64/kup.h