[PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang
Harry Wentland
harry.wentland at amd.com
Thu Jan 30 16:02:37 UTC 2025
On 2025-01-30 02:04, Greg KH wrote:
> On Thu, Jan 30, 2025 at 07:47:59AM +0100, Greg KH wrote:
>> On Mon, Jan 06, 2025 at 12:29:32PM -0500, Alex Deucher wrote:
>>> Applied. Thanks!
>>
>> Thanks, but I am still getting this error on Linus's current tree right
>> now, with this commit applied:
>>
>> CC [M] drivers/gpu/drm/amd/amdgpu/../display/dc/dml2/display_mode_core.o
>> drivers/gpu/drm/amd/amdgpu/../display/dc/dml2/display_mode_core.c:6713:12: error: stack frame size (2056) exceeds limit (2048) in 'dml_core_mode_support' [-Werror,-Wframe-larger-than]
>> 6713 | dml_bool_t dml_core_mode_support(struct display_mode_lib_st *mode_lib)
>> | ^
>> 1 error generated.
>>
>>
>> I think the issue is:
>>
>>>> --- a/drivers/gpu/drm/amd/display/dc/dml2/Makefile
>>>> +++ b/drivers/gpu/drm/amd/display/dc/dml2/Makefile
>>>> @@ -29,7 +29,11 @@ dml2_rcflags := $(CC_FLAGS_NO_FPU)
>>>>
>>>> ifneq ($(CONFIG_FRAME_WARN),0)
>>>> ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y)
>>
>> I do not have CONFIG_KASAN or CONFIG_KCSAN enabled, but I do have:
>>
>>>> +ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_COMPILE_TEST),yy)
>>
>> These two options enabled, and for some reason:
>> CONFIG_FRAME_WARN=2048
>> as well.
>>
>> Ah, 2048 is the default value, that's how.
>>
>> So this warning triggers even without KASAN or KCSAN being enabled, is
>> that to be expected? Is the stack really being used that much here?
>>
>> I'll go bump FRAME_WARN up to get some local testing working again, but
>> odds are others are going to hit this if I am in my "normal" build
>> tests.
>
> Ick, no, bumping CONFIG_FRAME_WARN=8192 doesn't fix this here either.
> Any hints?
>
It looks like we always override CONFIG_FRAME_WARN...
> ifneq ($(CONFIG_FRAME_WARN),0)
> ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y)
> ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_COMPILE_TEST),yy)
> frame_warn_flag := -Wframe-larger-than=4096
> else
> frame_warn_flag := -Wframe-larger-than=3072
> endif
> else
> frame_warn_flag := -Wframe-larger-than=2048
... right here for the default case.
You could bump that locally.
A more robust solution would be to do a greater-than check here
(for all the cases) and only set -Wframe-larger-than if the value
is greater than the one defined by CONFIG_FRAME_WARN. There are
a few "-gt" uses in other Makefiles, so I would think it's fine
to use that.
I'm no Makefile expert but if this seems like a reasonable course
of action I can take a stab at it.
Harry
> endif
> endif
> thanks,
>
> greg k-h
More information about the dri-devel
mailing list