drm/tests: reduce drm_mm_test stack usage
authorArnd Bergmann <arnd@arndb.de>
Thu, 15 Dec 2022 16:34:49 +0000 (17:34 +0100)
committerMaíra Canal <mairacanal@riseup.net>
Fri, 23 Dec 2022 22:08:26 +0000 (19:08 -0300)
The check_reserve_boundaries function uses a lot of kernel stack,
and it gets inlined by clang, which makes __drm_test_mm_reserve
use even more of it, to the point of hitting the warning limit:

drivers/gpu/drm/tests/drm_mm_test.c:344:12: error: stack frame size (1048) exceeds limit (1024) in '__drm_test_mm_reserve' [-Werror,-Wframe-larger-than]

When building with gcc, this does not happen, but the structleak
plugin can similarly increase the stack usage and needs to be
disabled, as we do for all other kunit users.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Maíra Canal <mairacanal@riseup.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20221215163511.266214-1-arnd@kernel.org
drivers/gpu/drm/tests/Makefile
drivers/gpu/drm/tests/drm_mm_test.c

index b29ef10..f896ef8 100644 (file)
@@ -12,3 +12,5 @@ obj-$(CONFIG_DRM_KUNIT_TEST) += \
        drm_mm_test.o \
        drm_plane_helper_test.o \
        drm_rect_test.o
+
+CFLAGS_drm_mm_test.o := $(DISABLE_STRUCTLEAK_PLUGIN)
index 89f12d3..186b28d 100644 (file)
@@ -298,9 +298,9 @@ static bool expect_reserve_fail(struct kunit *test, struct drm_mm *mm, struct dr
        return false;
 }
 
-static bool check_reserve_boundaries(struct kunit *test, struct drm_mm *mm,
-                                    unsigned int count,
-                                    u64 size)
+static bool noinline_for_stack check_reserve_boundaries(struct kunit *test, struct drm_mm *mm,
+                                                       unsigned int count,
+                                                       u64 size)
 {
        const struct boundary {
                u64 start, size;