All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang
@ 2024-12-19 23:46 Nathan Chancellor
  2025-01-06 17:29 ` Alex Deucher
  0 siblings, 1 reply; 7+ messages in thread
From: Nathan Chancellor @ 2024-12-19 23:46 UTC (permalink / raw)
  To: Chaitanya Dhere, Jun Lei, Harry Wentland, Leo Li,
	Rodrigo Siqueira, Alex Deucher, Christian König, Xinhui Pan
  Cc: amd-gfx, dri-devel, llvm, patches, kernel test robot,
	Nathan Chancellor

Commit 24909d9ec7c3 ("drm/amd/display: Overwriting dualDPP UBF values
before usage") added a new warning in dml2/display_mode_core.c when
building allmodconfig with clang:

  drivers/gpu/drm/amd/amdgpu/../display/dc/dml2/display_mode_core.c:6268:13: error: stack frame size (3128) exceeds limit (3072) in 'dml_prefetch_check' [-Werror,-Wframe-larger-than]
   6268 | static void dml_prefetch_check(struct display_mode_lib_st *mode_lib)
        |             ^

Commit be4e3509314a ("drm/amd/display: DML21 Reintegration For Various
Fixes") introduced one in dml2_core/dml2_core_dcn4_calcs.c with the same
configuration:

  drivers/gpu/drm/amd/amdgpu/../display/dc/dml2/dml21/src/dml2_core/dml2_core_dcn4_calcs.c:7236:13: error: stack frame size (3256) exceeds limit (3072) in 'dml_core_mode_support' [-Werror,-Wframe-larger-than]
   7236 | static bool dml_core_mode_support(struct dml2_core_calcs_mode_support_ex *in_out_params)
        |             ^

In the case of the first warning, the stack usage was already at the
limit at the parent change, so the offending change was rather
innocuous. In the case of the second warning, there was a rather
dramatic increase in stack usage compared to the parent:

  drivers/gpu/drm/amd/amdgpu/../display/dc/dml2/dml21/src/dml2_core/dml2_core_dcn4_calcs.c:7032:13: error: stack frame size (2696) exceeds limit (2048) in 'dml_core_mode_support' [-Werror,-Wframe-larger-than]
   7032 | static bool dml_core_mode_support(struct dml2_core_calcs_mode_support_ex *in_out_params)
        |             ^

This is an unfortunate interaction between an issue with stack slot
reuse in LLVM that gets exacerbated by sanitization (which gets enabled
with all{mod,yes}config) and function calls using a much higher number
of parameters than is typical in the kernel, necessitating passing most
of these values on the stack.

While it is possible that there should be source code changes to address
these warnings, this code is difficult to modify for various reasons, as
has been noted in other changes that have occurred for similar reasons,
such as commit 6740ec97bcdb ("drm/amd/display: Increase frame warning
limit with KASAN or KCSAN in dml2").

Increase the frame larger than limit when compile testing with clang and
the sanitizers enabled to avoid this breakage in all{mod,yes}config, as
they are commonly used and valuable testing targets. While it is not the
best to hide this issue, it is not really relevant when compile testing,
as the sanitizers are commonly stressful on optimizations and they are
only truly useful at runtime, which COMPILE_TEST states will not occur
with the current build.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202412121748.chuX4sap-lkp@intel.com/
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
---
 drivers/gpu/drm/amd/display/dc/dml2/Makefile | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/dml2/Makefile b/drivers/gpu/drm/amd/display/dc/dml2/Makefile
index d9c27ebe12ee08d6330eb199cd8ca9c8489fa5b2..91c4f3b4bd5f46ac5c1c74f665b06dbe61081917 100644
--- 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)
+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
 endif

---
base-commit: 695c2c745e5dff201b75da8a1d237ce403600d04
change-id: 20241219-amdgpu-dml2-address-clang-frame-larger-than-allconfig-f034d9c5118e

Best regards,
-- 
Nathan Chancellor <nathan@kernel.org>


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang
  2024-12-19 23:46 [PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang Nathan Chancellor
@ 2025-01-06 17:29 ` Alex Deucher
  2025-01-30  6:47   ` Greg KH
  0 siblings, 1 reply; 7+ messages in thread
From: Alex Deucher @ 2025-01-06 17:29 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Chaitanya Dhere, Jun Lei, Harry Wentland, Leo Li,
	Rodrigo Siqueira, Alex Deucher, Christian König, Xinhui Pan,
	amd-gfx, dri-devel, llvm, patches, kernel test robot

Applied.  Thanks!

On Thu, Dec 19, 2024 at 6:46 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> Commit 24909d9ec7c3 ("drm/amd/display: Overwriting dualDPP UBF values
> before usage") added a new warning in dml2/display_mode_core.c when
> building allmodconfig with clang:
>
>   drivers/gpu/drm/amd/amdgpu/../display/dc/dml2/display_mode_core.c:6268:13: error: stack frame size (3128) exceeds limit (3072) in 'dml_prefetch_check' [-Werror,-Wframe-larger-than]
>    6268 | static void dml_prefetch_check(struct display_mode_lib_st *mode_lib)
>         |             ^
>
> Commit be4e3509314a ("drm/amd/display: DML21 Reintegration For Various
> Fixes") introduced one in dml2_core/dml2_core_dcn4_calcs.c with the same
> configuration:
>
>   drivers/gpu/drm/amd/amdgpu/../display/dc/dml2/dml21/src/dml2_core/dml2_core_dcn4_calcs.c:7236:13: error: stack frame size (3256) exceeds limit (3072) in 'dml_core_mode_support' [-Werror,-Wframe-larger-than]
>    7236 | static bool dml_core_mode_support(struct dml2_core_calcs_mode_support_ex *in_out_params)
>         |             ^
>
> In the case of the first warning, the stack usage was already at the
> limit at the parent change, so the offending change was rather
> innocuous. In the case of the second warning, there was a rather
> dramatic increase in stack usage compared to the parent:
>
>   drivers/gpu/drm/amd/amdgpu/../display/dc/dml2/dml21/src/dml2_core/dml2_core_dcn4_calcs.c:7032:13: error: stack frame size (2696) exceeds limit (2048) in 'dml_core_mode_support' [-Werror,-Wframe-larger-than]
>    7032 | static bool dml_core_mode_support(struct dml2_core_calcs_mode_support_ex *in_out_params)
>         |             ^
>
> This is an unfortunate interaction between an issue with stack slot
> reuse in LLVM that gets exacerbated by sanitization (which gets enabled
> with all{mod,yes}config) and function calls using a much higher number
> of parameters than is typical in the kernel, necessitating passing most
> of these values on the stack.
>
> While it is possible that there should be source code changes to address
> these warnings, this code is difficult to modify for various reasons, as
> has been noted in other changes that have occurred for similar reasons,
> such as commit 6740ec97bcdb ("drm/amd/display: Increase frame warning
> limit with KASAN or KCSAN in dml2").
>
> Increase the frame larger than limit when compile testing with clang and
> the sanitizers enabled to avoid this breakage in all{mod,yes}config, as
> they are commonly used and valuable testing targets. While it is not the
> best to hide this issue, it is not really relevant when compile testing,
> as the sanitizers are commonly stressful on optimizations and they are
> only truly useful at runtime, which COMPILE_TEST states will not occur
> with the current build.
>
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202412121748.chuX4sap-lkp@intel.com/
> Signed-off-by: Nathan Chancellor <nathan@kernel.org>
> ---
>  drivers/gpu/drm/amd/display/dc/dml2/Makefile | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dml2/Makefile b/drivers/gpu/drm/amd/display/dc/dml2/Makefile
> index d9c27ebe12ee08d6330eb199cd8ca9c8489fa5b2..91c4f3b4bd5f46ac5c1c74f665b06dbe61081917 100644
> --- 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)
> +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
>  endif
>
> ---
> base-commit: 695c2c745e5dff201b75da8a1d237ce403600d04
> change-id: 20241219-amdgpu-dml2-address-clang-frame-larger-than-allconfig-f034d9c5118e
>
> Best regards,
> --
> Nathan Chancellor <nathan@kernel.org>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang
  2025-01-06 17:29 ` Alex Deucher
