Thread (11 messages) 11 messages, 3 authors, 2025-03-04

Re: Build Warnings at arch/powerpc/

From: Christophe Leroy <hidden>
Date: 2025-03-04 17:50:03
Also in: lkml
Subsystem: ibm power vmx cryptographic instructions, linux for powerpc (32-bit and 64-bit), the rest · Maintainers: Breno Leitão, Nayna Jain, Paulo Flabiano Smorigo, Madhavan Srinivasan, Michael Ellerman, Linus Torvalds


Le 04/03/2025 à 16:44, Venkat Rao Bagalkote a écrit :
Hello Christophe,


On 04/03/25 6:43 pm, Christophe Leroy wrote:
quoted

Le 04/03/2025 à 14:03, Venkat Rao Bagalkote a écrit :
quoted
[Vous ne recevez pas souvent de courriers de venkat88@linux.ibm.com. 
Découvrez pourquoi ceci est important à https:// 
eur01.safelinks.protection.outlook.com/? 
url=https%3A%2F%2Faka.ms%2F&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C3657f07f71b149ba489e08dd5b336e9a%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C638766998669498918%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=ZM65b%2F3BuUDy5Iet3kE1%2B%2BXKdjmM86UFsJwBmSHeiv4%3D&reserved=0 LearnAboutSenderIdentification ]

On 04/03/25 6:08 pm, Madhavan Srinivasan wrote:
quoted
On 3/4/25 4:58 PM, Madhavan Srinivasan wrote:
quoted
On 3/4/25 2:26 PM, Christophe Leroy wrote:
quoted
Le 04/03/2025 à 07:13, Madhavan Srinivasan a écrit :
quoted
On 3/4/25 10:42 AM, Venkat Rao Bagalkote wrote:
quoted
Greetings!!


Observing build warnings with linux-next and powerpc repo's. 
Issue is currently not seen on mainline yet.

PPC Repo: https://eur01.safelinks.protection.outlook.com/? 
url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fpowerpc%2Flinux.git&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C6e17cc771a204b2998b508dd5b1cf2cf%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C638766902127463526%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=f0ubC0BiY%2Fw2XLfXcX955JKhJ%2BRkUmTUVO4fV%2F%2F4v2Y%3D&reserved=0 merge branch

PPC Kernel Version: 6.14.0-rc4-g1304f486dbf1
next Repo: https://eur01.safelinks.protection.outlook.com/? 
url=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fnext%2Flinux-next.git&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C6e17cc771a204b2998b508dd5b1cf2cf%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C638766902127477000%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=GSDtRBQ35owCeEpjMMCNiJw3iizdrUPQcHznop2BLeQ%3D&reserved=0 master branch

next Kernel Version: 6.14.0-rc5-next-20250303


On linux-next kernel issue got introduced b/w next-20250227 and 
next-20250303


Build Warnings:

arch/powerpc/kvm/book3s_hv_rmhandlers.o: warning: 
objtool: .text+0xe84: intra_function_call not a direct call
arch/powerpc/crypto/ghashp8-ppc.o: warning: 
objtool: .text+0x22c: unannotated intra-function call
arch/powerpc/kernel/switch.o: warning: objtool: .text+0x4: 
intra_function_call not a direct call
Can you please specific the compiler and compiler version you 
found this issue with
Can you also tell which defconfig you are using or provide 
your .config

It might also be helpfull if you can provide a disassembly of the 
three file.o around the warned address.
I could recreate the issue with gcc 11.4.1 20231218 with today's 
linux-next (but could not recreate with gcc 14 or gcc 11.3.0)

(20d5c66e1810 (HEAD -> master, tag: next-20250304, origin/master, 
origin/HEAD) Add linux-next specific files for 20250304)

warning for one of the switch.S file :

   CC      arch/powerpc/kernel/syscalls.o
   AS      arch/powerpc/kernel/switch.o
arch/powerpc/kernel/switch.o: warning: objtool: .text+0x4: 
intra_function_call not a direct call
I guess this is becos, for bl .+4, we recently added in the 
arch_decode_instruction (decode.c) to set the type as INSN_OTHER

         case 18: /* b[l][a] */
                 if (ins == 0x48000005)  /* bl .+4 */
                         typ = INSN_OTHER;

