lkml.org 
[lkml]   [2022]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 197/475] powerpc/Makefile: Dont pass -mcpu=powerpc64 when building 32-bit
    Date
    From: Michael Ellerman <mpe@ellerman.id.au>

    [ Upstream commit 2863dd2db23e0407f6c50b8ba5c0e55abef894f1 ]

    When CONFIG_GENERIC_CPU=y (true for all our defconfigs) we pass
    -mcpu=powerpc64 to the compiler, even when we're building a 32-bit
    kernel.

    This happens because we have an ifdef CONFIG_PPC_BOOK3S_64/else block in
    the Makefile that was written before 32-bit supported GENERIC_CPU. Prior
    to that the else block only applied to 64-bit Book3E.

    The GCC man page says -mcpu=powerpc64 "[specifies] a pure ... 64-bit big
    endian PowerPC ... architecture machine [type], with an appropriate,
    generic processor model assumed for scheduling purposes."

    It's unclear how that interacts with -m32, which we are also passing,
    although obviously -m32 is taking precedence in some sense, as the
    32-bit kernel only contains 32-bit instructions.

    This was noticed by inspection, not via any bug reports, but it does
    affect code generation. Comparing before/after code generation, there
    are some changes to instruction scheduling, and the after case (with
    -mcpu=powerpc64 removed) the compiler seems more keen to use r8.

    Fix it by making the else case only apply to Book3E 64, which excludes
    32-bit.

    Fixes: 0e00a8c9fd92 ("powerpc: Allow CPU selection also on PPC32")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220215112858.304779-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/Makefile | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
    index 9f73fb6b1cc9..b9d2fcf030d0 100644
    --- a/arch/powerpc/Makefile
    +++ b/arch/powerpc/Makefile
    @@ -174,7 +174,7 @@ else
    CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,$(call cc-option,-mtune=power5))
    CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mcpu=power5,-mcpu=power4)
    endif
    -else
    +else ifdef CONFIG_PPC_BOOK3E_64
    CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
    endif

    --
    2.34.1


    \
     
     \ /
      Last update: 2022-04-14 16:35    [W:4.040 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site