@ 2025-01-30  6:47   ` Greg KH
  2025-01-30  7:04     ` Greg KH
  0 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2025-01-30  6:47 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Nathan Chancellor, Chaitanya Dhere, Jun Lei, Harry Wentland,
	Leo Li, Rodrigo Siqueira, Alex Deucher, Christian König,
	Xinhui Pan, amd-gfx, dri-devel, llvm, patches, kernel test robot

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.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang
  2025-01-30  6:47   ` Greg KH
@ 2025-01-30  7:04     ` Greg KH
  2025-01-30 16:02       ` Harry Wentland
  0 siblings, 1 reply; 7+ messages in thread
From: Greg KH @ 2025-01-30  7:04 UTC (permalink / raw)
  To: Alex Deucher
  Cc: Nathan Chancellor, Chaitanya Dhere, Jun Lei, Harry Wentland,
	Leo Li, Rodrigo Siqueira, Alex Deucher, Christian König,
	Xinhui Pan, amd-gfx, dri-devel, llvm, patches, kernel test robot

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?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang
  2025-01-30  7:04     ` Greg KH
@ 2025-01-30 16:02       ` Harry Wentland
  2025-01-30 17:51         ` Nathan Chancellor
  0 siblings, 1 reply; 7+ messages in thread
From: Harry Wentland @ 2025-01-30 16:02 UTC (permalink / raw)
  To: Greg KH, Alex Deucher
  Cc: Nathan Chancellor, Chaitanya Dhere, Jun Lei, Leo Li,
	Rodrigo Siqueira, Alex Deucher, Christian König, Xinhui Pan,
	amd-gfx, dri-devel, llvm, patches, kernel test robot

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


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang
  2025-01-30 16:02       ` Harry Wentland
@ 2025-01-30 17:51         ` Nathan Chancellor
  2025-01-30 19:16           ` Harry Wentland
  0 siblings, 1 reply; 7+ messages in thread
From: Nathan Chancellor @ 2025-01-30 17:51 UTC (permalink / raw)
  To: Harry Wentland, Greg KH
  Cc: Alex Deucher, Chaitanya Dhere, Jun Lei, Leo Li, Rodrigo Siqueira,
	Alex Deucher, Christian König, Xinhui Pan, amd-gfx,
	dri-devel, llvm, patches, kernel test robot

Hey Greg and Harry,

On Thu, Jan 30, 2025 at 11:02:37AM -0500, Harry Wentland wrote:
> On 2025-01-30 02:04, Greg KH wrote:
> > On Thu, Jan 30, 2025 at 07:47:59AM +0100, Greg KH wrote:
> > > 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.

Bummer, that means that commit a8d42cd228ec ("drm/amd/display: mark
static functions noinline_for_stack") did not help this case like I had
hoped that it would.

> > > 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?

It is entirely possible. Look at how many parameters there are to some
of these functions, which have to be passed on the stack when the
compiler runs out of registers. When I looked into this at one point,
GCC was barely doing better than Clang in certain configurations. What
version of clang is this and would you mind sharing your configuration?

> > > 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.

Something like this would work I think? I added indentation because it
was getting a little gnarly. I am happy to write a formal patch and send
it off if this looks acceptable.

diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile
index 46f9c05de16e..e1d500633dfa 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
+++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
@@ -29,11 +29,15 @@ dml_ccflags := $(CC_FLAGS_FPU)
 dml_rcflags := $(CC_FLAGS_NO_FPU)
 
 ifneq ($(CONFIG_FRAME_WARN),0)
-ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y)
-frame_warn_flag := -Wframe-larger-than=3072
-else
-frame_warn_flag := -Wframe-larger-than=2048
-endif
+    ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y)
+        frame_warn_limit := 3072
+    else
+        frame_warn_limit := 2048
+    endif
+
+    ifeq ($(call test-lt, $(CONFIG_FRAME_WARN), $(frame_warn_limit)),y)
+        frame_warn_flag := -Wframe-larger-than=$(frame_warn_limit)
+    endif
 endif
 
 CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_ccflags)
diff --git a/drivers/gpu/drm/amd/display/dc/dml2/Makefile b/drivers/gpu/drm/amd/display/dc/dml2/Makefile
index 91c4f3b4bd5f..21fd466dba26 100644
--- a/drivers/gpu/drm/amd/display/dc/dml2/Makefile
+++ b/drivers/gpu/drm/amd/display/dc/dml2/Makefile
@@ -28,15 +28,19 @@ dml2_ccflags := $(CC_FLAGS_FPU)
 dml2_rcflags := $(CC_FLAGS_NO_FPU)
 
 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
-endif
+    ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y)
+        ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_COMPILE_TEST),yy)
+            frame_warn_limit := 4096
+        else
+            frame_warn_limit := 3072
+        endif
+    else
+        frame_warn_limit := 2048
+    endif
+
+    ifeq ($(call test-lt, $(CONFIG_FRAME_WARN), $(frame_warn_limit)),y)
+        frame_warn_flag := -Wframe-larger-than=$(frame_warn_limit)
+    endif
 endif
 
 subdir-ccflags-y += -I$(FULL_AMD_DISPLAY_PATH)/dc/dml2

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang
  2025-01-30 17:51         ` Nathan Chancellor