Which I think is the issue here, changing it to INSN_CALL from 
INSN_OTHER fixes the warning
diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/ 
arch/ powerpc/decode.c
index 26d5050424a9..ffd63a61a585 100644
--- a/tools/objtool/arch/powerpc/decode.c
+++ b/tools/objtool/arch/powerpc/decode.c
@@ -56,7 +56,7 @@ int arch_decode_instruction(struct objtool_file 
*file, const struct section *sec
         switch (opcode) {
         case 18: /* b[l][a] */
                 if (ins == 0x48000005)  /* bl .+4 */
-                       typ = INSN_OTHER;
+                       typ = INSN_CALL;
                 else if (ins & 1)       /* bl[a] */
                         typ = INSN_CALL;
                 else            /* b[a] */


Maddy
Maddy,

I changed the code manually and gave it a try. The Proposed fix,
partially fixes the issue. It gets rid of two of the warnings, but below
warning still persists.
It fixes the issue for you but will reintroduce the issue with clang.

The real fix is to remove the ANNOTATE_INTRA_FUNCTION_CALL in:

arch/powerpc/kernel/switch.S:42: ANNOTATE_INTRA_FUNCTION_CALL
arch/powerpc/kvm/book3s_hv_rmhandlers.S:1527: 
ANNOTATE_INTRA_FUNCTION_CALL
arch/powerpc/kvm/book3s_hv_rmhandlers.S:1534: 
ANNOTATE_INTRA_FUNCTION_CALL

Removed ANNOTATE_INTRA_FUNCTION_CALL in above mentioned line, and it 
fixes couple of warnings. But below warning still persists.

arch/powerpc/crypto/ghashp8-ppc.o: warning: objtool: .text+0x22c: 
unannotated intra-function call.
quoted
Can you give it a try ?

For the last one, can you provide an assembly dump ? You get it with 
"objtool -dr arch/powerpc/crypto/ghashp8-ppc.o"

Assembly dump:

objdump -dr arch/powerpc/crypto/ghashp8-ppc.o

arch/powerpc/crypto/ghashp8-ppc.o:     file format elf64-powerpcle


Disassembly of section .text:

0000000000000140 <gcm_ghash_p8>:
  140:    f8 ff 00 3c     lis     r0,-8
...
  20c:    20 00 80 4e     blr
  210:    00 00 00 00     .long 0x0
  214:    00 0c 14 00     .long 0x140c00
  218:    00 00 04 00     .long 0x40000
  21c:    00 00 00 00     .long 0x0
  220:    47 48 41 53     rlwimi. r1,r26,9,1,3
  224:    48 20 66 6f     xoris   r6,r27,8264
  228:    72 20 50 6f     xoris   r16,r26,8306
  22c:    77 65 72 49     bla     1726574 <gcm_ghash_p8+0x1726434>      <==
...

It corresponds to:

_GLOBAL(gcm_ghash_p8)
	lis	0,0xfff8
...
	blr	
.long	0
.byte	0,12,0x14,0,0,0,4,0
.long	0
.size	gcm_ghash_p8,.-gcm_ghash_p8

.byte 
71,72,65,83,72,32,102,111,114,32,80,111,119,101,114,73,83,65,32,50,46,48,55,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
.align	2
.align	2


This is raw data that is after the function end and that shouldn't be 
taken into account as text by objtool. But ghashp8-ppc.S is generated by 
a perl script and should have been marked as OBJECT_FILES_NON_STANDARD.

For some reason, commit 109303336a0c ("crypto: vmx - Move to 
arch/powerpc/crypto") missed it. So now that 'bla' is understood as a 
call instruction, we hit the problem.

Can you try with following fix:
diff --git a/arch/powerpc/crypto/Makefile b/arch/powerpc/crypto/Makefile
index 9b38f4a7bc15..2f00b22b0823 100644
--- a/arch/powerpc/crypto/Makefile
+++ b/arch/powerpc/crypto/Makefile
@@ -51,3 +51,4 @@ $(obj)/aesp8-ppc.S $(obj)/ghashp8-ppc.S: $(obj)/%.S: 
$(src)/%.pl FORCE
  OBJECT_FILES_NON_STANDARD_aesp10-ppc.o := y
  OBJECT_FILES_NON_STANDARD_ghashp10-ppc.o := y
  OBJECT_FILES_NON_STANDARD_aesp8-ppc.o := y
+OBJECT_FILES_NON_STANDARD_ghashp8-ppc.o := y

Christophe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help