On Wed, 23 Sep 2026, Mark Brown <[email protected]> wrote:
> Hi all,
>
> After merging the drm-misc tree, today's linux-next build (x86_64
> allmodconfig) failed like this:
>
> /tmp/next/build/drivers/gpu/drm/amd/amdgpu/../display/dc/dc_memory_pool.c:87:37:
>  error: stack frame size (8264) exceeds limit (2048) in 
> 'dc_memory_pool_create' [-Werror,-Wframe-larger-than]
>    87 | __must_check struct dc_memory_pool *dc_memory_pool_create(size_t size,
>       |                       
>
> which I am exceptionally frustrated to see was caused by commit
>
>   bc3f07516a992 (Merge drm/drm-next into drm-misc-next)
>
> which merged the bug I originally reported in the amdgpu tree:
>
>   https://lore.kernel.org/r/[email protected]
>
> and then in the drm tree when that was sent upstream without the report
> having been addressed in any way:
>
>   https://lore.kernel.org/r/[email protected]
>
> neither of which have had any response at all.  It really seems like
> there is some room for improvement in your processes here, currently
> that's three drm trees all held out of -next with the same fairly simple
> build issue.  Can I suggest at least check to see if the code you are
> trying to merge is in -next, the drm merge was done after amdgpu had
> been held out of -next for several days.

I don't really have a skin in the game, but it all builds fine for me. I
have CONFIG_FRAME_WARN=2048.

I presume the problem is the compound literal in
dc_memory_pool_create():

        *pool = (struct dc_memory_pool){
                .size = size,
                .capacity = capacity,
                .unaligned_pool = unaligned_pool,
                .unaligned_memory = kcalloc(lines + 1, PAGE_SIZE, GFP_KERNEL),
                .free_list = kcalloc((uint32_t)capacity, sizeof(atomic_t),
                                     GFP_KERNEL),
                .free_head = ATOMIC_INIT(0),
        };

sizeof(struct dc_memory_pool) == 2 * PAGE_SIZE, so it's clearly not to
be stored on stack. However, I think it's up to the compiler whether it
actually holds all of that on stack or not. It could just generate the
equivalent code instead.


BR,
Jani.

-- 
Jani Nikula, Intel

Reply via email to