From: Sathvika Vasireddy <sv@linux.ibm.com> To: Christophe Leroy <christophe.leroy@csgroup.eu>, Stephen Rothwell <sfr@canb.auug.org.au>, Michael Ellerman <mpe@ellerman.id.au>, PowerPC <linuxppc-dev@lists.ozlabs.org>, "peterz@infradead.org" <peterz@infradead.org> Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Linux Next Mailing List <linux-next@vger.kernel.org>, "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com> Subject: Re: linux-next: build warnings after merge of the powerpc-objtool tree Date: Wed, 30 Nov 2022 17:21:06 +0530 [thread overview] Message-ID: <74552090-c654-5356-773d-47ead2d63ab2@linux.ibm.com> (raw) In-Reply-To: <c0ed0d60-6014-4c5f-e610-b4d3bd9e9e33@csgroup.eu> On 29/11/22 20:58, Christophe Leroy wrote: > > Le 29/11/2022 à 16:13, Sathvika Vasireddy a écrit : >> Hi all, >> >> On 25/11/22 09:00, Stephen Rothwell wrote: >>> Hi all, >>> >>> After merging the powerpc-objtool tree, today's linux-next build (powerpc >>> pseries_le_defconfig) produced these warnings: >>> >>> arch/powerpc/kernel/head_64.o: warning: objtool: end_first_256B(): >>> can't find starting instruction >>> arch/powerpc/kernel/optprobes_head.o: warning: objtool: >>> optprobe_template_end(): can't find starting instruction >>> >>> I have no idea what started this (they may have been there yesterday). >> I was able to recreate the above mentioned warnings with >> pseries_le_defconfig and powernv_defconfig. The regression report also >> mentions a warning >> (https://lore.kernel.org/oe-kbuild-all/202211282102.QUr7HHrW-lkp@intel.com/) seen with arch/powerpc/kernel/kvm_emul.S assembly file. >> >> [1] arch/powerpc/kernel/optprobes_head.o: warning: objtool: >> optprobe_template_end(): can't find starting instruction >> [2] arch/powerpc/kernel/kvm_emul.o: warning: objtool: >> kvm_template_end(): can't find starting instruction >> [3] arch/powerpc/kernel/head_64.o: warning: objtool: end_first_256B(): >> can't find starting instruction >> >> The warnings [1] and [2] go away after adding 'nop' instruction. Below >> diff fixes it for me: > You have to add NOPs just because those labels are at the end of the > files. That's a bit odd. > I think either we are missing some kind of flagging for the symbols, or > objtool has a bug. In both cases, I'm not sure adding an artificial > 'nop' is the solution. At least there should be a big hammer warning > explaining why. I don't see these warnings with powerpc/topic/objtool branch. However, they are seen with linux-next master branch. Commit dbcdbdfdf137b49144204571f1a5e5dc01b8aaad objtool: Rework instruction -> symbol mapping in linux-next is resulting in objtool can't find starting instruction warnings on powerpc. Reverting this particular hunk (pasted below), resolves it and we don't see the problem anymore. @@ -427,7 +427,10 @@ static int decode_instructions(struct objtool_file *file) } list_for_each_entry(func, &sec->symbol_list, list) { - if (func->type != STT_FUNC || func->alias != func) + if (func->type != STT_NOTYPE && func->type != STT_FUNC) + continue; + + if (func->return_thunk || func->alias != func) continue; if (!find_insn(file, sec, func->offset)) { Peterz, can we ignore STT_NOTYPE symbols? >> diff --git a/arch/powerpc/kernel/optprobes_head.S >> b/arch/powerpc/kernel/optprobes_head.S >> index cd4e7bc32609..ea4e3bd82f4f 100644 >> --- a/arch/powerpc/kernel/optprobes_head.S >> +++ b/arch/powerpc/kernel/optprobes_head.S >> @@ -134,3 +134,4 @@ optprobe_template_ret: >> >> .global optprobe_template_end >> optprobe_template_end: >> + nop >> >> diff --git a/arch/powerpc/kernel/kvm_emul.S >> b/arch/powerpc/kernel/kvm_emul.S >> index 7af6f8b50c5d..41fd664e3ba0 100644 >> --- a/arch/powerpc/kernel/kvm_emul.S >> +++ b/arch/powerpc/kernel/kvm_emul.S >> @@ -352,3 +352,4 @@ kvm_tmp_end: >> >> .global kvm_template_end >> kvm_template_end: >> + nop >> >> For warning [3], objtool is throwing can't find starting instruction >> warning because it finds that the symbol (end_first_256B) is zero sized, >> and such symbols are not added to the rbtree. I tried to fix it by >> adding a 'nop' instruction (pasted diff below), but that resulted in a >> kernel build failure. > What's the failure ? > > >> diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S >> index 874efd25cc45..d48850fe159f 100644 >> --- a/arch/powerpc/kernel/head_64.S >> +++ b/arch/powerpc/kernel/head_64.S >> @@ -192,6 +192,7 @@ __secondary_hold: >> EMIT_BUG_ENTRY 0b, __FILE__, __LINE__, 0 >> #endif >> CLOSE_FIXED_SECTION(first_256B) >> +nop >> >> /* >> * On server, we include the exception vectors code here as it >> >> diff --git a/arch/powerpc/kernel/exceptions-64s.S >> b/arch/powerpc/kernel/exceptions-64s.S >> index 26f8fef53c72..f7517d443e9b 100644 >> --- a/arch/powerpc/kernel/exceptions-64s.S >> +++ b/arch/powerpc/kernel/exceptions-64s.S >> @@ -3104,9 +3104,13 @@ __end_interrupts: >> DEFINE_FIXED_SYMBOL(__end_interrupts, virt_trampolines) >> >> CLOSE_FIXED_SECTION(real_vectors); >> +nop >> CLOSE_FIXED_SECTION(real_trampolines); >> +nop >> CLOSE_FIXED_SECTION(virt_vectors); >> +nop >> CLOSE_FIXED_SECTION(virt_trampolines); >> +nop > What are the NOPs after the CLOSE_FIXED_SECTION() ? You don't explain > them, and I can't see any related warning in the warnings you show. > > After fixing arch/powerpc/kernel/head_64.o: warning: objtool: end_first_256B(): can't find starting instruction warning, objtool started showing more warnings in the same file. Below is the list of warnings: arch/powerpc/kernel/head_64.o: warning: objtool: end_real_vectors(): can't find starting instruction arch/powerpc/kernel/head_64.o: warning: objtool: end_real_trampolines(): can't find starting instruction arch/powerpc/kernel/head_64.o: warning: objtool: end_virt_vectors(): can't find starting instruction arch/powerpc/kernel/head_64.o: warning: objtool: end_virt_trampolines(): can't find starting instruction Thanks, Sathvika
WARNING: multiple messages have this Message-ID (diff)
From: Sathvika Vasireddy <sv@linux.ibm.com> To: Christophe Leroy <christophe.leroy@csgroup.eu>, Stephen Rothwell <sfr@canb.auug.org.au>, Michael Ellerman <mpe@ellerman.id.au>, PowerPC <linuxppc-dev@lists.ozlabs.org>, "peterz@infradead.org" <peterz@infradead.org> Cc: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>, Linux Next Mailing List <linux-next@vger.kernel.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org> Subject: Re: linux-next: build warnings after merge of the powerpc-objtool tree Date: Wed, 30 Nov 2022 17:21:06 +0530 [thread overview] Message-ID: <74552090-c654-5356-773d-47ead2d63ab2@linux.ibm.com> (raw) In-Reply-To: <c0ed0d60-6014-4c5f-e610-b4d3bd9e9e33@csgroup.eu> On 29/11/22 20:58, Christophe Leroy wrote: > > Le 29/11/2022 à 16:13, Sathvika Vasireddy a écrit : >> Hi all, >> >> On 25/11/22 09:00, Stephen Rothwell wrote: >>> Hi all, >>> >>> After merging the powerpc-objtool tree, today's linux-next build (powerpc >>> pseries_le_defconfig) produced these warnings: >>> >>> arch/powerpc/kernel/head_64.o: warning: objtool: end_first_256B(): >>> can't find starting instruction >>> arch/powerpc/kernel/optprobes_head.o: warning: objtool: >>> optprobe_template_end(): can't find starting instruction >>> >>> I have no idea what started this (they may have been there yesterday). >> I was able to recreate the above mentioned warnings with >> pseries_le_defconfig and powernv_defconfig. The regression report also >> mentions a warning >> (https://lore.kernel.org/oe-kbuild-all/202211282102.QUr7HHrW-lkp@intel.com/) seen with arch/powerpc/kernel/kvm_emul.S assembly file. >> >> [1] arch/powerpc/kernel/optprobes_head.o: warning: objtool: >> optprobe_template_end(): can't find starting instruction >> [2] arch/powerpc/kernel/kvm_emul.o: warning: objtool: >> kvm_template_end(): can't find starting instruction >> [3] arch/powerpc/kernel/head_64.o: warning: objtool: end_first_256B(): >> can't find starting instruction >> >> The warnings [1] and [2] go away after adding 'nop' instruction. Below >> diff fixes it for me: > You have to add NOPs just because those labels are at the end of the > files. That's a bit odd. > I think either we are missing some kind of flagging for the symbols, or > objtool has a bug. In both cases, I'm not sure adding an artificial > 'nop' is the solution. At least there should be a big hammer warning > explaining why. I don't see these warnings with powerpc/topic/objtool branch. However, they are seen with linux-next master branch. Commit dbcdbdfdf137b49144204571f1a5e5dc01b8aaad objtool: Rework instruction -> symbol mapping in linux-next is resulting in objtool can't find starting instruction warnings on powerpc. Reverting this particular hunk (pasted below), resolves it and we don't see the problem anymore. @@ -427,7 +427,10 @@ static int decode_instructions(struct objtool_file *file) } list_for_each_entry(func, &sec->symbol_list, list) { - if (func->type != STT_FUNC || func->alias != func) + if (func->type != STT_NOTYPE && func->type != STT_FUNC) + continue; + + if (func->return_thunk || func->alias != func) continue; if (!find_insn(file, sec, func->offset)) { Peterz, can we ignore STT_NOTYPE symbols? >> diff --git a/arch/powerpc/kernel/optprobes_head.S >> b/arch/powerpc/kernel/optprobes_head.S >> index cd4e7bc32609..ea4e3bd82f4f 100644 >> --- a/arch/powerpc/kernel/optprobes_head.S >> +++ b/arch/powerpc/kernel/optprobes_head.S >> @@ -134,3 +134,4 @@ optprobe_template_ret: >> >> .global optprobe_template_end >> optprobe_template_end: >> + nop >> >> diff --git a/arch/powerpc/kernel/kvm_emul.S >> b/arch/powerpc/kernel/kvm_emul.S >> index 7af6f8b50c5d..41fd664e3ba0 100644 >> --- a/arch/powerpc/kernel/kvm_emul.S >> +++ b/arch/powerpc/kernel/kvm_emul.S >> @@ -352,3 +352,4 @@ kvm_tmp_end: >> >> .global kvm_template_end >> kvm_template_end: >> + nop >> >> For warning [3], objtool is throwing can't find starting instruction >> warning because it finds that the symbol (end_first_256B) is zero sized, >> and such symbols are not added to the rbtree. I tried to fix it by >> adding a 'nop' instruction (pasted diff below), but that resulted in a >> kernel build failure. > What's the failure ? > > >> diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S >> index 874efd25cc45..d48850fe159f 100644 >> --- a/arch/powerpc/kernel/head_64.S >> +++ b/arch/powerpc/kernel/head_64.S >> @@ -192,6 +192,7 @@ __secondary_hold: >> EMIT_BUG_ENTRY 0b, __FILE__, __LINE__, 0 >> #endif >> CLOSE_FIXED_SECTION(first_256B) >> +nop >> >> /* >> * On server, we include the exception vectors code here as it >> >> diff --git a/arch/powerpc/kernel/exceptions-64s.S >> b/arch/powerpc/kernel/exceptions-64s.S >> index 26f8fef53c72..f7517d443e9b 100644 >> --- a/arch/powerpc/kernel/exceptions-64s.S >> +++ b/arch/powerpc/kernel/exceptions-64s.S >> @@ -3104,9 +3104,13 @@ __end_interrupts: >> DEFINE_FIXED_SYMBOL(__end_interrupts, virt_trampolines) >> >> CLOSE_FIXED_SECTION(real_vectors); >> +nop >> CLOSE_FIXED_SECTION(real_trampolines); >> +nop >> CLOSE_FIXED_SECTION(virt_vectors); >> +nop >> CLOSE_FIXED_SECTION(virt_trampolines); >> +nop > What are the NOPs after the CLOSE_FIXED_SECTION() ? You don't explain > them, and I can't see any related warning in the warnings you show. > > After fixing arch/powerpc/kernel/head_64.o: warning: objtool: end_first_256B(): can't find starting instruction warning, objtool started showing more warnings in the same file. Below is the list of warnings: arch/powerpc/kernel/head_64.o: warning: objtool: end_real_vectors(): can't find starting instruction arch/powerpc/kernel/head_64.o: warning: objtool: end_real_trampolines(): can't find starting instruction arch/powerpc/kernel/head_64.o: warning: objtool: end_virt_vectors(): can't find starting instruction arch/powerpc/kernel/head_64.o: warning: objtool: end_virt_trampolines(): can't find starting instruction Thanks, Sathvika
next prev parent reply other threads:[~2022-11-30 11:52 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-11-25 3:30 linux-next: build warnings after merge of the powerpc-objtool tree Stephen Rothwell 2022-11-25 3:30 ` Stephen Rothwell 2022-11-29 15:13 ` Sathvika Vasireddy 2022-11-29 15:13 ` Sathvika Vasireddy 2022-11-29 15:28 ` Christophe Leroy 2022-11-29 15:28 ` Christophe Leroy 2022-11-30 11:51 ` Sathvika Vasireddy [this message] 2022-11-30 11:51 ` Sathvika Vasireddy 2022-12-06 10:14 ` Naveen N. Rao 2022-12-06 10:14 ` Naveen N. Rao
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=74552090-c654-5356-773d-47ead2d63ab2@linux.ibm.com \ --to=sv@linux.ibm.com \ --cc=christophe.leroy@csgroup.eu \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-next@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=mpe@ellerman.id.au \ --cc=naveen.n.rao@linux.vnet.ibm.com \ --cc=peterz@infradead.org \ --cc=sfr@canb.auug.org.au \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.