From 37690839f8297023123e08e5a7fee85c4dc33102 Mon Sep 17 00:00:00 2001 From: Thomas Zimmermann Date: Thu, 18 Jun 2026 14:28:43 +0200 Subject: [PATCH] drm/hibmc: Verify the framebuffer pitch to be a multiple of 128 The hibmc hardware requires the framebuffer pitch to be aligned to a multiple of 128. Dumb-buffer creation already guarantees this for the created GEM buffer object. Also verify this contraint during framebuffer creation. Signed-off-by: Thomas Zimmermann Reviewed-by: Yongbang Shi Link: https://patch.msgid.link/20260618123142.92298-6-tzimmermann@suse.de --- .../gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c index 99b36de1fe13..55d175028c46 100644 --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -106,11 +107,26 @@ static const struct dev_pm_ops hibmc_pm_ops = { hibmc_pm_resume) }; +static struct drm_framebuffer *hibmc_mode_config_fb_create(struct drm_device *dev, + struct drm_file *file_priv, + const struct drm_format_info *info, + const struct drm_mode_fb_cmd2 *mode_cmd) +{ + int i; + + for (i = 0; i < info->num_planes; ++i) { + if (mode_cmd->pitches[i] % SZ_128) + return ERR_PTR(-EINVAL); + } + + return drm_gem_fb_create(dev, file_priv, info, mode_cmd); +} + static const struct drm_mode_config_funcs hibmc_mode_funcs = { .mode_valid = drm_vram_helper_mode_valid, .atomic_check = drm_atomic_helper_check, .atomic_commit = drm_atomic_helper_commit, - .fb_create = drm_gem_fb_create, + .fb_create = hibmc_mode_config_fb_create, }; static int hibmc_kms_init(struct hibmc_drm_private *priv)