* [PATCH] modpost: Add .irqentry.text to OTHER_SECTIONS [not found] ` <20241130114549.GI10431@google.com> @ 2024-12-01 11:17 ` Thomas Gleixner 2024-12-02 2:02 ` Masahiro Yamada 2024-12-02 4:10 ` Sergey Senozhatsky 0 siblings, 2 replies; 6+ messages in thread From: Thomas Gleixner @ 2024-12-01 11:17 UTC (permalink / raw) To: Sergey Senozhatsky Cc: 20241015061522.25288-1-rui.zhang, Zhang Rui, hpa, peterz, thorsten.blum, yuntao.wang, tony.luck, len.brown, srinivas.pandruvada, linux-kernel, stable, mingo, bp, dave.hansen, rafael.j.wysocki, x86, linux-pm, Sergey Senozhatsky, Masahiro Yamada, Nathan Chancellor, Nicolas Schier, linux-kbuild The compiler can fully inline the actual handler function of an interrupt entry into the .irqentry.text entry point. If such a function contains an access which has an exception table entry, modpost complains about a section mismatch: WARNING: vmlinux.o(__ex_table+0x447c): Section mismatch in reference ... The relocation at __ex_table+0x447c references section ".irqentry.text" which is not in the list of authorized sections. Add .irqentry.text to OTHER_SECTIONS to cure the issue. Reported-by: Sergey Senozhatsky <senozhatsky@chromium.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: stable@vger.kernel.org --- scripts/mod/modpost.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -785,7 +785,7 @@ static void check_section(const char *mo ".ltext", ".ltext.*" #define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \ ".fixup", ".entry.text", ".exception.text", \ - ".coldtext", ".softirqentry.text" + ".coldtext", ".softirqentry.text", ".irqentry.text" #define ALL_TEXT_SECTIONS ".init.text", ".exit.text", \ TEXT_SECTIONS, OTHER_TEXT_SECTIONS ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] modpost: Add .irqentry.text to OTHER_SECTIONS 2024-12-01 11:17 ` [PATCH] modpost: Add .irqentry.text to OTHER_SECTIONS Thomas Gleixner @ 2024-12-02 2:02 ` Masahiro Yamada 2024-12-02 21:03 ` Thomas Gleixner 2024-12-02 4:10 ` Sergey Senozhatsky 1 sibling, 1 reply; 6+ messages in thread From: Masahiro Yamada @ 2024-12-02 2:02 UTC (permalink / raw) To: Thomas Gleixner Cc: Sergey Senozhatsky, 20241015061522.25288-1-rui.zhang, Zhang Rui, hpa, peterz, thorsten.blum, yuntao.wang, tony.luck, len.brown, srinivas.pandruvada, linux-kernel, stable, mingo, bp, dave.hansen, rafael.j.wysocki, x86, linux-pm, Nathan Chancellor, Nicolas Schier, linux-kbuild On Sun, Dec 1, 2024 at 8:17 PM Thomas Gleixner <tglx@linutronix.de> wrote: > > The compiler can fully inline the actual handler function of an interrupt > entry into the .irqentry.text entry point. If such a function contains an > access which has an exception table entry, modpost complains about a > section mismatch: > > WARNING: vmlinux.o(__ex_table+0x447c): Section mismatch in reference ... > > The relocation at __ex_table+0x447c references section ".irqentry.text" > which is not in the list of authorized sections. > > Add .irqentry.text to OTHER_SECTIONS to cure the issue. > > Reported-by: Sergey Senozhatsky <senozhatsky@chromium.org> I found the context in LKML. Closes: https://lore.kernel.org/all/20241128111844.GE10431@google.com/ However, is this still relevant to the mainline kernel? In Linux 5.4.y, I agree this because smp_apic_timer_interrupt() is annotated as __irq_entry: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/arch/x86/kernel/apic/apic.c?id=v5.4.286#n1145 In this mainline kernel, DEFINE_IDTENTRY_SYSVEC() expands to a normal .text function which is explicitly annotated 'noinline'. > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > Cc: stable@vger.kernel.org > --- > scripts/mod/modpost.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > --- a/scripts/mod/modpost.c > +++ b/scripts/mod/modpost.c > @@ -785,7 +785,7 @@ static void check_section(const char *mo > ".ltext", ".ltext.*" > #define OTHER_TEXT_SECTIONS ".ref.text", ".head.text", ".spinlock.text", \ > ".fixup", ".entry.text", ".exception.text", \ > - ".coldtext", ".softirqentry.text" > + ".coldtext", ".softirqentry.text", ".irqentry.text" > > #define ALL_TEXT_SECTIONS ".init.text", ".exit.text", \ > TEXT_SECTIONS, OTHER_TEXT_SECTIONS -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] modpost: Add .irqentry.text to OTHER_SECTIONS 2024-12-02 2:02 ` Masahiro Yamada @ 2024-12-02 21:03 ` Thomas Gleixner 2024-12-03 15:27 ` Masahiro Yamada 0 siblings, 1 reply; 6+ messages in thread From: Thomas Gleixner @ 2024-12-02 21:03 UTC (permalink / raw) To: Masahiro Yamada Cc: Sergey Senozhatsky, 20241015061522.25288-1-rui.zhang, Zhang Rui, hpa, peterz, thorsten.blum, yuntao.wang, tony.luck, len.brown, srinivas.pandruvada, linux-kernel, stable, mingo, bp, dave.hansen, rafael.j.wysocki, x86, linux-pm, Nathan Chancellor, Nicolas Schier, linux-kbuild On Mon, Dec 02 2024 at 11:02, Masahiro Yamada wrote: > On Sun, Dec 1, 2024 at 8:17 PM Thomas Gleixner <tglx@linutronix.de> wrote: >> >> The compiler can fully inline the actual handler function of an interrupt >> entry into the .irqentry.text entry point. If such a function contains an >> access which has an exception table entry, modpost complains about a >> section mismatch: >> >> WARNING: vmlinux.o(__ex_table+0x447c): Section mismatch in reference ... >> >> The relocation at __ex_table+0x447c references section ".irqentry.text" >> which is not in the list of authorized sections. >> >> Add .irqentry.text to OTHER_SECTIONS to cure the issue. >> >> Reported-by: Sergey Senozhatsky <senozhatsky@chromium.org> > > I found the context in LKML. > Closes: https://lore.kernel.org/all/20241128111844.GE10431@google.com/ > > However, is this still relevant to the mainline kernel? > > In Linux 5.4.y, I agree this because smp_apic_timer_interrupt() > is annotated as __irq_entry: Correct. > In this mainline kernel, DEFINE_IDTENTRY_SYSVEC() > expands to a normal .text function which is explicitly > annotated 'noinline'. It's not annotated noinline, it's annotated 'noinstr', which puts the code into the .noinstr.text section. That one is indeed covered. So yes, the fix is only required for pre 5.8 kernels. Thanks, tglx ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] modpost: Add .irqentry.text to OTHER_SECTIONS 2024-12-02 21:03 ` Thomas Gleixner @ 2024-12-03 15:27 ` Masahiro Yamada 2024-12-03 16:10 ` Thomas Gleixner 0 siblings, 1 reply; 6+ messages in thread From: Masahiro Yamada @ 2024-12-03 15:27 UTC (permalink / raw) To: Thomas Gleixner Cc: Sergey Senozhatsky, 20241015061522.25288-1-rui.zhang, Zhang Rui, hpa, peterz, thorsten.blum, yuntao.wang, tony.luck, len.brown, srinivas.pandruvada, linux-kernel, stable, mingo, bp, dave.hansen, rafael.j.wysocki, x86, linux-pm, Nathan Chancellor, Nicolas Schier, linux-kbuild On Tue, Dec 3, 2024 at 6:03 AM Thomas Gleixner <tglx@linutronix.de> wrote: > > On Mon, Dec 02 2024 at 11:02, Masahiro Yamada wrote: > > On Sun, Dec 1, 2024 at 8:17 PM Thomas Gleixner <tglx@linutronix.de> wrote: > >> > >> The compiler can fully inline the actual handler function of an interrupt > >> entry into the .irqentry.text entry point. If such a function contains an > >> access which has an exception table entry, modpost complains about a > >> section mismatch: > >> > >> WARNING: vmlinux.o(__ex_table+0x447c): Section mismatch in reference ... > >> > >> The relocation at __ex_table+0x447c references section ".irqentry.text" > >> which is not in the list of authorized sections. > >> > >> Add .irqentry.text to OTHER_SECTIONS to cure the issue. > >> > >> Reported-by: Sergey Senozhatsky <senozhatsky@chromium.org> > > > > I found the context in LKML. > > Closes: https://lore.kernel.org/all/20241128111844.GE10431@google.com/ > > > > However, is this still relevant to the mainline kernel? > > > > In Linux 5.4.y, I agree this because smp_apic_timer_interrupt() > > is annotated as __irq_entry: > > Correct. > > > In this mainline kernel, DEFINE_IDTENTRY_SYSVEC() > > expands to a normal .text function which is explicitly > > annotated 'noinline'. > > It's not annotated noinline, it's annotated 'noinstr', which puts the > code into the .noinstr.text section. That one is indeed covered. The callsite of local_apic_timer_interrupt() is annotated 'noinline' if I correctly understand this line: https://github.com/torvalds/linux/blob/v6.13-rc1/arch/x86/include/asm/idtentry.h#L272 It expands to: static noinline void __sysvec_apic_timer_interrupt(struct pt_regs *regs) { [snip] local_apic_timer_interrupt(); [snip] } > So yes, the fix is only required for pre 5.8 kernels. This never occurs on x86 after commit f0178fc01fe46, but theoretically this may occur for other architectures. Now applied to linux-kbuild. Thanks. > > Thanks, > > tglx -- Best Regards Masahiro Yamada ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] modpost: Add .irqentry.text to OTHER_SECTIONS 2024-12-03 15:27 ` Masahiro Yamada @ 2024-12-03 16:10 ` Thomas Gleixner 0 siblings, 0 replies; 6+ messages in thread From: Thomas Gleixner @ 2024-12-03 16:10 UTC (permalink / raw) To: Masahiro Yamada Cc: Sergey Senozhatsky, 20241015061522.25288-1-rui.zhang, Zhang Rui, hpa, peterz, thorsten.blum, yuntao.wang, tony.luck, len.brown, srinivas.pandruvada, linux-kernel, stable, mingo, bp, dave.hansen, rafael.j.wysocki, x86, linux-pm, Nathan Chancellor, Nicolas Schier, linux-kbuild On Wed, Dec 04 2024 at 00:27, Masahiro Yamada wrote: > On Tue, Dec 3, 2024 at 6:03 AM Thomas Gleixner <tglx@linutronix.de> wrote: >> > In this mainline kernel, DEFINE_IDTENTRY_SYSVEC() >> > expands to a normal .text function which is explicitly >> > annotated 'noinline'. >> >> It's not annotated noinline, it's annotated 'noinstr', which puts the >> code into the .noinstr.text section. That one is indeed covered. > > The callsite of local_apic_timer_interrupt() is annotated 'noinline' > if I correctly understand this line: > https://github.com/torvalds/linux/blob/v6.13-rc1/arch/x86/include/asm/idtentry.h#L272 You're right. I got lost in the macro maze and looked at the actual sysvec_...() part. >> So yes, the fix is only required for pre 5.8 kernels. > > This never occurs on x86 after commit f0178fc01fe46, > but theoretically this may occur for other architectures. Correct. Thanks, tglx ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] modpost: Add .irqentry.text to OTHER_SECTIONS 2024-12-01 11:17 ` [PATCH] modpost: Add .irqentry.text to OTHER_SECTIONS Thomas Gleixner 2024-12-02 2:02 ` Masahiro Yamada @ 2024-12-02 4:10 ` Sergey Senozhatsky 1 sibling, 0 replies; 6+ messages in thread From: Sergey Senozhatsky @ 2024-12-02 4:10 UTC (permalink / raw) To: Thomas Gleixner Cc: Sergey Senozhatsky, 20241015061522.25288-1-rui.zhang, Zhang Rui, hpa, peterz, thorsten.blum, yuntao.wang, tony.luck, len.brown, srinivas.pandruvada, linux-kernel, stable, mingo, bp, dave.hansen, rafael.j.wysocki, x86, linux-pm, Masahiro Yamada, Nathan Chancellor, Nicolas Schier, linux-kbuild On (24/12/01 12:17), Thomas Gleixner wrote: > The compiler can fully inline the actual handler function of an interrupt > entry into the .irqentry.text entry point. If such a function contains an > access which has an exception table entry, modpost complains about a > section mismatch: > > WARNING: vmlinux.o(__ex_table+0x447c): Section mismatch in reference ... > > The relocation at __ex_table+0x447c references section ".irqentry.text" > which is not in the list of authorized sections. > > Add .irqentry.text to OTHER_SECTIONS to cure the issue. This works. In fact, this looks like a local fix which we applied here on our side, but we were very unsure. Thank you Thomas. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-12-03 16:10 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20241128111844.GE10431@google.com>
[not found] ` <87o71xvuf3.ffs@tglx>
[not found] ` <20241130114549.GI10431@google.com>
2024-12-01 11:17 ` [PATCH] modpost: Add .irqentry.text to OTHER_SECTIONS Thomas Gleixner
2024-12-02 2:02 ` Masahiro Yamada
2024-12-02 21:03 ` Thomas Gleixner
2024-12-03 15:27 ` Masahiro Yamada
2024-12-03 16:10 ` Thomas Gleixner
2024-12-02 4:10 ` Sergey Senozhatsky
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox