• Mark Rutland's avatar
    ACPI: Don't build ACPICA with '-Os' · 8f9e0a52
    Mark Rutland authored
    The ACPICA code has been built with '-Os' since the beginning of git
    history, though there's no explanatory comment as to why.
    
    This is unfortunate as GCC drops the alignment specificed by
    '-falign-functions=N' when '-Os' is used, as reported in GCC bug 88345:
    
      https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88345
    
    This prevents CONFIG_FUNCTION_ALIGNMENT and
    CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B from having their expected effect
    on the ACPICA code. This is doubly unfortunate as in subsequent patches
    arm64 will depend upon CONFIG_FUNCTION_ALIGNMENT for its ftrace
    implementation.
    
    Drop the '-Os' flag when building the ACPICA code. With this removed,
    the code builds cleanly and works correctly in testing so far.
    
    I've tested this by selecting CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_64B=y,
    building and booting a kernel using ACPI, and looking for misaligned
    text symbols:
    
    * arm64:
    
      Before, v6.2-rc3:
        # uname -rm
        6.2.0-rc3 aarch64
        # grep ' [Tt] ' /proc/kallsyms | grep -iv '[048c]0 [Tt] ' | wc -l
        5009
    
      Before, v6.2-rc3 + fixed __cold:
        # uname -rm
        6.2.0-rc3-00001-g2a2bedf8bfa9 aarch64
        # grep ' [Tt] ' /proc/kallsyms | grep -iv '[048c]0 [Tt] ' | wc -l
        919
    
      After:
        # uname -rm
        6.2.0-rc3-00002-g267bddc38572 aarch64
        # grep ' [Tt] ' /proc/kallsyms | grep -iv '[048c]0 [Tt] ' | wc -l
        323
        # grep ' [Tt] ' /proc/kallsyms | grep -iv '[048c]0 [Tt] ' | grep acpi | wc -l
        0
    
    * x86_64:
    
      Before, v6.2-rc3:
        # uname -rm
        6.2.0-rc3 x86_64
        # grep ' [Tt] ' /proc/kallsyms | grep -iv '[048c]0 [Tt] ' | wc -l
        11537
    
      Before, v6.2-rc3 + fixed __cold:
        # uname -rm
        6.2.0-rc3-00001-g2a2bedf8bfa9 x86_64
        # grep ' [Tt] ' /proc/kallsyms | grep -iv '[048c]0 [Tt] ' | wc -l
        2805
    
      After:
        # uname -rm
        6.2.0-rc3-00002-g267bddc38572 x86_64
        # grep ' [Tt] ' /proc/kallsyms | grep -iv '[048c]0 [Tt] ' | wc -l
        1357
        # grep ' [Tt] ' /proc/kallsyms | grep -iv '[048c]0 [Tt] ' | grep acpi | wc -l
        0
    
    With the patch applied, the remaining unaligned text labels are a
    combination of static call trampolines and labels in assembly, which can
    be dealt with in subsequent patches.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Acked-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Florent Revest <revest@chromium.org>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Robert Moore <robert.moore@intel.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Will Deacon <will@kernel.org>
    Cc: linux-acpi@vger.kernel.org
    Link: https://lore.kernel.org/r/20230123134603.1064407-4-mark.rutland@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    8f9e0a52
Makefile 2.81 KB