Le 04/03/2025 à 13:38, Madhavan Srinivasan a écrit :
On 3/4/25 4:58 PM, Madhavan Srinivasan wrote:
On 3/4/25 2:26 PM, Christophe Leroy wrote:
Le 04/03/2025 à 07:13, Madhavan Srinivasan a écrit :
On 3/4/25 10:42 AM, Venkat Rao Bagalkote wrote:
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%7C48de41657f8341b927e708dd5b198b84%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C638766887458137690%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=P9JQJ7joMFHGDws1H0iaxpj6blYAqsh4ATzrmB1A8Yc%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%7C48de41657f8341b927e708dd5b198b84%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C638766887458152652%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=ZVQdCx62Z3ekoXOrWoE6SdHv4RvgjDFSE9CHPPJ%2FiyI%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
Yes indeed I ended up with the same conclusion. However if you change it
back to INSN_CALL you just bring back the issue with clang using bl .+4
for relocatable code.
The warning is from here:
static int __annotate_ifc(struct objtool_file *file, int type, struct
instruction *insn)
{
unsigned long dest_off;
if (type != ANNOTYPE_INTRA_FUNCTION_CALL)
return 0;
if (insn->type != INSN_CALL) {
WARN_INSN(insn, "intra_function_call not a direct call");
return -1;
}
Now that arch_decode_instruction() does not consider bl .+4 an INSN_CALL
anymore, we have to remove the ANNOTATE_INTRA_FUNCTION_CALL annotations
here:
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
The one in arch/powerpc/kexec/relocate_32.S is not a problem at the
moment but it looks buggy and that "bl 1f" should be replaced by a
branch to the "bcl 20,31,$+4"
I will try to cook a couple patches for all that.
The last one from the report is:
arch/powerpc/crypto/ghashp8-ppc.o: warning: objtool: .text+0x22c:
unannotated intra-function call
That one is different, we need to reproduce it to understand what it is.
Christophe
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
CC arch/powerpc/kernel/irq.o
CC arch/powerpc/kernel/align.o
CC arch/powerpc/kernel/signal_64.o
Objdump of switch.o:
arch/powerpc/kernel/switch.o: file format elf64-powerpcle
Disassembly of section .text:
0000000000000000 <flush_branch_caches>:
0: a6 02 28 7d mflr r9
4: 05 00 00 48 bl 8 <flush_branch_caches+0x8>
8: 05 00 00 48 bl c <flush_branch_caches+0xc>
c: 05 00 00 48 bl 10 <flush_branch_caches+0x10>
10: 05 00 00 48 bl 14 <flush_branch_caches+0x14>
14: 05 00 00 48 bl 18 <flush_branch_caches+0x18>
18: 05 00 00 48 bl 1c <flush_branch_caches+0x1c>
1c: 05 00 00 48 bl 20 <flush_branch_caches+0x20>
20: 05 00 00 48 bl 24 <flush_branch_caches+0x24>
24: 05 00 00 48 bl 28 <flush_branch_caches+0x28>
28: 05 00 00 48 bl 2c <flush_branch_caches+0x2c>
arch/powerpc/kernel/switch.S failing src section:
.balign 32
.global flush_branch_caches
flush_branch_caches:
/* Save LR into r9 */
mflr r9
// Flush the link stack
.rept 64
ANNOTATE_INTRA_FUNCTION_CALL
bl .+4
.endr
b 1f
nops 6
Maddy
Christophe