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 <[email protected]> > --- > Cc: Will Deacon <[email protected]> > Cc: Ard Biesheuvel <[email protected]> > Cc: Catalin Marinas <[email protected]> > Cc: Jonathan Cameron <[email protected]> > Cc: Gavin Shan <[email protected]> > Cc: "Russell King (Oracle)" <[email protected]> > Cc: James Morse <[email protected]> > Cc: Oza Pawandeep <[email protected]> > Cc: Anshuman Khandual <[email protected]> > Cc: <[email protected]> > --- > 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 <[email protected]> Will
