• Nathan Chancellor's avatar
    drm/amd/display: Disable CONFIG_DRM_AMD_DC_FP for RISC-V with clang · 301daa34
    Nathan Chancellor authored
    Commit 77acc6b5 ("riscv: add support for kernel-mode FPU") and
    commit a28e4b67 ("drm/amd/display: use ARCH_HAS_KERNEL_FPU_SUPPORT")
    enabled support for CONFIG_DRM_AMD_DC_FP with RISC-V. Unfortunately,
    this exposed -Wframe-larger-than warnings (which become fatal with
    CONFIG_WERROR=y) when building ARCH=riscv allmodconfig with clang:
    
      drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:58:13: error: stack frame size (2448) exceeds limit (2048) in 'DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation' [-Werror,-Wframe-larger-than]
         58 | static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCalculation(
            |             ^
      1 error generated.
    
    Many functions in this file use a large number of parameters, which must
    be passed on the stack at a certain pointer due to register exhaustion,
    which can cause high stack usage when inlining and issues with stack
    slot analysis get involved. While the compiler can and should do better
    (as GCC uses less than half the amount of stack space for the same
    function), it is not as simple as a fix as adjusting the functions not
    to take a large number of parameters.
    
    Unfortunately, modifying these files to avoid the problem is a difficult
    to justify approach because any revisions to the files in the kernel
    tree never make it back to the original source (so copies of the code
    for newer hardware revisions just reintroduce the issue) and the files
    are hard to read/modify due to being "gcc-parsable HW gospel, coming
    straight from HW engineers".
    
    Avoid building the problematic code for RISC-V by modifying the existing
    condition for arm64 that exists for the same reason. Factor out the
    logical not to make the condition a little more readable naturally.
    
    Fixes: a28e4b67 ("drm/amd/display: use ARCH_HAS_KERNEL_FPU_SUPPORT")
    Reported-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    Closes: https://lore.kernel.org/20240530145741.7506-2-palmer@rivosinc.com/Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
    Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    301daa34
Kconfig 1.83 KB