On Wed, Jul 23, 2025 at 10:50:25PM -0700, Kees Cook wrote: > GCC appears to have kind of fragile inlining heuristics, in the > sense that it can change whether or not it inlines something based on > optimizations. It looks like the kcov instrumentation being added (or in > this case, removed) from a function changes the optimization results, > and some functions marked "inline" are _not_ inlined. In that case, > we end up with __init code calling a function not marked __init, and we > get the build warnings I'm trying to eliminate in the coming patch that > adds __no_sanitize_coverage to __init functions: > > WARNING: modpost: vmlinux: section mismatch in reference: acpi_get_enable_method+0x1c (section: .text.unlikely) -> acpi_psci_present (section: .init.text) > > This problem is somewhat fragile (though using either __always_inline > or __init will deterministically solve it), but we've tripped over > this before with GCC and the solution has usually been to just use > __always_inline and move on. > > For arm64 this requires forcing one ACPI function to be inlined with > __always_inline. > > Signed-off-by: Kees Cook <kees@xxxxxxxxxx> > --- > Cc: Will Deacon <will@xxxxxxxxxx> > Cc: Ard Biesheuvel <ardb@xxxxxxxxxx> > Cc: Catalin Marinas <catalin.marinas@xxxxxxx> > Cc: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > Cc: Gavin Shan <gshan@xxxxxxxxxx> > Cc: "Russell King (Oracle)" <rmk+kernel@xxxxxxxxxxxxxxx> > Cc: James Morse <james.morse@xxxxxxx> > Cc: Oza Pawandeep <quic_poza@xxxxxxxxxxx> > Cc: Anshuman Khandual <anshuman.khandual@xxxxxxx> > Cc: <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx> > --- > arch/arm64/include/asm/acpi.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h > index a407f9cd549e..c07a58b96329 100644 > --- a/arch/arm64/include/asm/acpi.h > +++ b/arch/arm64/include/asm/acpi.h > @@ -150,7 +150,7 @@ acpi_set_mailbox_entry(int cpu, struct acpi_madt_generic_interrupt *processor) > {} > #endif > > -static inline const char *acpi_get_enable_method(int cpu) > +static __always_inline const char *acpi_get_enable_method(int cpu) > { > if (acpi_psci_present()) > return "psci"; Thanks for improving the commit message: Acked-by: Will Deacon <will@xxxxxxxxxx> Will