@ 2025-01-30 19:16           ` Harry Wentland
  0 siblings, 0 replies; 7+ messages in thread
From: Harry Wentland @ 2025-01-30 19:16 UTC (permalink / raw)
  To: Nathan Chancellor, Greg KH
  Cc: Alex Deucher, Chaitanya Dhere, Jun Lei, Leo Li, Rodrigo Siqueira,
	Alex Deucher, Christian König, Xinhui Pan, amd-gfx,
	dri-devel, llvm, patches, kernel test robot



On 2025-01-30 12:51, Nathan Chancellor wrote:
> Hey Greg and Harry,
> 

[snip]

>> 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.
> 
> Something like this would work I think? I added indentation because it
> was getting a little gnarly. I am happy to write a formal patch and send
> it off if this looks acceptable.

Thanks. That's exactly what I was thinking of. If you send a formal
patch I'll be happy to give my RB.

Harry

> 
> diff --git a/drivers/gpu/drm/amd/display/dc/dml/Makefile b/drivers/gpu/drm/amd/display/dc/dml/Makefile
> index 46f9c05de16e..e1d500633dfa 100644
> --- a/drivers/gpu/drm/amd/display/dc/dml/Makefile
> +++ b/drivers/gpu/drm/amd/display/dc/dml/Makefile
> @@ -29,11 +29,15 @@ dml_ccflags := $(CC_FLAGS_FPU)
>  dml_rcflags := $(CC_FLAGS_NO_FPU)
>  
>  ifneq ($(CONFIG_FRAME_WARN),0)
> -ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y)
> -frame_warn_flag := -Wframe-larger-than=3072
> -else
> -frame_warn_flag := -Wframe-larger-than=2048
> -endif
> +    ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y)
> +        frame_warn_limit := 3072
> +    else
> +        frame_warn_limit := 2048
> +    endif
> +
> +    ifeq ($(call test-lt, $(CONFIG_FRAME_WARN), $(frame_warn_limit)),y)
> +        frame_warn_flag := -Wframe-larger-than=$(frame_warn_limit)
> +    endif
>  endif
>  
>  CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_lib.o := $(dml_ccflags)
> diff --git a/drivers/gpu/drm/amd/display/dc/dml2/Makefile b/drivers/gpu/drm/amd/display/dc/dml2/Makefile
> index 91c4f3b4bd5f..21fd466dba26 100644
> --- a/drivers/gpu/drm/amd/display/dc/dml2/Makefile
> +++ b/drivers/gpu/drm/amd/display/dc/dml2/Makefile
> @@ -28,15 +28,19 @@ dml2_ccflags := $(CC_FLAGS_FPU)
>  dml2_rcflags := $(CC_FLAGS_NO_FPU)
>  
>  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
> -endif
> +    ifeq ($(filter y,$(CONFIG_KASAN)$(CONFIG_KCSAN)),y)
> +        ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_COMPILE_TEST),yy)
> +            frame_warn_limit := 4096
> +        else
> +            frame_warn_limit := 3072
> +        endif
> +    else
> +        frame_warn_limit := 2048
> +    endif
> +
> +    ifeq ($(call test-lt, $(CONFIG_FRAME_WARN), $(frame_warn_limit)),y)
> +        frame_warn_flag := -Wframe-larger-than=$(frame_warn_limit)
> +    endif
>  endif
>  
>  subdir-ccflags-y += -I$(FULL_AMD_DISPLAY_PATH)/dc/dml2


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-01-30 19:16 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-19 23:46 [PATCH] drm/amd/display: Increase sanitizer frame larger than limit when compile testing with clang Nathan Chancellor
2025-01-06 17:29 ` Alex Deucher
2025-01-30  6:47   ` Greg KH
2025-01-30  7:04     ` Greg KH
2025-01-30 16:02       ` Harry Wentland
2025-01-30 17:51         ` Nathan Chancellor
2025-01-30 19:16           ` Harry Wentland

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.