On 2024-06-14 15:54, Nathan Chancellor wrote: > Commit 77acc6b55ae4 ("riscv: add support for kernel-mode FPU") and > commit a28e4b672f04 ("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: a28e4b672f04 ("drm/amd/display: use ARCH_HAS_KERNEL_FPU_SUPPORT") > Reported-by: Palmer Dabbelt <palmer@xxxxxxxxxxxx> > Closes: https://lore.kernel.org/20240530145741.7506-2-palmer@xxxxxxxxxxxx/ > Signed-off-by: Nathan Chancellor <nathan@xxxxxxxxxx> > --- > drivers/gpu/drm/amd/display/Kconfig | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig > index 5fcd4f778dc3..47b8b49da8a7 100644 > --- a/drivers/gpu/drm/amd/display/Kconfig > +++ b/drivers/gpu/drm/amd/display/Kconfig > @@ -8,7 +8,7 @@ config DRM_AMD_DC > depends on BROKEN || !CC_IS_CLANG || ARM64 || RISCV || SPARC64 || X86_64 > select SND_HDA_COMPONENT if SND_HDA_CORE > # !CC_IS_CLANG: https://github.com/ClangBuiltLinux/linux/issues/1752 > - select DRM_AMD_DC_FP if ARCH_HAS_KERNEL_FPU_SUPPORT && (!ARM64 || !CC_IS_CLANG) > + select DRM_AMD_DC_FP if ARCH_HAS_KERNEL_FPU_SUPPORT && !(CC_IS_CLANG && (ARM64 || RISCV)) Thanks for also making the logic easier to parse. Reviewed-by: Harry Wentland <harry.wentland@xxxxxxx> Harry > help > Choose this option if you want to use the new display engine > support for AMDGPU. This adds required support for Vega and > > --- > base-commit: c6c4dd54012551cce5cde408b35468f2c62b0cce > change-id: 20240614-amdgpu-disable-drm-amd-dc-fp-riscv-clang-31c84f6b990d > > Best regards,