2023년 12월 15일 (금) 오전 12:59, Marek Szyprowski <m.szyprow...@samsung.com>님이 작성:
> On 14.12.2023 13:32, Arnd Bergmann wrote: > > From: Arnd Bergmann <a...@arndb.de> > > > > gcc rightfully complains about excessive stack usage in the > fimd_win_set_pixfmt() > > function: > > > > drivers/gpu/drm/exynos/exynos_drm_fimd.c: In function > 'fimd_win_set_pixfmt': > > drivers/gpu/drm/exynos/exynos_drm_fimd.c:750:1: error: the frame size of > 1032 bytes is larger than 1024 byte > > drivers/gpu/drm/exynos/exynos5433_drm_decon.c: In function > 'decon_win_set_pixfmt': > > drivers/gpu/drm/exynos/exynos5433_drm_decon.c:381:1: error: the frame > size of 1032 bytes is larger than 1024 bytes > > > > There is really no reason to copy the large exynos_drm_plane > > structure to the stack before using one of its members, so just > > use a pointer instead. > > > > Fixes: 6f8ee5c21722 ("drm/exynos: fimd: Make plane alpha configurable") > > Signed-off-by: Arnd Bergmann <a...@arndb.de> > > > Reviewed-by: Marek Szyprowski <m.szyprow...@samsung.com> > Thanks, Inki Dae > > > > --- > > drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 4 ++-- > > drivers/gpu/drm/exynos/exynos_drm_fimd.c | 4 ++-- > > 2 files changed, 4 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > index 4d986077738b..bce027552474 100644 > > --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c > > @@ -319,9 +319,9 @@ static void decon_win_set_bldmod(struct > decon_context *ctx, unsigned int win, > > static void decon_win_set_pixfmt(struct decon_context *ctx, unsigned > int win, > > struct drm_framebuffer *fb) > > { > > - struct exynos_drm_plane plane = ctx->planes[win]; > > + struct exynos_drm_plane *plane = &ctx->planes[win]; > > struct exynos_drm_plane_state *state = > > - to_exynos_plane_state(plane.base.state); > > + to_exynos_plane_state(plane->base.state); > > unsigned int alpha = state->base.alpha; > > unsigned int pixel_alpha; > > unsigned long val; > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c > b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > > index 8dde7b1e9b35..5bdc246f5fad 100644 > > --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c > > +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > > @@ -661,9 +661,9 @@ static void fimd_win_set_bldmod(struct fimd_context > *ctx, unsigned int win, > > static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int > win, > > struct drm_framebuffer *fb, int width) > > { > > - struct exynos_drm_plane plane = ctx->planes[win]; > > + struct exynos_drm_plane *plane = &ctx->planes[win]; > > struct exynos_drm_plane_state *state = > > - to_exynos_plane_state(plane.base.state); > > + to_exynos_plane_state(plane->base.state); > > uint32_t pixel_format = fb->format->format; > > unsigned int alpha = state->base.alpha; > > u32 val = WINCONx_ENWIN; > > Best regards > -- > Marek Szyprowski, PhD > Samsung R&D Institute Poland > >