drm: Eliminate redundant drm_format_info lookups
Subsystems (38)
v2 cover drm: Eliminate redundant drm_format_info lookups
From: Ville Syrjälä <[email protected]>
I noticed a bunch of redundant (and rather expensive) drm_format_info lookups in some traces recently. This series is an attempt to eliminate them.
v2: Rebase
Ville Syrjälä (19):
drm: Pass pixel_format+modifier to .get_format_info()
drm: Pass pixel_format+modifier directly to drm_get_format_info()
drm: Look up the format info earlier
drm: Pass the format info to .fb_create()
drm: Allow the caller to pass in the format info to
drm_helper_mode_fill_fb_struct()
drm/malidp: Pass along the format info from .fb_create()
malidp_verify_afbc_framebuffer_size()
drm/gem: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/gem/afbc: Eliminate redundant drm_get_format_info() drm/amdgpu: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/armada: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/exynos: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/gma500: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/i915: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/komeda: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/msm: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/tegra: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/virtio: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/vmwgfx: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm: Make passing of format info to drm_helper_mode_fill_fb_struct()
mandatory
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 6 ++- drivers/gpu/drm/amd/amdgpu/amdgpu_display.h | 1 + .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 4 +- .../amd/display/amdgpu_dm/amdgpu_dm_plane.h | 2 +- .../arm/display/komeda/komeda_framebuffer.c | 3 +- .../arm/display/komeda/komeda_framebuffer.h | 1 + drivers/gpu/drm/arm/malidp_drv.c | 12 +++--- drivers/gpu/drm/armada/armada_fb.c | 12 +++--- drivers/gpu/drm/armada/armada_fb.h | 4 +- drivers/gpu/drm/armada/armada_fbdev.c | 5 ++- drivers/gpu/drm/drm_fourcc.c | 10 +++-- drivers/gpu/drm/drm_framebuffer.c | 27 ++++++------ drivers/gpu/drm/drm_gem_framebuffer_helper.c | 42 +++++++++---------- drivers/gpu/drm/drm_modeset_helper.c | 4 +- drivers/gpu/drm/exynos/exynos_drm_fb.c | 7 ++-- drivers/gpu/drm/exynos/exynos_drm_fb.h | 1 + drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 5 ++- drivers/gpu/drm/gma500/fbdev.c | 5 ++- drivers/gpu/drm/gma500/framebuffer.c | 14 ++++--- drivers/gpu/drm/gma500/psb_drv.h | 1 + drivers/gpu/drm/i915/display/intel_fb.c | 20 +++++---- drivers/gpu/drm/i915/display/intel_fb.h | 5 ++- drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 6 ++- .../drm/i915/display/intel_plane_initial.c | 3 +- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 5 ++- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 5 +-- drivers/gpu/drm/msm/msm_drv.h | 3 +- drivers/gpu/drm/msm/msm_fb.c | 18 ++++---- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 9 +--- drivers/gpu/drm/nouveau/nouveau_display.c | 6 ++- drivers/gpu/drm/nouveau/nouveau_display.h | 1 + drivers/gpu/drm/omapdrm/omap_fb.c | 10 ++--- drivers/gpu/drm/omapdrm/omap_fb.h | 3 +- drivers/gpu/drm/qxl/qxl_display.c | 3 +- drivers/gpu/drm/radeon/radeon_display.c | 3 +- drivers/gpu/drm/radeon/radeon_fbdev.c | 3 +- drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 3 +- drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 3 +- .../gpu/drm/renesas/shmobile/shmob_drm_kms.c | 3 +- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 11 ++--- drivers/gpu/drm/tegra/drm.h | 2 + drivers/gpu/drm/tegra/fb.c | 7 ++-- drivers/gpu/drm/tegra/fbdev.c | 4 +- drivers/gpu/drm/tests/drm_framebuffer_test.c | 1 + drivers/gpu/drm/vc4/vc4_kms.c | 3 +- drivers/gpu/drm/virtio/virtgpu_display.c | 6 ++- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 15 ++++--- drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 1 + drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 6 ++- drivers/gpu/drm/xe/display/xe_plane_initial.c | 2 +- drivers/gpu/drm/xen/xen_drm_front_kms.c | 3 +- drivers/gpu/drm/xlnx/zynqmp_kms.c | 3 +- include/drm/drm_fourcc.h | 3 +- include/drm/drm_gem_framebuffer_helper.h | 6 +++ include/drm/drm_mode_config.h | 3 +- include/drm/drm_modeset_helper.h | 2 + 56 files changed, 214 insertions(+), 142 deletions(-)
Signature · 1 line
2.49.0
PATCH v2 1/19 drm: Pass pixel_format+modifier to .get_format_info()
From: Ville Syrjälä <[email protected]>
Decouple .get_format_info() from struct drm_mode_fb_cmd2 and just pass the pixel format+modifier combo in by hand.
We may want to use .get_format_info() outside of the normal addfb paths where we won't have a struct drm_mode_fb_cmd2, and creating a temporary one just for this seems silly.
v2: Fix intel_fb_get_format_info() docs (Laurent)
--- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 4 ++-- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.h | 2 +- drivers/gpu/drm/drm_fourcc.c | 3 ++- drivers/gpu/drm/i915/display/intel_fb.c | 11 ++++++----- drivers/gpu/drm/i915/display/intel_fb.h | 2 +- include/drm/drm_mode_config.h | 2 +- 6 files changed, 13 insertions(+), 11 deletions(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +2 -2
@@ -92,9 +92,9 @@ enum dm_micro_swizzle {MICRO_SWIZZLE_R =3 }; -const struct drm_format_info *amdgpu_dm_plane_get_format_info (const struct drm_mode_fb_cmd2 *cmd) +const struct drm_format_info *amdgpu_dm_plane_get_format_info (u32 pixel_format,u64 modifier) { -return amdgpu_lookup_format_info (cmd->pixel_format, cmd->modifier[0 ]); +return amdgpu_lookup_format_info (pixel_format, modifier); } void amdgpu_dm_plane_fill_blending_from_plane_state(const struct drm_plane_state *plane_state,
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.h +1 -1
@@ -58,7 +58,7 @@ int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm,unsigned long possible_crtcs, const struct dc_plane_cap *plane_cap); -const struct drm_format_info *amdgpu_dm_plane_get_format_info (const struct drm_mode_fb_cmd2 *cmd); +const struct drm_format_info *amdgpu_dm_plane_get_format_info (u32 pixel_format,u64 modifier); void amdgpu_dm_plane_fill_blending_from_plane_state(const struct drm_plane_state *plane_state, bool *per_pixel_alpha, bool *pre_multiplied_alpha,
drivers/gpu/drm/drm_fourcc.c +2 -1
@@ -430,7 +430,8 @@ drm_get_format_info(struct drm_device *dev,const struct drm_format_info *info =NULL ;if (dev->mode_config.funcs->get_format_info) - info = dev->mode_config.funcs->get_format_info (mode_cmd); + info = dev->mode_config.funcs->get_format_info (mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info) info =drm_format_info (mode_cmd->pixel_format);
drivers/gpu/drm/i915/display/intel_fb.c +6 -5
@@ -422,21 +422,22 @@ unsigned int intel_fb_modifier_to_tiling(u64 fb_modifier)/** * intel_fb_get_format_info: Get a modifier specific format information -* @cmd: FB add command structure +* @pixel_format: pixel format +* @modifier: modifier * * Returns: -* Returns the format information for @cmd->pixel_format specific to @cmd->modifier[0], +* Returns the format information for @pixel_format specific to @modifier, * or %NULL if the modifier doesn't override the format. */ const struct drm_format_info * -intel_fb_get_format_info (const struct drm_mode_fb_cmd2 *cmd) +intel_fb_get_format_info (u32 pixel_format,u64 modifier) { -const struct intel_modifier_desc *md =lookup_modifier_or_null (cmd->modifier[0 ]); +const struct intel_modifier_desc *md =lookup_modifier_or_null (modifier);if (!md || !md->formats)return NULL ; -return lookup_format_info (md->formats, md->format_count, cmd->pixel_format); +return lookup_format_info (md->formats, md->format_count, pixel_format); }static bool plane_caps_contain_any (u8 caps,u8 mask)
drivers/gpu/drm/i915/display/intel_fb.h +1 -1
@@ -47,7 +47,7 @@ u64 *intel_fb_plane_get_modifiers(struct intel_display *display,bool intel_fb_plane_supports_modifier (struct intel_plane *plane,u64 modifier);const struct drm_format_info * -intel_fb_get_format_info (const struct drm_mode_fb_cmd2 *cmd); +intel_fb_get_format_info (u32 pixel_format,u64 modifier); bool intel_format_info_is_yuv_semiplanar(const struct drm_format_info *info,
include/drm/drm_mode_config.h +1 -1
@@ -95,7 +95,7 @@ struct drm_mode_config_funcs {* The format information specific to the given fb metadata, or * NULL if none is found. */ -const struct drm_format_info *(*get_format_info)(const struct drm_mode_fb_cmd2 *mode_cmd); +const struct drm_format_info *(*get_format_info)(u32 pixel_format,u64 modifier);/** * @mode_valid:
Signature · 1 line
2.49.0
Re: [PATCH v2 01/19] drm: Pass pixel_format+modifier to .get_format_info()
Hi Ville,
Thank you for the patch.
Quoted 11 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Decouple .get_format_info() from struct
drm_mode_fb_cmd2and just pass the pixel format+modifier combo in by hand.We may want to use .get_format_info() outside of the normal addfb paths where we won't have a struct
drm_mode_fb_cmd2, and creating a temporary one just for this seems silly.v2: Fix
intel_fb_get_format_info()docs (Laurent)
Quoted 8 lines
Cc Harry Wentland <[email protected]>Cc Leo Li <[email protected]>Cc Rodrigo Siqueira <[email protected]>Cc Alex Deucher <[email protected]>Cc Laurent Pinchart <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
Quoted 110 lines
--- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c | 4 ++-- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.h | 2 +- drivers/gpu/drm/drm_fourcc.c | 3 ++- drivers/gpu/drm/i915/display/intel_fb.c | 11 ++++++----- drivers/gpu/drm/i915/display/intel_fb.h | 2 +- include/drm/drm_mode_config.h | 2 +- 6 files changed, 13 insertions(+), 11 deletions(-)drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c +2
-2@@ -92,9 +92,9 @@ enum dm_micro_swizzle {MICRO_SWIZZLE_R =3 }; -const struct drm_format_info *amdgpu_dm_plane_get_format_info (const struct drm_mode_fb_cmd2 *cmd) +const struct drm_format_info *amdgpu_dm_plane_get_format_info (u32 pixel_format,u64 modifier) { -return amdgpu_lookup_format_info (cmd->pixel_format, cmd->modifier[0 ]); +return amdgpu_lookup_format_info (pixel_format, modifier); } void amdgpu_dm_plane_fill_blending_from_plane_state(const struct drm_plane_state *plane_state,drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.h +1
-1@@ -58,7 +58,7 @@ int amdgpu_dm_plane_init(struct amdgpu_display_manager *dm,unsigned long possible_crtcs, const struct dc_plane_cap *plane_cap); -const struct drm_format_info *amdgpu_dm_plane_get_format_info (const struct drm_mode_fb_cmd2 *cmd); +const struct drm_format_info *amdgpu_dm_plane_get_format_info (u32 pixel_format,u64 modifier); void amdgpu_dm_plane_fill_blending_from_plane_state(const struct drm_plane_state *plane_state, bool *per_pixel_alpha, bool *pre_multiplied_alpha,drivers/gpu/drm/drm_fourcc.c +2
-1@@ -430,7 +430,8 @@ drm_get_format_info(struct drm_device *dev,const struct drm_format_info *info =NULL ;if (dev->mode_config.funcs->get_format_info) - info = dev->mode_config.funcs->get_format_info (mode_cmd); + info = dev->mode_config.funcs->get_format_info (mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info) info =drm_format_info (mode_cmd->pixel_format);drivers/gpu/drm/i915/display/intel_fb.c +6
-5@@ -422,21 +422,22 @@ unsigned int intel_fb_modifier_to_tiling(u64 fb_modifier)/** * intel_fb_get_format_info: Get a modifier specific format information -* @cmd: FB add command structure +* @pixel_format: pixel format +* @modifier: modifier * * Returns: -* Returns the format information for @cmd->pixel_format specific to @cmd->modifier[0], +* Returns the format information for @pixel_format specific to @modifier, * or %NULL if the modifier doesn't override the format. */ const struct drm_format_info * -intel_fb_get_format_info (const struct drm_mode_fb_cmd2 *cmd) +intel_fb_get_format_info (u32 pixel_format,u64 modifier) { -const struct intel_modifier_desc *md =lookup_modifier_or_null (cmd->modifier[0 ]); +const struct intel_modifier_desc *md =lookup_modifier_or_null (modifier);if (!md || !md->formats)return NULL ; -return lookup_format_info (md->formats, md->format_count, cmd->pixel_format); +return lookup_format_info (md->formats, md->format_count, pixel_format); }static bool plane_caps_contain_any (u8 caps,u8 mask)drivers/gpu/drm/i915/display/intel_fb.h +1
-1@@ -47,7 +47,7 @@ u64 *intel_fb_plane_get_modifiers(struct intel_display *display,bool intel_fb_plane_supports_modifier (struct intel_plane *plane,u64 modifier);const struct drm_format_info * -intel_fb_get_format_info (const struct drm_mode_fb_cmd2 *cmd); +intel_fb_get_format_info (u32 pixel_format,u64 modifier); bool intel_format_info_is_yuv_semiplanar(const struct drm_format_info *info,include/drm/drm_mode_config.h +1
-1@@ -95,7 +95,7 @@ struct drm_mode_config_funcs {* The format information specific to the given fb metadata, or * NULL if none is found. */ -const struct drm_format_info *(*get_format_info)(const struct drm_mode_fb_cmd2 *mode_cmd); +const struct drm_format_info *(*get_format_info)(u32 pixel_format,u64 modifier);/** * @mode_valid:
Signature · 3 lines
Regards, Laurent Pinchart
PATCH v2 2/19 drm: Pass pixel_format+modifier directly to drm_get_format_info()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Decouple drm_get_format_info() from struct drm_mode_fb_cmd2 and just pass the pixel format+modifier combo in by hand.
We may want to use drm_get_format_info() outside of the normal addfb paths where we won't have a struct drm_mode_fb_cmd2, and creating a temporary one just for this seems silly.
Done with cocci:
@@
identifier dev, mode_cmd;
@@
struct drm_format_info *
drm_get_format_info(struct drm_device *dev,
- const struct drm_mode_fb_cmd2 *mode_cmd
+ u32 pixel_format, u64 modifier
)
{
<...
(
- mode_cmd->pixel_format
+ pixel_format
|
- mode_cmd->modifier[0]
+ modifier
)
...>
}
@@
identifier dev, mode_cmd;
@@
struct drm_format_info *
drm_get_format_info(struct drm_device *dev,
- const struct drm_mode_fb_cmd2 *mode_cmd
+ u32 pixel_format, u64 modifier
);
@@
expression dev, mode_cmd;
@@
- drm_get_format_info(dev, mode_cmd)
+ drm_get_format_info(dev, mode_cmd->pixel_format, mode_cmd->modifier[0])
v2: Fix kernel docs (Laurent)
Drop drm_mode_fb_cmd2 forward declaration (Thomas)
--- drivers/gpu/drm/arm/malidp_drv.c | 3 ++- drivers/gpu/drm/armada/armada_fb.c | 4 +++- drivers/gpu/drm/drm_fourcc.c | 11 ++++++----- drivers/gpu/drm/drm_framebuffer.c | 2 +- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 9 ++++++--- drivers/gpu/drm/drm_modeset_helper.c | 3 ++- drivers/gpu/drm/exynos/exynos_drm_fb.c | 4 +++- drivers/gpu/drm/gma500/framebuffer.c | 3 ++- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 +++- drivers/gpu/drm/msm/msm_fb.c | 6 ++++-- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 3 ++- drivers/gpu/drm/nouveau/nouveau_display.c | 3 ++- drivers/gpu/drm/omapdrm/omap_fb.c | 6 ++++-- drivers/gpu/drm/radeon/radeon_fbdev.c | 3 ++- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 3 ++- drivers/gpu/drm/tegra/fb.c | 4 +++- include/drm/drm_fourcc.h | 3 +-- 17 files changed, 48 insertions(+), 26 deletions(-)
drivers/gpu/drm/arm/malidp_drv.c +2 -1
@@ -325,7 +325,8 @@ malidp_verify_afbc_framebuffer_size(struct drm_device *dev,return false; } - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]); n_superblocks = (mode_cmd->width / afbc_superblock_width) * (mode_cmd->height / afbc_superblock_height);
drivers/gpu/drm/armada/armada_fb.c +3 -1
@@ -86,7 +86,9 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,struct drm_framebuffer *armada_fb_create (struct drm_device *dev,struct drm_file *dfile,const struct drm_mode_fb_cmd2 *mode) { -const struct drm_format_info *info =drm_get_format_info (dev, mode); +const struct drm_format_info *info =drm_get_format_info (dev, + mode->pixel_format, + mode->modifier[0 ]);struct armada_gem_object *obj;struct armada_framebuffer *dfb;int ret;
drivers/gpu/drm/drm_fourcc.c +6 -5
@@ -417,7 +417,8 @@ EXPORT_SYMBOL(drm_format_info);/** * drm_get_format_info - query information for a given framebuffer configuration * @dev: DRM device -* @mode_cmd: metadata from the userspace fb creation request +* @pixel_format: pixel format (DRM_FORMAT_*) +* @modifier: modifier * * Returns: * The instance of struct drm_format_info that describes the pixel format, or
@@ -425,16 +426,16 @@ EXPORT_SYMBOL(drm_format_info);*/ const struct drm_format_info *drm_get_format_info (struct drm_device *dev, -const struct drm_mode_fb_cmd2 *mode_cmd) +u32 pixel_format,u64 modifier) {const struct drm_format_info *info =NULL ;if (dev->mode_config.funcs->get_format_info) - info = dev->mode_config.funcs->get_format_info (mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); + info = dev->mode_config.funcs->get_format_info (pixel_format, + modifier);if (!info) - info =drm_format_info (mode_cmd->pixel_format); + info =drm_format_info (pixel_format);return info; }
drivers/gpu/drm/drm_framebuffer.c +1 -1
@@ -176,7 +176,7 @@ static int framebuffer_check(struct drm_device *dev, }/* now let the driver pick its own format info */ - info =drm_get_format_info (dev, r); + info =drm_get_format_info (dev, r->pixel_format, r->modifier[0 ]);for (i =0 ; i < info->num_planes; i++) {unsigned int width =drm_format_info_plane_width (info, r->width, i);
drivers/gpu/drm/drm_gem_framebuffer_helper.c +6 -3
@@ -160,7 +160,8 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev,unsigned int i;int ret; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info) {drm_dbg_kms (dev,"Failed to get FB format info\n" );return -EINVAL ;
@@ -502,7 +503,8 @@ static __u32 drm_gem_afbc_get_bpp(struct drm_device *dev, {const struct drm_format_info *info; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);switch (info->format) {case DRM_FORMAT_YUV420_8BIT :
@@ -600,7 +602,8 @@ int drm_gem_fb_afbc_init(struct drm_device *dev,int ret; objs = afbc_fb->base.obj; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info)return -EINVAL ;
drivers/gpu/drm/drm_modeset_helper.c +2 -1
@@ -86,7 +86,8 @@ void drm_helper_mode_fill_fb_struct(struct drm_device *dev,int i; fb->dev = dev; - fb->format =drm_get_format_info (dev, mode_cmd); + fb->format =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]); fb->width = mode_cmd->width; fb->height = mode_cmd->height;for (i =0 ; i <4 ; i++) {
drivers/gpu/drm/exynos/exynos_drm_fb.c +3 -1
@@ -96,7 +96,9 @@ static struct drm_framebuffer * exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd) { - const struct drm_format_info *info = drm_get_format_info(dev, mode_cmd); + const struct drm_format_info *info = drm_get_format_info(dev, + mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);struct exynos_drm_gem *exynos_gem[MAX_FB_BUFFER ];struct drm_framebuffer *fb;int i;
drivers/gpu/drm/gma500/framebuffer.c +2 -1
@@ -39,7 +39,8 @@ static int psb_framebuffer_init(struct drm_device *dev,* Reject unknown formats, YUV formats, and formats with more than * 4 bytes per pixel. */ - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info || !info->depth || info->cpp[0 ] >4 )return -EINVAL ;
drivers/gpu/drm/mediatek/mtk_drm_drv.c +3 -1
@@ -45,7 +45,9 @@ mtk_drm_mode_fb_create(struct drm_device *dev,struct drm_file *file, const struct drm_mode_fb_cmd2 *cmd) { - const struct drm_format_info *info = drm_get_format_info(dev, cmd); + const struct drm_format_info *info = drm_get_format_info(dev, + cmd->pixel_format, + cmd->modifier[0 ]);if (info->num_planes !=1 )return ERR_PTR (-EINVAL );
drivers/gpu/drm/msm/msm_fb.c +4 -2
@@ -137,7 +137,8 @@ struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd) { const struct drm_format_info *info = drm_get_format_info(dev, - mode_cmd); + mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);struct drm_gem_object *bos[4 ] = {0 };struct drm_framebuffer *fb;int ret, i, n = info->num_planes;
@@ -168,7 +169,8 @@ static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos) { const struct drm_format_info *info = drm_get_format_info(dev, - mode_cmd); + mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);struct msm_drm_private *priv = dev->dev_private;struct msm_kms *kms = priv->kms;struct msm_framebuffer *msm_fb =NULL ;
drivers/gpu/drm/mxsfb/mxsfb_drv.c +2 -1
@@ -95,7 +95,8 @@ mxsfb_fb_create(struct drm_device *dev, struct drm_file *file_priv, {const struct drm_format_info *info; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info)return ERR_PTR (-EINVAL );
drivers/gpu/drm/nouveau/nouveau_display.c +2 -1
@@ -295,7 +295,8 @@ nouveau_framebuffer_new(struct drm_device *dev, kind = nvbo->kind; } - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);for (i =0 ; i < info->num_planes; i++) { height = drm_format_info_plane_height(info,
drivers/gpu/drm/omapdrm/omap_fb.c +4 -2
@@ -338,7 +338,8 @@ struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd) { const struct drm_format_info *info = drm_get_format_info(dev, - mode_cmd); + mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);unsigned int num_planes = info->num_planes;struct drm_gem_object *bos[4 ];struct drm_framebuffer *fb;
@@ -378,7 +379,8 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, dev, mode_cmd, mode_cmd->width, mode_cmd->height, (char *)&mode_cmd->pixel_format); - format =drm_get_format_info (dev, mode_cmd); + format =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);for (i =0 ; i <ARRAY_SIZE (formats); i++) {if (formats[i] == mode_cmd->pixel_format)
drivers/gpu/drm/radeon/radeon_fbdev.c +2 -1
@@ -67,7 +67,8 @@ static int radeon_fbdev_create_pinned_object(struct drm_fb_helper *fb_helper,int height = mode_cmd->height;u32 cpp; - info =drm_get_format_info (rdev_to_drm (rdev), mode_cmd); + info =drm_get_format_info (rdev_to_drm (rdev), mode_cmd->pixel_format, + mode_cmd->modifier[0 ]); cpp = info->cpp[0 ];/* need to align pitch with crtc limits */
drivers/gpu/drm/rockchip/rockchip_drm_fb.c +2 -1
@@ -36,7 +36,8 @@ rockchip_fb_create(struct drm_device *dev, struct drm_file *file,const struct drm_format_info *info;int ret; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info)return ERR_PTR (-ENOMEM );
drivers/gpu/drm/tegra/fb.c +3 -1
@@ -134,7 +134,9 @@ struct drm_framebuffer *tegra_fb_create(struct drm_device *drm,struct drm_file *file, const struct drm_mode_fb_cmd2 *cmd) { - const struct drm_format_info *info = drm_get_format_info(drm, cmd); + const struct drm_format_info *info = drm_get_format_info(drm, + cmd->pixel_format, + cmd->modifier[0 ]);struct tegra_bo *planes[4 ];struct drm_gem_object *gem;struct drm_framebuffer *fb;
include/drm/drm_fourcc.h +1 -2
@@ -54,7 +54,6 @@#endif struct drm_device ; -struct drm_mode_fb_cmd2 ;/** * struct drm_format_info - information about a DRM format
@@ -309,7 +308,7 @@ const struct drm_format_info *__drm_format_info(u32 format);const struct drm_format_info *drm_format_info (u32 format);const struct drm_format_info *drm_get_format_info (struct drm_device *dev, -const struct drm_mode_fb_cmd2 *mode_cmd); +u32 pixel_format,u64 modifier);uint32_t drm_mode_legacy_fb_format (uint32_t bpp,uint32_t depth);uint32_t drm_driver_legacy_fb_format (struct drm_device *dev,uint32_t bpp,uint32_t depth);
Signature · 1 line
2.49.0
Re: [PATCH v2 02/19] drm: Pass pixel_format+modifier directly to drm_get_format_info()
Quoted 80 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Decouple
drm_get_format_info()from structdrm_mode_fb_cmd2and just pass the pixel format+modifier combo in by hand.We may want to use
drm_get_format_info()outside of the normal addfb paths where we won't have a structdrm_mode_fb_cmd2, and creating a temporary one just for this seems silly.Done with cocci:
@@
identifier dev,mode_cmd;
@@
structdrm_format_info*
drm_get_format_info(structdrm_device*dev,(quoted diff) +1
-1- const struct drm_mode_fb_cmd2 *mode_cmd + u32 pixel_format, u64 modifier ){
<...
(
-mode_cmd->pixel_format
+pixel_format
|
- mode_cmd->modifier[0]
+ modifier
)
...>
}@@
identifier dev,mode_cmd;
@@
structdrm_format_info*
drm_get_format_info(structdrm_device*dev,(quoted diff) +1
-1- const struct drm_mode_fb_cmd2 *mode_cmd + u32 pixel_format, u64 modifier );@@
expression dev,mode_cmd;
@@
-drm_get_format_info(dev, mode_cmd)
+drm_get_format_info(dev, mode_cmd->pixel_format, mode_cmd->modifier[0])v2: Fix kernel docs (Laurent)
Dropdrm_mode_fb_cmd2forward declaration (Thomas)Cc Liviu Dudau <[email protected]>Cc Russell King <[email protected]>Cc Inki Dae <[email protected]>Cc Seung-Woo Kim <[email protected]>Cc Kyungmin Park <[email protected]>Cc Patrik Jakobsson <[email protected]>Cc Chun-Kuang Hu <[email protected]>Cc Philipp Zabel <[email protected]>Cc Rob Clark <[email protected]>Cc Abhinav Kumar <[email protected]>Cc Dmitry Baryshkov <[email protected]>Cc Sean Paul <[email protected]>Cc Marijn Suijten <[email protected]>Cc Marek Vasut <[email protected]>Cc Stefan Agner <[email protected]>Cc Lyude Paul <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Tomi Valkeinen <[email protected]>Cc Alex Deucher <[email protected]>Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>Cc Thierry Reding <[email protected]>Cc Mikko Perttunen <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Reviewed-by Laurent Pinchart <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
Quoted 2 lines
--- drivers/gpu/drm/arm/malidp_drv.c | 3 ++-
Best regards,
Liviu
Quoted 330 lines
drivers/gpu/drm/armada/armada_fb.c | 4 +++- drivers/gpu/drm/drm_fourcc.c | 11 ++++++----- drivers/gpu/drm/drm_framebuffer.c | 2 +- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 9 ++++++--- drivers/gpu/drm/drm_modeset_helper.c | 3 ++- drivers/gpu/drm/exynos/exynos_drm_fb.c | 4 +++- drivers/gpu/drm/gma500/framebuffer.c | 3 ++- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 4 +++- drivers/gpu/drm/msm/msm_fb.c | 6 ++++-- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 3 ++- drivers/gpu/drm/nouveau/nouveau_display.c | 3 ++- drivers/gpu/drm/omapdrm/omap_fb.c | 6 ++++-- drivers/gpu/drm/radeon/radeon_fbdev.c | 3 ++- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 3 ++- drivers/gpu/drm/tegra/fb.c | 4 +++- include/drm/drm_fourcc.h | 3 +-- 17 files changed, 48 insertions(+), 26 deletions(-)drivers/gpu/drm/arm/malidp_drv.c +2
-1@@ -325,7 +325,8 @@ malidp_verify_afbc_framebuffer_size(struct drm_device *dev,return false; } - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]); n_superblocks = (mode_cmd->width / afbc_superblock_width) * (mode_cmd->height / afbc_superblock_height);drivers/gpu/drm/armada/armada_fb.c +3
-1@@ -86,7 +86,9 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev,struct drm_framebuffer *armada_fb_create (struct drm_device *dev,struct drm_file *dfile,const struct drm_mode_fb_cmd2 *mode) { -const struct drm_format_info *info =drm_get_format_info (dev, mode); +const struct drm_format_info *info =drm_get_format_info (dev, + mode->pixel_format, + mode->modifier[0 ]);struct armada_gem_object *obj;struct armada_framebuffer *dfb;int ret;drivers/gpu/drm/drm_fourcc.c +6
-5@@ -417,7 +417,8 @@ EXPORT_SYMBOL(drm_format_info);/** * drm_get_format_info - query information for a given framebuffer configuration * @dev: DRM device -* @mode_cmd: metadata from the userspace fb creation request +* @pixel_format: pixel format (DRM_FORMAT_*) +* @modifier: modifier * * Returns: * The instance of struct drm_format_info that describes the pixel format, or @@ -425,16 +426,16 @@ EXPORT_SYMBOL(drm_format_info);*/ const struct drm_format_info *drm_get_format_info (struct drm_device *dev, -const struct drm_mode_fb_cmd2 *mode_cmd) +u32 pixel_format,u64 modifier) {const struct drm_format_info *info =NULL ;if (dev->mode_config.funcs->get_format_info) - info = dev->mode_config.funcs->get_format_info (mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); + info = dev->mode_config.funcs->get_format_info (pixel_format, + modifier);if (!info) - info =drm_format_info (mode_cmd->pixel_format); + info =drm_format_info (pixel_format);return info; }drivers/gpu/drm/drm_framebuffer.c +1
-1@@ -176,7 +176,7 @@ static int framebuffer_check(struct drm_device *dev, }/* now let the driver pick its own format info */ - info =drm_get_format_info (dev, r); + info =drm_get_format_info (dev, r->pixel_format, r->modifier[0 ]);for (i =0 ; i < info->num_planes; i++) {unsigned int width =drm_format_info_plane_width (info, r->width, i);drivers/gpu/drm/drm_gem_framebuffer_helper.c +6
-3@@ -160,7 +160,8 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev,unsigned int i;int ret; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info) {drm_dbg_kms (dev,"Failed to get FB format info\n" );return -EINVAL ;@@ -502,7 +503,8 @@ static __u32 drm_gem_afbc_get_bpp(struct drm_device *dev, {const struct drm_format_info *info; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);switch (info->format) {case DRM_FORMAT_YUV420_8BIT :@@ -600,7 +602,8 @@ int drm_gem_fb_afbc_init(struct drm_device *dev,int ret; objs = afbc_fb->base.obj; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info)return -EINVAL ;drivers/gpu/drm/drm_modeset_helper.c +2
-1@@ -86,7 +86,8 @@ void drm_helper_mode_fill_fb_struct(struct drm_device *dev,int i; fb->dev = dev; - fb->format =drm_get_format_info (dev, mode_cmd); + fb->format =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]); fb->width = mode_cmd->width; fb->height = mode_cmd->height;for (i =0 ; i <4 ; i++) {drivers/gpu/drm/exynos/exynos_drm_fb.c +3
-1@@ -96,7 +96,9 @@ static struct drm_framebuffer * exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, const struct drm_mode_fb_cmd2 *mode_cmd) { - const struct drm_format_info *info = drm_get_format_info(dev, mode_cmd); + const struct drm_format_info *info = drm_get_format_info(dev, + mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);struct exynos_drm_gem *exynos_gem[MAX_FB_BUFFER ];struct drm_framebuffer *fb;int i;drivers/gpu/drm/gma500/framebuffer.c +2
-1@@ -39,7 +39,8 @@ static int psb_framebuffer_init(struct drm_device *dev,* Reject unknown formats, YUV formats, and formats with more than * 4 bytes per pixel. */ - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info || !info->depth || info->cpp[0 ] >4 )return -EINVAL ;drivers/gpu/drm/mediatek/mtk_drm_drv.c +3
-1@@ -45,7 +45,9 @@ mtk_drm_mode_fb_create(struct drm_device *dev,struct drm_file *file, const struct drm_mode_fb_cmd2 *cmd) { - const struct drm_format_info *info = drm_get_format_info(dev, cmd); + const struct drm_format_info *info = drm_get_format_info(dev, + cmd->pixel_format, + cmd->modifier[0 ]);if (info->num_planes !=1 )return ERR_PTR (-EINVAL );drivers/gpu/drm/msm/msm_fb.c +4
-2@@ -137,7 +137,8 @@ struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd) { const struct drm_format_info *info = drm_get_format_info(dev, - mode_cmd); + mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);struct drm_gem_object *bos[4 ] = {0 };struct drm_framebuffer *fb;int ret, i, n = info->num_planes;@@ -168,7 +169,8 @@ static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos) { const struct drm_format_info *info = drm_get_format_info(dev, - mode_cmd); + mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);struct msm_drm_private *priv = dev->dev_private;struct msm_kms *kms = priv->kms;struct msm_framebuffer *msm_fb =NULL ;drivers/gpu/drm/mxsfb/mxsfb_drv.c +2
-1@@ -95,7 +95,8 @@ mxsfb_fb_create(struct drm_device *dev, struct drm_file *file_priv, {const struct drm_format_info *info; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info)return ERR_PTR (-EINVAL );drivers/gpu/drm/nouveau/nouveau_display.c +2
-1@@ -295,7 +295,8 @@ nouveau_framebuffer_new(struct drm_device *dev, kind = nvbo->kind; } - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);for (i =0 ; i < info->num_planes; i++) { height = drm_format_info_plane_height(info,drivers/gpu/drm/omapdrm/omap_fb.c +4
-2@@ -338,7 +338,8 @@ struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd) { const struct drm_format_info *info = drm_get_format_info(dev, - mode_cmd); + mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);unsigned int num_planes = info->num_planes;struct drm_gem_object *bos[4 ];struct drm_framebuffer *fb;@@ -378,7 +379,8 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, dev, mode_cmd, mode_cmd->width, mode_cmd->height, (char *)&mode_cmd->pixel_format); - format =drm_get_format_info (dev, mode_cmd); + format =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);for (i =0 ; i <ARRAY_SIZE (formats); i++) {if (formats[i] == mode_cmd->pixel_format)drivers/gpu/drm/radeon/radeon_fbdev.c +2
-1@@ -67,7 +67,8 @@ static int radeon_fbdev_create_pinned_object(struct drm_fb_helper *fb_helper,int height = mode_cmd->height;u32 cpp; - info =drm_get_format_info (rdev_to_drm (rdev), mode_cmd); + info =drm_get_format_info (rdev_to_drm (rdev), mode_cmd->pixel_format, + mode_cmd->modifier[0 ]); cpp = info->cpp[0 ];/* need to align pitch with crtc limits */ drivers/gpu/drm/rockchip/rockchip_drm_fb.c +2
-1@@ -36,7 +36,8 @@ rockchip_fb_create(struct drm_device *dev, struct drm_file *file,const struct drm_format_info *info;int ret; - info =drm_get_format_info (dev, mode_cmd); + info =drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]);if (!info)return ERR_PTR (-ENOMEM );drivers/gpu/drm/tegra/fb.c +3
-1@@ -134,7 +134,9 @@ struct drm_framebuffer *tegra_fb_create(struct drm_device *drm,struct drm_file *file, const struct drm_mode_fb_cmd2 *cmd) { - const struct drm_format_info *info = drm_get_format_info(drm, cmd); + const struct drm_format_info *info = drm_get_format_info(drm, + cmd->pixel_format, + cmd->modifier[0 ]);struct tegra_bo *planes[4 ];struct drm_gem_object *gem;struct drm_framebuffer *fb;include/drm/drm_fourcc.h +1
-2@@ -54,7 +54,6 @@#endif struct drm_device ; -struct drm_mode_fb_cmd2 ;/** * struct drm_format_info - information about a DRM format @@ -309,7 +308,7 @@ const struct drm_format_info *__drm_format_info(u32 format);const struct drm_format_info *drm_format_info (u32 format);const struct drm_format_info *drm_get_format_info (struct drm_device *dev, -const struct drm_mode_fb_cmd2 *mode_cmd); +u32 pixel_format,u64 modifier);uint32_t drm_mode_legacy_fb_format (uint32_t bpp,uint32_t depth);uint32_t drm_driver_legacy_fb_format (struct drm_device *dev,uint32_t bpp,uint32_t depth);Signature · 1 line
2.49.0
Signature · 8 lines
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯PATCH v2 3/19 drm: Look up the format info earlier
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Look up the format info already in drm_internal_framebuffer_create() so that we can later pass it along to .fb_create(). Currently various drivers are doing additional lookups in their .fb_create() implementations, and these lookups are rather expensive now (given how many different pixel formats we have).
v2: Fix commit msg (Thomas)
--- drivers/gpu/drm/drm_framebuffer.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-)
drivers/gpu/drm/drm_framebuffer.c +13 -12
@@ -153,18 +153,11 @@ int drm_mode_addfb_ioctl(struct drm_device *dev, }static int framebuffer_check (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *r) { -const struct drm_format_info *info;int i; -/* check if the format is supported at all */ -if (!__drm_format_info (r->pixel_format)) { -drm_dbg_kms (dev,"bad framebuffer format %p4cc\n" , - &r->pixel_format); -return -EINVAL ; - } -if (r->width ==0 ) {drm_dbg_kms (dev,"bad framebuffer width %u\n" , r->width);return -EINVAL ;
@@ -175,9 +168,6 @@ static int framebuffer_check(struct drm_device *dev,return -EINVAL ; } -/* now let the driver pick its own format info */ - info =drm_get_format_info (dev, r->pixel_format, r->modifier[0 ]); -for (i =0 ; i < info->num_planes; i++) {unsigned int width =drm_format_info_plane_width (info, r->width, i);unsigned int height =drm_format_info_plane_height (info, r->height, i);
@@ -272,6 +262,7 @@ drm_internal_framebuffer_create(struct drm_device *dev, struct drm_file *file_priv) {struct drm_mode_config *config = &dev->mode_config; +const struct drm_format_info *info;struct drm_framebuffer *fb;int ret;
@@ -297,7 +288,17 @@ drm_internal_framebuffer_create(struct drm_device *dev,return ERR_PTR (-EINVAL ); } - ret =framebuffer_check (dev, r); +/* check if the format is supported at all */ +if (!__drm_format_info (r->pixel_format)) { +drm_dbg_kms (dev,"bad framebuffer format %p4cc\n" , + &r->pixel_format); +return ERR_PTR (-EINVAL ); + } + +/* now let the driver pick its own format info */ + info =drm_get_format_info (dev, r->pixel_format, r->modifier[0 ]); + + ret =framebuffer_check (dev, info, r);if (ret)return ERR_PTR (ret);
Signature · 1 line
2.49.0
PATCH v2 4/19 drm: Pass the format info to .fb_create()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Pass along the format information from the top to .fb_create() so that we can avoid redundant (and somewhat expensive) lookups in the drivers.
Done with cocci (with some manual fixups):
@@
identifier func =~ ".*create.*";
identifier dev, file, mode_cmd;
@@
struct drm_framebuffer *func(
struct drm_device *dev,
struct drm_file *file,
+ const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *mode_cmd)
{
...
(
- const struct drm_format_info *info = drm_get_format_info(...); |
- const struct drm_format_info *info;
...
- info = drm_get_format_info(...);
)
<...
- if (!info)
- return ...;
...>
}
@@
identifier func =~ ".*create.*";
identifier dev, file, mode_cmd;
@@
struct drm_framebuffer *func(
struct drm_device *dev,
struct drm_file *file,
+ const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *mode_cmd)
{
...
}
@find@
identifier fb_create_func =~ ".*create.*";
identifier dev, file, mode_cmd;
@@
struct drm_framebuffer *fb_create_func(
struct drm_device *dev,
struct drm_file *file,
+ const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *mode_cmd);
@@
identifier find.fb_create_func;
expression dev, file, mode_cmd;
@@
fb_create_func(dev, file
+ ,info
,mode_cmd)
@@
expression dev, file, mode_cmd;
@@
drm_gem_fb_create(dev, file
+ ,info
,mode_cmd)
@@
expression dev, file, mode_cmd;
@@
drm_gem_fb_create_with_dirty(dev, file
+ ,info
,mode_cmd)
@@
expression dev, file_priv, mode_cmd; identifier info, fb;
@@
info = drm_get_format_info(...);
...
fb = dev->mode_config.funcs->fb_create(dev, file_priv
+ ,info
,mode_cmd);
@@
identifier dev, file_priv, mode_cmd;
@@
struct drm_mode_config_funcs {
...
struct drm_framebuffer *(*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);
...
};
v2: Fix kernel docs (Laurent)
Fix commit msg (Geert)
--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_display.h | 1 + .../gpu/drm/arm/display/komeda/komeda_framebuffer.c | 1 + .../gpu/drm/arm/display/komeda/komeda_framebuffer.h | 1 + drivers/gpu/drm/arm/malidp_drv.c | 3 ++- drivers/gpu/drm/armada/armada_fb.c | 6 ++---- drivers/gpu/drm/armada/armada_fb.h | 3 ++- drivers/gpu/drm/drm_framebuffer.c | 2 +- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 4 ++++ drivers/gpu/drm/exynos/exynos_drm_fb.c | 4 +--- drivers/gpu/drm/gma500/framebuffer.c | 1 + drivers/gpu/drm/i915/display/intel_fb.c | 1 + drivers/gpu/drm/i915/display/intel_fb.h | 1 + drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 5 +++-- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 7 ++----- drivers/gpu/drm/msm/msm_drv.h | 3 ++- drivers/gpu/drm/msm/msm_fb.c | 6 ++---- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 10 ++-------- drivers/gpu/drm/nouveau/nouveau_display.c | 1 + drivers/gpu/drm/nouveau/nouveau_display.h | 1 + drivers/gpu/drm/omapdrm/omap_fb.c | 6 ++---- drivers/gpu/drm/omapdrm/omap_fb.h | 3 ++- drivers/gpu/drm/qxl/qxl_display.c | 1 + drivers/gpu/drm/radeon/radeon_display.c | 1 + drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 3 ++- drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 3 ++- drivers/gpu/drm/renesas/shmobile/shmob_drm_kms.c | 3 ++- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 7 +------ drivers/gpu/drm/tegra/drm.h | 1 + drivers/gpu/drm/tegra/fb.c | 4 +--- drivers/gpu/drm/tests/drm_framebuffer_test.c | 1 + drivers/gpu/drm/vc4/vc4_kms.c | 3 ++- drivers/gpu/drm/virtio/virtgpu_display.c | 1 + drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 1 + drivers/gpu/drm/xen/xen_drm_front_kms.c | 1 + drivers/gpu/drm/xlnx/zynqmp_kms.c | 3 ++- include/drm/drm_gem_framebuffer_helper.h | 3 +++ include/drm/drm_mode_config.h | 1 + 38 files changed, 59 insertions(+), 49 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +1 -0
@@ -1297,6 +1297,7 @@ static int amdgpu_display_framebuffer_init(struct drm_device *dev,struct drm_framebuffer *amdgpu_display_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct amdgpu_framebuffer *amdgpu_fb;
drivers/gpu/drm/amd/amdgpu/amdgpu_display.h +1 -0
@@ -44,6 +44,7 @@ uint32_t amdgpu_display_supported_domains(struct amdgpu_device *adev,struct drm_framebuffer *amdgpu_display_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd);const struct drm_format_info *amdgpu_lookup_format_info (u32 format,uint64_t modifier);
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c +1 -0
@@ -157,6 +157,7 @@ komeda_fb_none_afbc_size_check(struct komeda_dev *mdev, struct komeda_fb *kfb,struct drm_framebuffer *komeda_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct komeda_dev *mdev = dev->dev_private;
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.h +1 -0
@@ -37,6 +37,7 @@ struct komeda_fb {struct drm_framebuffer *komeda_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd);int komeda_fb_check_src_coords (const struct komeda_fb *kfb,u32 src_x,u32 src_y,u32 src_w,u32 src_h);
drivers/gpu/drm/arm/malidp_drv.c +2 -1
@@ -377,6 +377,7 @@ malidp_verify_afbc_framebuffer(struct drm_device *dev, struct drm_file *file,static struct drm_framebuffer *malidp_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {if (mode_cmd->modifier[0 ]) {
@@ -384,7 +385,7 @@ malidp_fb_create(struct drm_device *dev, struct drm_file *file,return ERR_PTR (-EINVAL ); } -return drm_gem_fb_create (dev, file, mode_cmd); +return drm_gem_fb_create (dev, file, info, mode_cmd); }static const struct drm_mode_config_funcs malidp_mode_config_funcs = {
drivers/gpu/drm/armada/armada_fb.c +2 -4
@@ -84,11 +84,9 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev, }struct drm_framebuffer *armada_fb_create (struct drm_device *dev, -struct drm_file *dfile,const struct drm_mode_fb_cmd2 *mode) +struct drm_file *dfile,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode) { -const struct drm_format_info *info =drm_get_format_info (dev, - mode->pixel_format, - mode->modifier[0 ]);struct armada_gem_object *obj;struct armada_framebuffer *dfb;int ret;
drivers/gpu/drm/armada/armada_fb.h +2 -1
@@ -19,5 +19,6 @@ struct armada_framebuffer {struct armada_framebuffer *armada_framebuffer_create (struct drm_device *,const struct drm_mode_fb_cmd2 *,struct armada_gem_object *);struct drm_framebuffer *armada_fb_create (struct drm_device *dev, -struct drm_file *dfile,const struct drm_mode_fb_cmd2 *mode); +struct drm_file *dfile,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode);#endif
drivers/gpu/drm/drm_framebuffer.c +1 -1
@@ -302,7 +302,7 @@ drm_internal_framebuffer_create(struct drm_device *dev,if (ret)return ERR_PTR (ret); - fb = dev->mode_config.funcs->fb_create (dev, file_priv, r); + fb = dev->mode_config.funcs->fb_create (dev, file_priv, info, r);if (IS_ERR (fb)) {drm_dbg_kms (dev,"could not create framebuffer\n" );return fb;
drivers/gpu/drm/drm_gem_framebuffer_helper.c +4 -0
@@ -264,6 +264,7 @@ static const struct drm_framebuffer_funcs drm_gem_fb_funcs = {* &drm_mode_config_funcs.fb_create callback * @dev: DRM device * @file: DRM file that holds the GEM handle(s) backing the framebuffer +* @info: pixel format information * @mode_cmd: Metadata from the userspace framebuffer creation request * * This function creates a new framebuffer object described by
@@ -283,6 +284,7 @@ static const struct drm_framebuffer_funcs drm_gem_fb_funcs = {*/ struct drm_framebuffer *drm_gem_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) { return drm_gem_fb_create_with_funcs(dev, file, mode_cmd,
@@ -301,6 +303,7 @@ static const struct drm_framebuffer_funcs drm_gem_fb_funcs_dirtyfb = {* &drm_mode_config_funcs.fb_create callback * @dev: DRM device * @file: DRM file that holds the GEM handle(s) backing the framebuffer +* @info: pixel format information * @mode_cmd: Metadata from the userspace framebuffer creation request * * This function creates a new framebuffer object described by
@@ -321,6 +324,7 @@ static const struct drm_framebuffer_funcs drm_gem_fb_funcs_dirtyfb = {*/ struct drm_framebuffer *drm_gem_fb_create_with_dirty (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) { return drm_gem_fb_create_with_funcs(dev, file, mode_cmd,
drivers/gpu/drm/exynos/exynos_drm_fb.c +1 -3
@@ -94,11 +94,9 @@ exynos_drm_framebuffer_init(struct drm_device *dev,static struct drm_framebuffer *exynos_user_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) { -const struct drm_format_info *info =drm_get_format_info (dev, - mode_cmd->pixel_format, - mode_cmd->modifier[0 ]);struct exynos_drm_gem *exynos_gem[MAX_FB_BUFFER ];struct drm_framebuffer *fb;int i;
drivers/gpu/drm/gma500/framebuffer.c +1 -0
@@ -97,6 +97,7 @@ struct drm_framebuffer *psb_framebuffer_create(struct drm_device *dev,*/ static struct drm_framebuffer *psb_user_framebuffer_create (struct drm_device *dev,struct drm_file *filp, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *cmd) {struct drm_gem_object *obj;
drivers/gpu/drm/i915/display/intel_fb.c +1 -0
@@ -2324,6 +2324,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,struct drm_framebuffer *intel_user_framebuffer_create (struct drm_device *dev,struct drm_file *filp, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *user_mode_cmd) {struct drm_framebuffer *fb;
drivers/gpu/drm/i915/display/intel_fb.h +1 -0
@@ -109,6 +109,7 @@ intel_framebuffer_create(struct drm_gem_object *obj,struct drm_framebuffer *intel_user_framebuffer_create (struct drm_device *dev,struct drm_file *filp, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *user_mode_cmd);bool intel_fb_modifier_uses_dpt (struct intel_display *display,u64 modifier);
drivers/gpu/drm/ingenic/ingenic-drm-drv.c +3 -2
@@ -901,14 +901,15 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)static struct drm_framebuffer *ingenic_drm_gem_fb_create (struct drm_device *drm,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct ingenic_drm *priv =drm_device_get_priv (drm);if (priv->soc_info->map_noncoherent) -return drm_gem_fb_create_with_dirty (drm, file, mode_cmd); +return drm_gem_fb_create_with_dirty (drm, file, info, mode_cmd); -return drm_gem_fb_create (drm, file, mode_cmd); +return drm_gem_fb_create (drm, file, info, mode_cmd); } static struct drm_gem_object *
drivers/gpu/drm/mediatek/mtk_drm_drv.c +2 -5
@@ -43,16 +43,13 @@ static const struct drm_mode_config_helper_funcs mtk_drm_mode_config_helpers = {static struct drm_framebuffer *mtk_drm_mode_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *cmd) { -const struct drm_format_info *info =drm_get_format_info (dev, - cmd->pixel_format, - cmd->modifier[0 ]); -if (info->num_planes !=1 )return ERR_PTR (-EINVAL ); -return drm_gem_fb_create (dev, file, cmd); +return drm_gem_fb_create (dev, file, info, cmd); }static const struct drm_mode_config_funcs mtk_drm_mode_config_funcs = {
drivers/gpu/drm/msm/msm_drv.h +2 -1
@@ -294,7 +294,8 @@ uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb,struct drm_gem_object *msm_framebuffer_bo (struct drm_framebuffer *fb,int plane);const struct msm_format *msm_framebuffer_format (struct drm_framebuffer *fb);struct drm_framebuffer *msm_framebuffer_create (struct drm_device *dev, -struct drm_file *file,const struct drm_mode_fb_cmd2 *mode_cmd); +struct drm_file *file,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer *msm_alloc_stolen_fb (struct drm_device *dev,int w,int h,int p,uint32_t format);
drivers/gpu/drm/msm/msm_fb.c +2 -4
@@ -134,11 +134,9 @@ const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb) }struct drm_framebuffer *msm_framebuffer_create (struct drm_device *dev, -struct drm_file *file,const struct drm_mode_fb_cmd2 *mode_cmd) +struct drm_file *file,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode_cmd) { -const struct drm_format_info *info =drm_get_format_info (dev, - mode_cmd->pixel_format, - mode_cmd->modifier[0 ]);struct drm_gem_object *bos[4 ] = {0 };struct drm_framebuffer *fb;int ret, i, n = info->num_planes;
drivers/gpu/drm/mxsfb/mxsfb_drv.c +2 -8
@@ -91,21 +91,15 @@ void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb)static struct drm_framebuffer *mxsfb_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) { -const struct drm_format_info *info; - - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -if (!info) -return ERR_PTR (-EINVAL ); -if (mode_cmd->width * info->cpp[0 ] != mode_cmd->pitches[0 ]) {dev_dbg (dev->dev,"Invalid pitch: fb width must match pitch\n" );return ERR_PTR (-EINVAL ); } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }static const struct drm_mode_config_funcs mxsfb_mode_config_funcs = {
drivers/gpu/drm/nouveau/nouveau_display.c +1 -0
@@ -333,6 +333,7 @@ nouveau_framebuffer_new(struct drm_device *dev,struct drm_framebuffer *nouveau_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_framebuffer *fb;
drivers/gpu/drm/nouveau/nouveau_display.h +1 -0
@@ -67,5 +67,6 @@ nouveau_framebuffer_get_layout(struct drm_framebuffer *fb, uint32_t *tile_mode,struct drm_framebuffer *nouveau_user_framebuffer_create (struct drm_device *,struct drm_file *, +const struct drm_format_info *,const struct drm_mode_fb_cmd2 *);#endif
drivers/gpu/drm/omapdrm/omap_fb.c +2 -4
@@ -335,11 +335,9 @@ void omap_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m)#endif struct drm_framebuffer *omap_framebuffer_create (struct drm_device *dev, -struct drm_file *file,const struct drm_mode_fb_cmd2 *mode_cmd) +struct drm_file *file,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode_cmd) { -const struct drm_format_info *info =drm_get_format_info (dev, - mode_cmd->pixel_format, - mode_cmd->modifier[0 ]);unsigned int num_planes = info->num_planes;struct drm_gem_object *bos[4 ];struct drm_framebuffer *fb;
drivers/gpu/drm/omapdrm/omap_fb.h +2 -1
@@ -20,7 +20,8 @@ struct omap_overlay_info;struct seq_file ;struct drm_framebuffer *omap_framebuffer_create (struct drm_device *dev, -struct drm_file *file,const struct drm_mode_fb_cmd2 *mode_cmd); +struct drm_file *file,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer *omap_framebuffer_init (struct drm_device *dev,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object **bos);int omap_framebuffer_pin (struct drm_framebuffer *fb);
drivers/gpu/drm/qxl/qxl_display.c +1 -0
@@ -1176,6 +1176,7 @@ static int qdev_output_init(struct drm_device *dev, int num_output)static struct drm_framebuffer *qxl_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) { return drm_gem_fb_create_with_funcs(dev, file_priv, mode_cmd,
drivers/gpu/drm/radeon/radeon_display.c +1 -0
@@ -1314,6 +1314,7 @@ radeon_framebuffer_init(struct drm_device *dev,static struct drm_framebuffer *radeon_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_gem_object *obj;
drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c +2 -1
@@ -426,6 +426,7 @@ int rcar_du_dumb_create(struct drm_file *file, struct drm_device *dev,static struct drm_framebuffer *rcar_du_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) {struct rcar_du_device *rcdu =to_rcar_du_device (dev);
@@ -490,7 +491,7 @@ rcar_du_fb_create(struct drm_device *dev, struct drm_file *file_priv, } } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }/* -----------------------------------------------------------------------------
drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c +2 -1
@@ -191,6 +191,7 @@ int rzg2l_du_dumb_create(struct drm_file *file, struct drm_device *dev,static struct drm_framebuffer *rzg2l_du_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) {const struct rzg2l_du_format_info *format;
@@ -214,7 +215,7 @@ rzg2l_du_fb_create(struct drm_device *dev, struct drm_file *file_priv,return ERR_PTR (-EINVAL ); } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }/* -----------------------------------------------------------------------------
drivers/gpu/drm/renesas/shmobile/shmob_drm_kms.c +2 -1
@@ -117,6 +117,7 @@ const struct shmob_drm_format_info *shmob_drm_format_info(u32 fourcc)static struct drm_framebuffer *shmob_drm_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) {const struct shmob_drm_format_info *format;
@@ -144,7 +145,7 @@ shmob_drm_fb_create(struct drm_device *dev, struct drm_file *file_priv, } } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }static const struct drm_mode_config_funcs shmob_drm_mode_config_funcs = {
drivers/gpu/drm/rockchip/rockchip_drm_fb.c +1 -6
@@ -30,17 +30,12 @@ static const struct drm_mode_config_helper_funcs rockchip_mode_config_helpers =static struct drm_framebuffer *rockchip_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_afbc_framebuffer *afbc_fb; -const struct drm_format_info *info;int ret; - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -if (!info) -return ERR_PTR (-ENOMEM ); - afbc_fb =kzalloc (sizeof (*afbc_fb),GFP_KERNEL );if (!afbc_fb)return ERR_PTR (-ENOMEM );
drivers/gpu/drm/tegra/drm.h +1 -0
@@ -190,6 +190,7 @@ struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm, unsigned int num_planes);struct drm_framebuffer *tegra_fb_create (struct drm_device *drm,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *cmd);#ifdef CONFIG_DRM_FBDEV_EMULATION
drivers/gpu/drm/tegra/fb.c +1 -3
@@ -132,11 +132,9 @@ struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm,struct drm_framebuffer *tegra_fb_create (struct drm_device *drm,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *cmd) { -const struct drm_format_info *info =drm_get_format_info (drm, - cmd->pixel_format, - cmd->modifier[0 ]);struct tegra_bo *planes[4 ];struct drm_gem_object *gem;struct drm_framebuffer *fb;
drivers/gpu/drm/tests/drm_framebuffer_test.c +1 -0
@@ -363,6 +363,7 @@ struct drm_framebuffer_test_priv {static struct drm_framebuffer *fb_create_mock (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_framebuffer_test_priv *priv =container_of (dev,typeof (*priv), dev);
drivers/gpu/drm/vc4/vc4_kms.c +2 -1
@@ -530,6 +530,7 @@ static int vc4_atomic_commit_setup(struct drm_atomic_state *state)static struct drm_framebuffer *vc4_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) {struct vc4_dev *vc4 =to_vc4_dev (dev);
@@ -568,7 +569,7 @@ static struct drm_framebuffer *vc4_fb_create(struct drm_device *dev, mode_cmd = &mode_cmd_local; } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }/* Our CTM has some peculiar limitations: we can only enable it for one CRTC
drivers/gpu/drm/virtio/virtgpu_display.c +1 -0
@@ -293,6 +293,7 @@ static int vgdev_output_init(struct virtio_gpu_device *vgdev, int index)static struct drm_framebuffer *virtio_gpu_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_gem_object *obj =NULL ;
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +1 -0
@@ -712,6 +712,7 @@ vmw_kms_new_framebuffer(struct vmw_private *dev_priv,static struct drm_framebuffer *vmw_kms_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) {struct vmw_private *dev_priv =vmw_priv (dev);
drivers/gpu/drm/xen/xen_drm_front_kms.c +1 -0
@@ -54,6 +54,7 @@ static const struct drm_framebuffer_funcs fb_funcs = {static struct drm_framebuffer *fb_create (struct drm_device *dev,struct drm_file *filp, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct xen_drm_front_drm_info *drm_info = dev->dev_private;
drivers/gpu/drm/xlnx/zynqmp_kms.c +2 -1
@@ -373,6 +373,7 @@ static int zynqmp_dpsub_dumb_create(struct drm_file *file_priv,static struct drm_framebuffer *zynqmp_dpsub_fb_create (struct drm_device *drm,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct zynqmp_dpsub *dpsub =to_zynqmp_dpsub (drm);
@@ -383,7 +384,7 @@ zynqmp_dpsub_fb_create(struct drm_device *drm, struct drm_file *file_priv,for (i =0 ; i <ARRAY_SIZE (cmd.pitches); ++i) cmd.pitches[i] =ALIGN (cmd.pitches[i], dpsub->dma_align); -return drm_gem_fb_create (drm, file_priv, &cmd); +return drm_gem_fb_create (drm, file_priv, info, &cmd); }static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {
include/drm/drm_gem_framebuffer_helper.h +3 -0
@@ -8,6 +8,7 @@ struct drm_afbc_framebuffer;struct drm_device ;struct drm_fb_helper_surface_size ;struct drm_file ; +struct drm_format_info ;struct drm_framebuffer ;struct drm_framebuffer_funcs ;struct drm_gem_object ;
@@ -32,9 +33,11 @@ drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file, const struct drm_framebuffer_funcs *funcs);struct drm_framebuffer *drm_gem_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer *drm_gem_fb_create_with_dirty (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd); int drm_gem_fb_vmap(struct drm_framebuffer *fb, struct iosys_map *map,
include/drm/drm_mode_config.h +1 -0
@@ -82,6 +82,7 @@ struct drm_mode_config_funcs {*/ struct drm_framebuffer *(*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);/**
Signature · 1 line
2.49.0
Re: [PATCH v2 04/19] drm: Pass the format info to .fb_create()
Quoted 6 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Pass along the format information from the top to .fb_create() so that we can avoid redundant (and somewhat expensive) lookups in the drivers.
Signature · 2 lines
With best wishes Dmitry
Re: [PATCH v2 04/19] drm: Pass the format info to .fb_create()
In reply to Ville SyrjalaQuoted 151 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Pass along the format information from the top to .fb_create() so that we can avoid redundant (and somewhat expensive) lookups in the drivers.
Done with cocci (with some manual fixups):
@@
identifier func =~ ".*create.*";
identifier dev, file,mode_cmd;
@@
structdrm_framebuffer*func(
structdrm_device*dev,
structdrm_file*file,
+ const structdrm_format_info*info,
const structdrm_mode_fb_cmd2*mode_cmd)
{
...
(
- const structdrm_format_info*info =drm_get_format_info(...); |
- const structdrm_format_info*info;
...
- info =drm_get_format_info(...);
)
<...
- if (!info)
- return ...;
...>
}@@
identifier func =~ ".*create.*";
identifier dev, file,mode_cmd;
@@
structdrm_framebuffer*func(
structdrm_device*dev,
structdrm_file*file,
+ const structdrm_format_info*info,
const structdrm_mode_fb_cmd2*mode_cmd)
{
...
}@find@
identifierfb_create_func=~ ".*create.*";
identifier dev, file,mode_cmd;
@@
structdrm_framebuffer*fb_create_func(
structdrm_device*dev,
structdrm_file*file,
+ const structdrm_format_info*info,const struct drm_mode_fb_cmd2 *mode_cmd);@@
identifier find.fb_create_func;
expression dev, file,mode_cmd;
@@
fb_create_func(dev, file(quoted diff) +1
-0+ ,info,mode_cmd)@@
expression dev, file,mode_cmd;
@@
drm_gem_fb_create(dev, file(quoted diff) +1
-0+ ,info,mode_cmd)@@
expression dev, file,mode_cmd;
@@
drm_gem_fb_create_with_dirty(dev, file(quoted diff) +1
-0+ ,info,mode_cmd)@@
expression dev,file_priv,mode_cmd; identifier info, fb;
@@
info =drm_get_format_info(...);
...
fb = dev->mode_config.funcs->fb_create(dev,file_priv
+ ,info,mode_cmd);@@
identifier dev,file_priv,mode_cmd;
@@
structdrm_mode_config_funcs{
...
structdrm_framebuffer*(*fb_create)(structdrm_device*dev,
structdrm_file*file_priv,
+ const structdrm_format_info*info,const struct drm_mode_fb_cmd2 *mode_cmd);...
};v2: Fix kernel docs (Laurent)
Fix commit msg (Geert)Cc Alex Deucher <[email protected]>Cc Liviu Dudau <[email protected]>Cc Maxime Ripard <[email protected]>Cc Russell King <[email protected]>Cc Inki Dae <[email protected]>Cc Seung-Woo Kim <[email protected]>Cc Kyungmin Park <[email protected]>Cc Patrik Jakobsson <[email protected]>Cc Chun-Kuang Hu <[email protected]>Cc Philipp Zabel <[email protected]>Cc Rob Clark <[email protected]>Cc Abhinav Kumar <[email protected]>Cc Dmitry Baryshkov <[email protected]>Cc Sean Paul <[email protected]>Cc Marijn Suijten <[email protected]>Cc Marek Vasut <[email protected]>Cc Stefan Agner <[email protected]>Cc Lyude Paul <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Tomi Valkeinen <[email protected]>Cc Dave Airlie <[email protected]>Cc Gerd Hoffmann <[email protected]>Cc Kieran Bingham <[email protected]>Cc Biju Das <[email protected]>Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>Cc Thierry Reding <[email protected]>Cc Mikko Perttunen <[email protected]>Cc Dave Stevenson <[email protected]>Cc "Maíra Canal" <[email protected]>Cc Raspberry Pi Kernel Maintenance <[email protected]>Cc Dmitry Osipenko <[email protected]>Cc Gurchetan Singh <[email protected]>Cc Chia-I Wu <[email protected]>Cc Zack Rusin <[email protected]>Cc Broadcom internal kernel review list <[email protected]>Cc Oleksandr Andrushchenko <[email protected]>Cc Laurent Pinchart <[email protected]>Reviewed-by Geert Uytterhoeven <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
Quoted 6 lines
--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_display.h | 1 + .../gpu/drm/arm/display/komeda/komeda_framebuffer.c | 1 + .../gpu/drm/arm/display/komeda/komeda_framebuffer.h | 1 + drivers/gpu/drm/arm/malidp_drv.c | 3 ++-
For the Arm drivers:
Best regards,
Liviu
Quoted 664 lines
drivers/gpu/drm/armada/armada_fb.c | 6 ++---- drivers/gpu/drm/armada/armada_fb.h | 3 ++- drivers/gpu/drm/drm_framebuffer.c | 2 +- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 4 ++++ drivers/gpu/drm/exynos/exynos_drm_fb.c | 4 +--- drivers/gpu/drm/gma500/framebuffer.c | 1 + drivers/gpu/drm/i915/display/intel_fb.c | 1 + drivers/gpu/drm/i915/display/intel_fb.h | 1 + drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 5 +++-- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 7 ++----- drivers/gpu/drm/msm/msm_drv.h | 3 ++- drivers/gpu/drm/msm/msm_fb.c | 6 ++---- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 10 ++-------- drivers/gpu/drm/nouveau/nouveau_display.c | 1 + drivers/gpu/drm/nouveau/nouveau_display.h | 1 + drivers/gpu/drm/omapdrm/omap_fb.c | 6 ++---- drivers/gpu/drm/omapdrm/omap_fb.h | 3 ++- drivers/gpu/drm/qxl/qxl_display.c | 1 + drivers/gpu/drm/radeon/radeon_display.c | 1 + drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 3 ++- drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 3 ++- drivers/gpu/drm/renesas/shmobile/shmob_drm_kms.c | 3 ++- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 7 +------ drivers/gpu/drm/tegra/drm.h | 1 + drivers/gpu/drm/tegra/fb.c | 4 +--- drivers/gpu/drm/tests/drm_framebuffer_test.c | 1 + drivers/gpu/drm/vc4/vc4_kms.c | 3 ++- drivers/gpu/drm/virtio/virtgpu_display.c | 1 + drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 1 + drivers/gpu/drm/xen/xen_drm_front_kms.c | 1 + drivers/gpu/drm/xlnx/zynqmp_kms.c | 3 ++- include/drm/drm_gem_framebuffer_helper.h | 3 +++ include/drm/drm_mode_config.h | 1 + 38 files changed, 59 insertions(+), 49 deletions(-)drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +1
-0@@ -1297,6 +1297,7 @@ static int amdgpu_display_framebuffer_init(struct drm_device *dev,struct drm_framebuffer *amdgpu_display_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct amdgpu_framebuffer *amdgpu_fb;drivers/gpu/drm/amd/amdgpu/amdgpu_display.h +1
-0@@ -44,6 +44,7 @@ uint32_t amdgpu_display_supported_domains(struct amdgpu_device *adev,struct drm_framebuffer *amdgpu_display_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd);const struct drm_format_info *amdgpu_lookup_format_info (u32 format,uint64_t modifier);drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c +1
-0@@ -157,6 +157,7 @@ komeda_fb_none_afbc_size_check(struct komeda_dev *mdev, struct komeda_fb *kfb,struct drm_framebuffer *komeda_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct komeda_dev *mdev = dev->dev_private;drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.h +1
-0@@ -37,6 +37,7 @@ struct komeda_fb {struct drm_framebuffer *komeda_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd);int komeda_fb_check_src_coords (const struct komeda_fb *kfb,u32 src_x,u32 src_y,u32 src_w,u32 src_h);drivers/gpu/drm/arm/malidp_drv.c +2
-1@@ -377,6 +377,7 @@ malidp_verify_afbc_framebuffer(struct drm_device *dev, struct drm_file *file,static struct drm_framebuffer *malidp_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {if (mode_cmd->modifier[0 ]) {@@ -384,7 +385,7 @@ malidp_fb_create(struct drm_device *dev, struct drm_file *file,return ERR_PTR (-EINVAL ); } -return drm_gem_fb_create (dev, file, mode_cmd); +return drm_gem_fb_create (dev, file, info, mode_cmd); }static const struct drm_mode_config_funcs malidp_mode_config_funcs = {drivers/gpu/drm/armada/armada_fb.c +2
-4@@ -84,11 +84,9 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev, }struct drm_framebuffer *armada_fb_create (struct drm_device *dev, -struct drm_file *dfile,const struct drm_mode_fb_cmd2 *mode) +struct drm_file *dfile,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode) { -const struct drm_format_info *info =drm_get_format_info (dev, - mode->pixel_format, - mode->modifier[0 ]);struct armada_gem_object *obj;struct armada_framebuffer *dfb;int ret;drivers/gpu/drm/armada/armada_fb.h +2
-1@@ -19,5 +19,6 @@ struct armada_framebuffer {struct armada_framebuffer *armada_framebuffer_create (struct drm_device *,const struct drm_mode_fb_cmd2 *,struct armada_gem_object *);struct drm_framebuffer *armada_fb_create (struct drm_device *dev, -struct drm_file *dfile,const struct drm_mode_fb_cmd2 *mode); +struct drm_file *dfile,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode);#endif drivers/gpu/drm/drm_framebuffer.c +1
-1@@ -302,7 +302,7 @@ drm_internal_framebuffer_create(struct drm_device *dev,if (ret)return ERR_PTR (ret); - fb = dev->mode_config.funcs->fb_create (dev, file_priv, r); + fb = dev->mode_config.funcs->fb_create (dev, file_priv, info, r);if (IS_ERR (fb)) {drm_dbg_kms (dev,"could not create framebuffer\n" );return fb;drivers/gpu/drm/drm_gem_framebuffer_helper.c +4
-0@@ -264,6 +264,7 @@ static const struct drm_framebuffer_funcs drm_gem_fb_funcs = {* &drm_mode_config_funcs.fb_create callback * @dev: DRM device * @file: DRM file that holds the GEM handle(s) backing the framebuffer +* @info: pixel format information * @mode_cmd: Metadata from the userspace framebuffer creation request * * This function creates a new framebuffer object described by @@ -283,6 +284,7 @@ static const struct drm_framebuffer_funcs drm_gem_fb_funcs = {*/ struct drm_framebuffer *drm_gem_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) { return drm_gem_fb_create_with_funcs(dev, file, mode_cmd,@@ -301,6 +303,7 @@ static const struct drm_framebuffer_funcs drm_gem_fb_funcs_dirtyfb = {* &drm_mode_config_funcs.fb_create callback * @dev: DRM device * @file: DRM file that holds the GEM handle(s) backing the framebuffer +* @info: pixel format information * @mode_cmd: Metadata from the userspace framebuffer creation request * * This function creates a new framebuffer object described by @@ -321,6 +324,7 @@ static const struct drm_framebuffer_funcs drm_gem_fb_funcs_dirtyfb = {*/ struct drm_framebuffer *drm_gem_fb_create_with_dirty (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) { return drm_gem_fb_create_with_funcs(dev, file, mode_cmd,drivers/gpu/drm/exynos/exynos_drm_fb.c +1
-3@@ -94,11 +94,9 @@ exynos_drm_framebuffer_init(struct drm_device *dev,static struct drm_framebuffer *exynos_user_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) { -const struct drm_format_info *info =drm_get_format_info (dev, - mode_cmd->pixel_format, - mode_cmd->modifier[0 ]);struct exynos_drm_gem *exynos_gem[MAX_FB_BUFFER ];struct drm_framebuffer *fb;int i;drivers/gpu/drm/gma500/framebuffer.c +1
-0@@ -97,6 +97,7 @@ struct drm_framebuffer *psb_framebuffer_create(struct drm_device *dev,*/ static struct drm_framebuffer *psb_user_framebuffer_create (struct drm_device *dev,struct drm_file *filp, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *cmd) {struct drm_gem_object *obj;drivers/gpu/drm/i915/display/intel_fb.c +1
-0@@ -2324,6 +2324,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb,struct drm_framebuffer *intel_user_framebuffer_create (struct drm_device *dev,struct drm_file *filp, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *user_mode_cmd) {struct drm_framebuffer *fb;drivers/gpu/drm/i915/display/intel_fb.h +1
-0@@ -109,6 +109,7 @@ intel_framebuffer_create(struct drm_gem_object *obj,struct drm_framebuffer *intel_user_framebuffer_create (struct drm_device *dev,struct drm_file *filp, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *user_mode_cmd);bool intel_fb_modifier_uses_dpt (struct intel_display *display,u64 modifier);drivers/gpu/drm/ingenic/ingenic-drm-drv.c +3
-2@@ -901,14 +901,15 @@ static void ingenic_drm_disable_vblank(struct drm_crtc *crtc)static struct drm_framebuffer *ingenic_drm_gem_fb_create (struct drm_device *drm,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct ingenic_drm *priv =drm_device_get_priv (drm);if (priv->soc_info->map_noncoherent) -return drm_gem_fb_create_with_dirty (drm, file, mode_cmd); +return drm_gem_fb_create_with_dirty (drm, file, info, mode_cmd); -return drm_gem_fb_create (drm, file, mode_cmd); +return drm_gem_fb_create (drm, file, info, mode_cmd); } static struct drm_gem_object *drivers/gpu/drm/mediatek/mtk_drm_drv.c +2
-5@@ -43,16 +43,13 @@ static const struct drm_mode_config_helper_funcs mtk_drm_mode_config_helpers = {static struct drm_framebuffer *mtk_drm_mode_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *cmd) { -const struct drm_format_info *info =drm_get_format_info (dev, - cmd->pixel_format, - cmd->modifier[0 ]); -if (info->num_planes !=1 )return ERR_PTR (-EINVAL ); -return drm_gem_fb_create (dev, file, cmd); +return drm_gem_fb_create (dev, file, info, cmd); }static const struct drm_mode_config_funcs mtk_drm_mode_config_funcs = {drivers/gpu/drm/msm/msm_drv.h +2
-1@@ -294,7 +294,8 @@ uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb,struct drm_gem_object *msm_framebuffer_bo (struct drm_framebuffer *fb,int plane);const struct msm_format *msm_framebuffer_format (struct drm_framebuffer *fb);struct drm_framebuffer *msm_framebuffer_create (struct drm_device *dev, -struct drm_file *file,const struct drm_mode_fb_cmd2 *mode_cmd); +struct drm_file *file,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer *msm_alloc_stolen_fb (struct drm_device *dev,int w,int h,int p,uint32_t format);drivers/gpu/drm/msm/msm_fb.c +2
-4@@ -134,11 +134,9 @@ const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb) }struct drm_framebuffer *msm_framebuffer_create (struct drm_device *dev, -struct drm_file *file,const struct drm_mode_fb_cmd2 *mode_cmd) +struct drm_file *file,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode_cmd) { -const struct drm_format_info *info =drm_get_format_info (dev, - mode_cmd->pixel_format, - mode_cmd->modifier[0 ]);struct drm_gem_object *bos[4 ] = {0 };struct drm_framebuffer *fb;int ret, i, n = info->num_planes;drivers/gpu/drm/mxsfb/mxsfb_drv.c +2
-8@@ -91,21 +91,15 @@ void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb)static struct drm_framebuffer *mxsfb_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) { -const struct drm_format_info *info; - - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -if (!info) -return ERR_PTR (-EINVAL ); -if (mode_cmd->width * info->cpp[0 ] != mode_cmd->pitches[0 ]) {dev_dbg (dev->dev,"Invalid pitch: fb width must match pitch\n" );return ERR_PTR (-EINVAL ); } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }static const struct drm_mode_config_funcs mxsfb_mode_config_funcs = {drivers/gpu/drm/nouveau/nouveau_display.c +1
-0@@ -333,6 +333,7 @@ nouveau_framebuffer_new(struct drm_device *dev,struct drm_framebuffer *nouveau_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_framebuffer *fb;drivers/gpu/drm/nouveau/nouveau_display.h +1
-0@@ -67,5 +67,6 @@ nouveau_framebuffer_get_layout(struct drm_framebuffer *fb, uint32_t *tile_mode,struct drm_framebuffer *nouveau_user_framebuffer_create (struct drm_device *,struct drm_file *, +const struct drm_format_info *,const struct drm_mode_fb_cmd2 *);#endif drivers/gpu/drm/omapdrm/omap_fb.c +2
-4@@ -335,11 +335,9 @@ void omap_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m)#endif struct drm_framebuffer *omap_framebuffer_create (struct drm_device *dev, -struct drm_file *file,const struct drm_mode_fb_cmd2 *mode_cmd) +struct drm_file *file,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode_cmd) { -const struct drm_format_info *info =drm_get_format_info (dev, - mode_cmd->pixel_format, - mode_cmd->modifier[0 ]);unsigned int num_planes = info->num_planes;struct drm_gem_object *bos[4 ];struct drm_framebuffer *fb;drivers/gpu/drm/omapdrm/omap_fb.h +2
-1@@ -20,7 +20,8 @@ struct omap_overlay_info;struct seq_file ;struct drm_framebuffer *omap_framebuffer_create (struct drm_device *dev, -struct drm_file *file,const struct drm_mode_fb_cmd2 *mode_cmd); +struct drm_file *file,const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer *omap_framebuffer_init (struct drm_device *dev,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object **bos);int omap_framebuffer_pin (struct drm_framebuffer *fb);drivers/gpu/drm/qxl/qxl_display.c +1
-0@@ -1176,6 +1176,7 @@ static int qdev_output_init(struct drm_device *dev, int num_output)static struct drm_framebuffer *qxl_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) { return drm_gem_fb_create_with_funcs(dev, file_priv, mode_cmd,drivers/gpu/drm/radeon/radeon_display.c +1
-0@@ -1314,6 +1314,7 @@ radeon_framebuffer_init(struct drm_device *dev,static struct drm_framebuffer *radeon_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_gem_object *obj;drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c +2
-1@@ -426,6 +426,7 @@ int rcar_du_dumb_create(struct drm_file *file, struct drm_device *dev,static struct drm_framebuffer *rcar_du_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) {struct rcar_du_device *rcdu =to_rcar_du_device (dev);@@ -490,7 +491,7 @@ rcar_du_fb_create(struct drm_device *dev, struct drm_file *file_priv, } } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }/* ----------------------------------------------------------------------------- drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c +2
-1@@ -191,6 +191,7 @@ int rzg2l_du_dumb_create(struct drm_file *file, struct drm_device *dev,static struct drm_framebuffer *rzg2l_du_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) {const struct rzg2l_du_format_info *format;@@ -214,7 +215,7 @@ rzg2l_du_fb_create(struct drm_device *dev, struct drm_file *file_priv,return ERR_PTR (-EINVAL ); } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }/* ----------------------------------------------------------------------------- drivers/gpu/drm/renesas/shmobile/shmob_drm_kms.c +2
-1@@ -117,6 +117,7 @@ const struct shmob_drm_format_info *shmob_drm_format_info(u32 fourcc)static struct drm_framebuffer *shmob_drm_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) {const struct shmob_drm_format_info *format;@@ -144,7 +145,7 @@ shmob_drm_fb_create(struct drm_device *dev, struct drm_file *file_priv, } } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }static const struct drm_mode_config_funcs shmob_drm_mode_config_funcs = {drivers/gpu/drm/rockchip/rockchip_drm_fb.c +1
-6@@ -30,17 +30,12 @@ static const struct drm_mode_config_helper_funcs rockchip_mode_config_helpers =static struct drm_framebuffer *rockchip_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_afbc_framebuffer *afbc_fb; -const struct drm_format_info *info;int ret; - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -if (!info) -return ERR_PTR (-ENOMEM ); - afbc_fb =kzalloc (sizeof (*afbc_fb),GFP_KERNEL );if (!afbc_fb)return ERR_PTR (-ENOMEM );drivers/gpu/drm/tegra/drm.h +1
-0@@ -190,6 +190,7 @@ struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm, unsigned int num_planes);struct drm_framebuffer *tegra_fb_create (struct drm_device *drm,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *cmd);#ifdef CONFIG_DRM_FBDEV_EMULATION drivers/gpu/drm/tegra/fb.c +1
-3@@ -132,11 +132,9 @@ struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm,struct drm_framebuffer *tegra_fb_create (struct drm_device *drm,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *cmd) { -const struct drm_format_info *info =drm_get_format_info (drm, - cmd->pixel_format, - cmd->modifier[0 ]);struct tegra_bo *planes[4 ];struct drm_gem_object *gem;struct drm_framebuffer *fb;drivers/gpu/drm/tests/drm_framebuffer_test.c +1
-0@@ -363,6 +363,7 @@ struct drm_framebuffer_test_priv {static struct drm_framebuffer *fb_create_mock (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_framebuffer_test_priv *priv =container_of (dev,typeof (*priv), dev);drivers/gpu/drm/vc4/vc4_kms.c +2
-1@@ -530,6 +530,7 @@ static int vc4_atomic_commit_setup(struct drm_atomic_state *state)static struct drm_framebuffer *vc4_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) {struct vc4_dev *vc4 =to_vc4_dev (dev);@@ -568,7 +569,7 @@ static struct drm_framebuffer *vc4_fb_create(struct drm_device *dev, mode_cmd = &mode_cmd_local; } -return drm_gem_fb_create (dev, file_priv, mode_cmd); +return drm_gem_fb_create (dev, file_priv, info, mode_cmd); }/* Our CTM has some peculiar limitations: we can only enable it for one CRTC drivers/gpu/drm/virtio/virtgpu_display.c +1
-0@@ -293,6 +293,7 @@ static int vgdev_output_init(struct virtio_gpu_device *vgdev, int index)static struct drm_framebuffer *virtio_gpu_user_framebuffer_create (struct drm_device *dev,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct drm_gem_object *obj =NULL ;drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +1
-0@@ -712,6 +712,7 @@ vmw_kms_new_framebuffer(struct vmw_private *dev_priv,static struct drm_framebuffer *vmw_kms_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) {struct vmw_private *dev_priv =vmw_priv (dev);drivers/gpu/drm/xen/xen_drm_front_kms.c +1
-0@@ -54,6 +54,7 @@ static const struct drm_framebuffer_funcs fb_funcs = {static struct drm_framebuffer *fb_create (struct drm_device *dev,struct drm_file *filp, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct xen_drm_front_drm_info *drm_info = dev->dev_private;drivers/gpu/drm/xlnx/zynqmp_kms.c +2
-1@@ -373,6 +373,7 @@ static int zynqmp_dpsub_dumb_create(struct drm_file *file_priv,static struct drm_framebuffer *zynqmp_dpsub_fb_create (struct drm_device *drm,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct zynqmp_dpsub *dpsub =to_zynqmp_dpsub (drm);@@ -383,7 +384,7 @@ zynqmp_dpsub_fb_create(struct drm_device *drm, struct drm_file *file_priv,for (i =0 ; i <ARRAY_SIZE (cmd.pitches); ++i) cmd.pitches[i] =ALIGN (cmd.pitches[i], dpsub->dma_align); -return drm_gem_fb_create (drm, file_priv, &cmd); +return drm_gem_fb_create (drm, file_priv, info, &cmd); }static const struct drm_mode_config_funcs zynqmp_dpsub_mode_config_funcs = {include/drm/drm_gem_framebuffer_helper.h +3
-0@@ -8,6 +8,7 @@ struct drm_afbc_framebuffer;struct drm_device ;struct drm_fb_helper_surface_size ;struct drm_file ; +struct drm_format_info ;struct drm_framebuffer ;struct drm_framebuffer_funcs ;struct drm_gem_object ;@@ -32,9 +33,11 @@ drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file, const struct drm_framebuffer_funcs *funcs);struct drm_framebuffer *drm_gem_fb_create (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer *drm_gem_fb_create_with_dirty (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd); int drm_gem_fb_vmap(struct drm_framebuffer *fb, struct iosys_map *map,include/drm/drm_mode_config.h +1
-0@@ -82,6 +82,7 @@ struct drm_mode_config_funcs {*/ struct drm_framebuffer *(*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);/** Signature · 1 line
2.49.0
Signature · 8 lines
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯Re: [PATCH v2 04/19] drm: Pass the format info to .fb_create()
In reply to Ville SyrjalaHi Ville,
Thank you for the patch.
Quoted 191 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Pass along the format information from the top to .fb_create() so that we can avoid redundant (and somewhat expensive) lookups in the drivers.
Done with cocci (with some manual fixups):
@@
identifier func =~ ".*create.*";
identifier dev, file,mode_cmd;
@@
structdrm_framebuffer*func(
structdrm_device*dev,
structdrm_file*file,
+ const structdrm_format_info*info,
const structdrm_mode_fb_cmd2*mode_cmd)
{
...
(
- const structdrm_format_info*info =drm_get_format_info(...); |
- const structdrm_format_info*info;
...
- info =drm_get_format_info(...);
)
<...
- if (!info)
- return ...;
...>
}@@
identifier func =~ ".*create.*";
identifier dev, file,mode_cmd;
@@
structdrm_framebuffer*func(
structdrm_device*dev,
structdrm_file*file,
+ const structdrm_format_info*info,
const structdrm_mode_fb_cmd2*mode_cmd)
{
...
}@find@
identifierfb_create_func=~ ".*create.*";
identifier dev, file,mode_cmd;
@@
structdrm_framebuffer*fb_create_func(
structdrm_device*dev,
structdrm_file*file,
+ const structdrm_format_info*info,const struct drm_mode_fb_cmd2 *mode_cmd);@@
identifier find.fb_create_func;
expression dev, file,mode_cmd;
@@
fb_create_func(dev, file(quoted diff) +1
-0+ ,info,mode_cmd)@@
expression dev, file,mode_cmd;
@@
drm_gem_fb_create(dev, file(quoted diff) +1
-0+ ,info,mode_cmd)@@
expression dev, file,mode_cmd;
@@
drm_gem_fb_create_with_dirty(dev, file(quoted diff) +1
-0+ ,info,mode_cmd)@@
expression dev,file_priv,mode_cmd; identifier info, fb;
@@
info =drm_get_format_info(...);
...
fb = dev->mode_config.funcs->fb_create(dev,file_priv
+ ,info,mode_cmd);@@
identifier dev,file_priv,mode_cmd;
@@
structdrm_mode_config_funcs{
...
structdrm_framebuffer*(*fb_create)(structdrm_device*dev,
structdrm_file*file_priv,
+ const structdrm_format_info*info,const struct drm_mode_fb_cmd2 *mode_cmd);...
};v2: Fix kernel docs (Laurent)
Fix commit msg (Geert)Cc Alex Deucher <[email protected]>Cc Liviu Dudau <[email protected]>Cc Maxime Ripard <[email protected]>Cc Russell King <[email protected]>Cc Inki Dae <[email protected]>Cc Seung-Woo Kim <[email protected]>Cc Kyungmin Park <[email protected]>Cc Patrik Jakobsson <[email protected]>Cc Chun-Kuang Hu <[email protected]>Cc Philipp Zabel <[email protected]>Cc Rob Clark <[email protected]>Cc Abhinav Kumar <[email protected]>Cc Dmitry Baryshkov <[email protected]>Cc Sean Paul <[email protected]>Cc Marijn Suijten <[email protected]>Cc Marek Vasut <[email protected]>Cc Stefan Agner <[email protected]>Cc Lyude Paul <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Tomi Valkeinen <[email protected]>Cc Dave Airlie <[email protected]>Cc Gerd Hoffmann <[email protected]>Cc Kieran Bingham <[email protected]>Cc Biju Das <[email protected]>Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>Cc Thierry Reding <[email protected]>Cc Mikko Perttunen <[email protected]>Cc Dave Stevenson <[email protected]>Cc "Maíra Canal" <[email protected]>Cc Raspberry Pi Kernel Maintenance <[email protected]>Cc Dmitry Osipenko <[email protected]>Cc Gurchetan Singh <[email protected]>Cc Chia-I Wu <[email protected]>Cc Zack Rusin <[email protected]>Cc Broadcom internal kernel review list <[email protected]>Cc Oleksandr Andrushchenko <[email protected]>Cc Laurent Pinchart <[email protected]>Reviewed-by Geert Uytterhoeven <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_display.h | 1 + .../gpu/drm/arm/display/komeda/komeda_framebuffer.c | 1 + .../gpu/drm/arm/display/komeda/komeda_framebuffer.h | 1 + drivers/gpu/drm/arm/malidp_drv.c | 3 ++- drivers/gpu/drm/armada/armada_fb.c | 6 ++---- drivers/gpu/drm/armada/armada_fb.h | 3 ++- drivers/gpu/drm/drm_framebuffer.c | 2 +- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 4 ++++ drivers/gpu/drm/exynos/exynos_drm_fb.c | 4 +--- drivers/gpu/drm/gma500/framebuffer.c | 1 + drivers/gpu/drm/i915/display/intel_fb.c | 1 + drivers/gpu/drm/i915/display/intel_fb.h | 1 + drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 5 +++-- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 7 ++----- drivers/gpu/drm/msm/msm_drv.h | 3 ++- drivers/gpu/drm/msm/msm_fb.c | 6 ++---- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 10 ++-------- drivers/gpu/drm/nouveau/nouveau_display.c | 1 + drivers/gpu/drm/nouveau/nouveau_display.h | 1 + drivers/gpu/drm/omapdrm/omap_fb.c | 6 ++---- drivers/gpu/drm/omapdrm/omap_fb.h | 3 ++- drivers/gpu/drm/qxl/qxl_display.c | 1 + drivers/gpu/drm/radeon/radeon_display.c | 1 + drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 3 ++- drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 3 ++- drivers/gpu/drm/renesas/shmobile/shmob_drm_kms.c | 3 ++- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 7 +------ drivers/gpu/drm/tegra/drm.h | 1 + drivers/gpu/drm/tegra/fb.c | 4 +--- drivers/gpu/drm/tests/drm_framebuffer_test.c | 1 + drivers/gpu/drm/vc4/vc4_kms.c | 3 ++- drivers/gpu/drm/virtio/virtgpu_display.c | 1 + drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 1 + drivers/gpu/drm/xen/xen_drm_front_kms.c | 1 + drivers/gpu/drm/xlnx/zynqmp_kms.c | 3 ++- include/drm/drm_gem_framebuffer_helper.h | 3 +++ include/drm/drm_mode_config.h | 1 + 38 files changed, 59 insertions(+), 49 deletions(-)
[snip]
include/drm/drm_mode_config.h struct drm_mode_config_funcs { · line 82
Quoted 6 lines
include/drm/drm_mode_config.h +0
-0@@ -82,6 +82,7 @@ struct drm_mode_config_funcs {*/
It would be nice to document the new parameter here. With that addressed,
Quoted 6 lines
include/drm/drm_mode_config.h +1
-0struct drm_framebuffer *(*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);/**
Signature · 3 lines
Regards, Laurent Pinchart
Re: [PATCH v2 04/19] drm: Pass the format info to .fb_create()
Quoted 199 lines · Laurent Pinchart
Hi Ville,
Thank you for the patch.
Quoted 191 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Pass along the format information from the top to .fb_create() so that we can avoid redundant (and somewhat expensive) lookups in the drivers.
Done with cocci (with some manual fixups):
@@
identifier func =~ ".*create.*";
identifier dev, file,mode_cmd;
@@
structdrm_framebuffer*func(
structdrm_device*dev,
structdrm_file*file,
+ const structdrm_format_info*info,
const structdrm_mode_fb_cmd2*mode_cmd)
{
...
(
- const structdrm_format_info*info =drm_get_format_info(...); |
- const structdrm_format_info*info;
...
- info =drm_get_format_info(...);
)
<...
- if (!info)
- return ...;
...>
}@@
identifier func =~ ".*create.*";
identifier dev, file,mode_cmd;
@@
structdrm_framebuffer*func(
structdrm_device*dev,
structdrm_file*file,
+ const structdrm_format_info*info,
const structdrm_mode_fb_cmd2*mode_cmd)
{
...
}@find@
identifierfb_create_func=~ ".*create.*";
identifier dev, file,mode_cmd;
@@
structdrm_framebuffer*fb_create_func(
structdrm_device*dev,
structdrm_file*file,
+ const structdrm_format_info*info,const struct drm_mode_fb_cmd2 *mode_cmd);@@
identifier find.fb_create_func;
expression dev, file,mode_cmd;
@@
fb_create_func(dev, file(quoted diff) +1
-0+ ,info,mode_cmd)@@
expression dev, file,mode_cmd;
@@
drm_gem_fb_create(dev, file(quoted diff) +1
-0+ ,info,mode_cmd)@@
expression dev, file,mode_cmd;
@@
drm_gem_fb_create_with_dirty(dev, file(quoted diff) +1
-0+ ,info,mode_cmd)@@
expression dev,file_priv,mode_cmd; identifier info, fb;
@@
info =drm_get_format_info(...);
...
fb = dev->mode_config.funcs->fb_create(dev,file_priv
+ ,info,mode_cmd);@@
identifier dev,file_priv,mode_cmd;
@@
structdrm_mode_config_funcs{
...
structdrm_framebuffer*(*fb_create)(structdrm_device*dev,
structdrm_file*file_priv,
+ const structdrm_format_info*info,const struct drm_mode_fb_cmd2 *mode_cmd);...
};v2: Fix kernel docs (Laurent)
Fix commit msg (Geert)Cc Alex Deucher <[email protected]>Cc Liviu Dudau <[email protected]>Cc Maxime Ripard <[email protected]>Cc Russell King <[email protected]>Cc Inki Dae <[email protected]>Cc Seung-Woo Kim <[email protected]>Cc Kyungmin Park <[email protected]>Cc Patrik Jakobsson <[email protected]>Cc Chun-Kuang Hu <[email protected]>Cc Philipp Zabel <[email protected]>Cc Rob Clark <[email protected]>Cc Abhinav Kumar <[email protected]>Cc Dmitry Baryshkov <[email protected]>Cc Sean Paul <[email protected]>Cc Marijn Suijten <[email protected]>Cc Marek Vasut <[email protected]>Cc Stefan Agner <[email protected]>Cc Lyude Paul <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Tomi Valkeinen <[email protected]>Cc Dave Airlie <[email protected]>Cc Gerd Hoffmann <[email protected]>Cc Kieran Bingham <[email protected]>Cc Biju Das <[email protected]>Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>Cc Thierry Reding <[email protected]>Cc Mikko Perttunen <[email protected]>Cc Dave Stevenson <[email protected]>Cc "Maíra Canal" <[email protected]>Cc Raspberry Pi Kernel Maintenance <[email protected]>Cc Dmitry Osipenko <[email protected]>Cc Gurchetan Singh <[email protected]>Cc Chia-I Wu <[email protected]>Cc Zack Rusin <[email protected]>Cc Broadcom internal kernel review list <[email protected]>Cc Oleksandr Andrushchenko <[email protected]>Cc Laurent Pinchart <[email protected]>Reviewed-by Geert Uytterhoeven <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_display.h | 1 + .../gpu/drm/arm/display/komeda/komeda_framebuffer.c | 1 + .../gpu/drm/arm/display/komeda/komeda_framebuffer.h | 1 + drivers/gpu/drm/arm/malidp_drv.c | 3 ++- drivers/gpu/drm/armada/armada_fb.c | 6 ++---- drivers/gpu/drm/armada/armada_fb.h | 3 ++- drivers/gpu/drm/drm_framebuffer.c | 2 +- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 4 ++++ drivers/gpu/drm/exynos/exynos_drm_fb.c | 4 +--- drivers/gpu/drm/gma500/framebuffer.c | 1 + drivers/gpu/drm/i915/display/intel_fb.c | 1 + drivers/gpu/drm/i915/display/intel_fb.h | 1 + drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 5 +++-- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 7 ++----- drivers/gpu/drm/msm/msm_drv.h | 3 ++- drivers/gpu/drm/msm/msm_fb.c | 6 ++---- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 10 ++-------- drivers/gpu/drm/nouveau/nouveau_display.c | 1 + drivers/gpu/drm/nouveau/nouveau_display.h | 1 + drivers/gpu/drm/omapdrm/omap_fb.c | 6 ++---- drivers/gpu/drm/omapdrm/omap_fb.h | 3 ++- drivers/gpu/drm/qxl/qxl_display.c | 1 + drivers/gpu/drm/radeon/radeon_display.c | 1 + drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 3 ++- drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 3 ++- drivers/gpu/drm/renesas/shmobile/shmob_drm_kms.c | 3 ++- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 7 +------ drivers/gpu/drm/tegra/drm.h | 1 + drivers/gpu/drm/tegra/fb.c | 4 +--- drivers/gpu/drm/tests/drm_framebuffer_test.c | 1 + drivers/gpu/drm/vc4/vc4_kms.c | 3 ++- drivers/gpu/drm/virtio/virtgpu_display.c | 1 + drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 1 + drivers/gpu/drm/xen/xen_drm_front_kms.c | 1 + drivers/gpu/drm/xlnx/zynqmp_kms.c | 3 ++- include/drm/drm_gem_framebuffer_helper.h | 3 +++ include/drm/drm_mode_config.h | 1 + 38 files changed, 59 insertions(+), 49 deletions(-)[snip]
Quoted 9 lines
include/drm/drm_mode_config.h struct drm_mode_config_funcs { · line 82
Quoted 6 lines
include/drm/drm_mode_config.h +0
-0@@ -82,6 +82,7 @@ struct drm_mode_config_funcs {*/ It would be nice to document the new parameter here. With that addressed,
None of the existing parameters are documented (for any of the mode_config hooks actually), so I think we'd need a separate patch to deal with this.
Quoted 14 lines
Reviewed-by Laurent Pinchart <[email protected]>Quoted 6 lines
include/drm/drm_mode_config.h +1
-0struct drm_framebuffer *(*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);/** Signature · 3 lines
Regards, Laurent Pinchart
Signature · 2 lines
Ville Syrjälä Intel
PATCH v2 5/19 drm: Allow the caller to pass in the format info to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Soon all drivers should have the format info already available in the places where they call drm_helper_mode_fill_fb_struct(). Allow it to be passed along into drm_helper_mode_fill_fb_struct() instead of doing yet another redundant lookup.
Start by always passing in NULL and still doing the extra lookup. The actual changes to avoid the lookup will follow.
Done with cocci (with some manual fixups):
@@
identifier dev, fb, mode_cmd;
expression get_format_info;
@@
void drm_helper_mode_fill_fb_struct(struct drm_device *dev,
struct drm_framebuffer *fb,
+ const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *mode_cmd)
{
...
- fb->format = get_format_info;
+ fb->format = info ?: get_format_info;
...
}
@@
identifier dev, fb, mode_cmd;
@@
void drm_helper_mode_fill_fb_struct(struct drm_device *dev,
struct drm_framebuffer *fb,
+ const struct drm_format_info *info,
const struct drm_mode_fb_cmd2 *mode_cmd);
@@
expression dev, fb, mode_cmd;
@@
drm_helper_mode_fill_fb_struct(dev, fb
+ ,NULL
,mode_cmd);
--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 +- drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c | 2 +- drivers/gpu/drm/armada/armada_fb.c | 2 +- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 2 +- drivers/gpu/drm/drm_modeset_helper.c | 6 ++++-- drivers/gpu/drm/exynos/exynos_drm_fb.c | 2 +- drivers/gpu/drm/gma500/framebuffer.c | 2 +- drivers/gpu/drm/i915/display/intel_fb.c | 2 +- drivers/gpu/drm/msm/msm_fb.c | 2 +- drivers/gpu/drm/nouveau/nouveau_display.c | 2 +- drivers/gpu/drm/omapdrm/omap_fb.c | 2 +- drivers/gpu/drm/radeon/radeon_display.c | 2 +- drivers/gpu/drm/tegra/fb.c | 2 +- drivers/gpu/drm/virtio/virtgpu_display.c | 2 +- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 4 ++-- include/drm/drm_modeset_helper.h | 2 ++ 16 files changed, 21 insertions(+), 17 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +1 -1
@@ -1202,7 +1202,7 @@ static int amdgpu_display_gem_fb_verify_and_init(struct drm_device *dev,int ret; rfb->base.obj[0 ] = obj; -drm_helper_mode_fill_fb_struct (dev, &rfb->base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &rfb->base,NULL , mode_cmd);/* Verify that the modifier is supported. */ if (!drm_any_plane_has_format (dev, mode_cmd->pixel_format, mode_cmd->modifier[0 ])) {
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c +1 -1
@@ -178,7 +178,7 @@ komeda_fb_create(struct drm_device *dev, struct drm_file *file,return ERR_PTR (-EINVAL ); } -drm_helper_mode_fill_fb_struct (dev, &kfb->base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &kfb->base,NULL , mode_cmd);if (kfb->base.modifier) ret =komeda_fb_afbc_size_check (kfb, file, mode_cmd);
drivers/gpu/drm/armada/armada_fb.c +1 -1
@@ -64,7 +64,7 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev, dfb->mod = config; dfb->fb.obj[0 ] = &obj->obj; -drm_helper_mode_fill_fb_struct (dev, &dfb->fb, mode); +drm_helper_mode_fill_fb_struct (dev, &dfb->fb,NULL , mode); ret =drm_framebuffer_init (dev, &dfb->fb, &armada_fb_funcs);if (ret) {
drivers/gpu/drm/drm_gem_framebuffer_helper.c +1 -1
@@ -75,7 +75,7 @@ drm_gem_fb_init(struct drm_device *dev,unsigned int i;int ret; -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd);for (i =0 ; i < num_planes; i++) fb->obj[i] = obj[i];
drivers/gpu/drm/drm_modeset_helper.c +4 -2
@@ -74,6 +74,7 @@ EXPORT_SYMBOL(drm_helper_move_panel_connectors_to_head);* drm_helper_mode_fill_fb_struct - fill out framebuffer metadata * @dev: DRM device * @fb: drm_framebuffer object to fill out +* @info: pixel format information * @mode_cmd: metadata from the userspace fb creation request * * This helper can be used in a drivers fb_create callback to pre-fill the fb's
@@ -81,13 +82,14 @@ EXPORT_SYMBOL(drm_helper_move_panel_connectors_to_head);*/ void drm_helper_mode_fill_fb_struct (struct drm_device *dev,struct drm_framebuffer *fb, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {int i; fb->dev = dev; - fb->format =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); + fb->format = info ? :drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]); fb->width = mode_cmd->width; fb->height = mode_cmd->height;for (i =0 ; i <4 ; i++) {
drivers/gpu/drm/exynos/exynos_drm_fb.c +1 -1
@@ -76,7 +76,7 @@ exynos_drm_framebuffer_init(struct drm_device *dev, fb->obj[i] = &exynos_gem[i]->base; } -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); ret =drm_framebuffer_init (dev, fb, &exynos_drm_fb_funcs);if (ret <0 ) {
drivers/gpu/drm/gma500/framebuffer.c +1 -1
@@ -47,7 +47,7 @@ static int psb_framebuffer_init(struct drm_device *dev,if (mode_cmd->pitches[0 ] &63 )return -EINVAL ; -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); fb->obj[0 ] = obj; ret =drm_framebuffer_init (dev, fb, &psb_fb_funcs);if (ret) {
drivers/gpu/drm/i915/display/intel_fb.c +1 -1
@@ -2254,7 +2254,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb, goto err_frontbuffer_put; } -drm_helper_mode_fill_fb_struct (display->drm, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (display->drm, fb,NULL , mode_cmd);for (i =0 ; i < fb->format->num_planes; i++) {unsigned int stride_alignment;
drivers/gpu/drm/msm/msm_fb.c +1 -1
@@ -222,7 +222,7 @@ static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, msm_fb->base.obj[i] = bos[i]; } -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); ret =drm_framebuffer_init (dev, fb, &msm_framebuffer_funcs);if (ret) {
drivers/gpu/drm/nouveau/nouveau_display.c +1 -1
@@ -321,7 +321,7 @@ nouveau_framebuffer_new(struct drm_device *dev,if (!(fb = *pfb =kzalloc (sizeof (*fb),GFP_KERNEL )))return -ENOMEM ; -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); fb->obj[0 ] = gem; ret =drm_framebuffer_init (dev, fb, &nouveau_framebuffer_funcs);
drivers/gpu/drm/omapdrm/omap_fb.c +1 -1
@@ -440,7 +440,7 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, plane->dma_addr =0 ; } -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); ret =drm_framebuffer_init (dev, fb, &omap_framebuffer_funcs);if (ret) {
drivers/gpu/drm/radeon/radeon_display.c +1 -1
@@ -1302,7 +1302,7 @@ radeon_framebuffer_init(struct drm_device *dev, {int ret; fb->obj[0 ] = obj; -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); ret =drm_framebuffer_init (dev, fb, &radeon_fb_funcs);if (ret) { fb->obj[0 ] =NULL ;
drivers/gpu/drm/tegra/fb.c +1 -1
@@ -114,7 +114,7 @@ struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm,if (!fb)return ERR_PTR (-ENOMEM ); -drm_helper_mode_fill_fb_struct (drm, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (drm, fb,NULL , mode_cmd);for (i =0 ; i < fb->format->num_planes; i++) fb->obj[i] = &planes[i]->gem;
drivers/gpu/drm/virtio/virtgpu_display.c +1 -1
@@ -73,7 +73,7 @@ virtio_gpu_framebuffer_init(struct drm_device *dev, vgfb->base.obj[0 ] = obj; -drm_helper_mode_fill_fb_struct (dev, &vgfb->base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &vgfb->base,NULL , mode_cmd); ret =drm_framebuffer_init (dev, &vgfb->base, &virtio_gpu_fb_funcs);if (ret) {
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +2 -2
@@ -548,7 +548,7 @@ static int vmw_kms_new_framebuffer_surface(struct vmw_private *dev_priv, goto out_err1; } -drm_helper_mode_fill_fb_struct (dev, &vfbs->base.base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &vfbs->base.base,NULL , mode_cmd);memcpy (&vfbs->uo, uo,sizeof (vfbs->uo));vmw_user_object_ref (&vfbs->uo);
@@ -634,7 +634,7 @@ static int vmw_kms_new_framebuffer_bo(struct vmw_private *dev_priv, } vfbd->base.base.obj[0 ] = &bo->tbo.base; -drm_helper_mode_fill_fb_struct (dev, &vfbd->base.base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &vfbd->base.base,NULL , mode_cmd); vfbd->base.bo = true; vfbd->buffer =vmw_bo_reference (bo); *out = &vfbd->base;
include/drm/drm_modeset_helper.h +2 -0
@@ -26,6 +26,7 @@struct drm_crtc ;struct drm_crtc_funcs ;struct drm_device ; +struct drm_format_info ;struct drm_framebuffer ;struct drm_mode_fb_cmd2 ;
@@ -33,6 +34,7 @@ void drm_helper_move_panel_connectors_to_head(struct drm_device *);void drm_helper_mode_fill_fb_struct (struct drm_device *dev,struct drm_framebuffer *fb, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd); int drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc,
Signature · 1 line
2.49.0
Re: [PATCH v2 05/19] drm: Allow the caller to pass in the format info to drm_helper_mode_fill_fb_struct()
Quoted 10 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Soon all drivers should have the format info already available in the places where they call
drm_helper_mode_fill_fb_struct(). Allow it to be passed along intodrm_helper_mode_fill_fb_struct()instead of doing yet another redundant lookup.Start by always passing in NULL and still doing the extra lookup. The actual changes to avoid the lookup will follow.
Signature · 2 lines
With best wishes Dmitry
Re: [PATCH v2 05/19] drm: Allow the caller to pass in the format info to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaQuoted 73 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Soon all drivers should have the format info already available in the places where they call
drm_helper_mode_fill_fb_struct(). Allow it to be passed along intodrm_helper_mode_fill_fb_struct()instead of doing yet another redundant lookup.Start by always passing in NULL and still doing the extra lookup. The actual changes to avoid the lookup will follow.
Done with cocci (with some manual fixups):
@@
identifier dev, fb,mode_cmd;
expressionget_format_info;
@@
void drm_helper_mode_fill_fb_struct(structdrm_device*dev,
structdrm_framebuffer*fb,
+ const structdrm_format_info*info,
const structdrm_mode_fb_cmd2*mode_cmd)
{
...
-fb->format=get_format_info;
+fb->format= info ?:get_format_info;
...
}@@
identifier dev, fb,mode_cmd;
@@
void drm_helper_mode_fill_fb_struct(structdrm_device*dev,
structdrm_framebuffer*fb,
+ const structdrm_format_info*info,const struct drm_mode_fb_cmd2 *mode_cmd);@@
expression dev, fb,mode_cmd;
@@
drm_helper_mode_fill_fb_struct(dev, fb(quoted diff) +1
-0+ ,NULL,mode_cmd);Cc Alex Deucher <[email protected]>Cc Liviu Dudau <[email protected]>Cc Russell King <[email protected]>Cc Inki Dae <[email protected]>Cc Seung-Woo Kim <[email protected]>Cc Kyungmin Park <[email protected]>Cc Patrik Jakobsson <[email protected]>Cc Rob Clark <[email protected]>Cc Abhinav Kumar <[email protected]>Cc Dmitry Baryshkov <[email protected]>Cc Sean Paul <[email protected]>Cc Marijn Suijten <[email protected]>Cc Lyude Paul <[email protected]>Cc Danilo Krummrich <[email protected]>Cc Tomi Valkeinen <[email protected]>Cc Thierry Reding <[email protected]>Cc Mikko Perttunen <[email protected]>Cc Gerd Hoffmann <[email protected]>Cc Dmitry Osipenko <[email protected]>Cc Gurchetan Singh <[email protected]>Cc Chia-I Wu <[email protected]>Cc Zack Rusin <[email protected]>Cc Broadcom internal kernel review list <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Reviewed-by Laurent Pinchart <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
Quoted 3 lines
--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 +- drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c | 2 +-
Best regards,
Liviu
Quoted 259 lines
drivers/gpu/drm/armada/armada_fb.c | 2 +- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 2 +- drivers/gpu/drm/drm_modeset_helper.c | 6 ++++-- drivers/gpu/drm/exynos/exynos_drm_fb.c | 2 +- drivers/gpu/drm/gma500/framebuffer.c | 2 +- drivers/gpu/drm/i915/display/intel_fb.c | 2 +- drivers/gpu/drm/msm/msm_fb.c | 2 +- drivers/gpu/drm/nouveau/nouveau_display.c | 2 +- drivers/gpu/drm/omapdrm/omap_fb.c | 2 +- drivers/gpu/drm/radeon/radeon_display.c | 2 +- drivers/gpu/drm/tegra/fb.c | 2 +- drivers/gpu/drm/virtio/virtgpu_display.c | 2 +- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 4 ++-- include/drm/drm_modeset_helper.h | 2 ++ 16 files changed, 21 insertions(+), 17 deletions(-)drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +1
-1@@ -1202,7 +1202,7 @@ static int amdgpu_display_gem_fb_verify_and_init(struct drm_device *dev,int ret; rfb->base.obj[0 ] = obj; -drm_helper_mode_fill_fb_struct (dev, &rfb->base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &rfb->base,NULL , mode_cmd);/* Verify that the modifier is supported. */ if (!drm_any_plane_has_format (dev, mode_cmd->pixel_format, mode_cmd->modifier[0 ])) {drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c +1
-1@@ -178,7 +178,7 @@ komeda_fb_create(struct drm_device *dev, struct drm_file *file,return ERR_PTR (-EINVAL ); } -drm_helper_mode_fill_fb_struct (dev, &kfb->base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &kfb->base,NULL , mode_cmd);if (kfb->base.modifier) ret =komeda_fb_afbc_size_check (kfb, file, mode_cmd);drivers/gpu/drm/armada/armada_fb.c +1
-1@@ -64,7 +64,7 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev, dfb->mod = config; dfb->fb.obj[0 ] = &obj->obj; -drm_helper_mode_fill_fb_struct (dev, &dfb->fb, mode); +drm_helper_mode_fill_fb_struct (dev, &dfb->fb,NULL , mode); ret =drm_framebuffer_init (dev, &dfb->fb, &armada_fb_funcs);if (ret) {drivers/gpu/drm/drm_gem_framebuffer_helper.c +1
-1@@ -75,7 +75,7 @@ drm_gem_fb_init(struct drm_device *dev,unsigned int i;int ret; -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd);for (i =0 ; i < num_planes; i++) fb->obj[i] = obj[i];drivers/gpu/drm/drm_modeset_helper.c +4
-2@@ -74,6 +74,7 @@ EXPORT_SYMBOL(drm_helper_move_panel_connectors_to_head);* drm_helper_mode_fill_fb_struct - fill out framebuffer metadata * @dev: DRM device * @fb: drm_framebuffer object to fill out +* @info: pixel format information * @mode_cmd: metadata from the userspace fb creation request * * This helper can be used in a drivers fb_create callback to pre-fill the fb's @@ -81,13 +82,14 @@ EXPORT_SYMBOL(drm_helper_move_panel_connectors_to_head);*/ void drm_helper_mode_fill_fb_struct (struct drm_device *dev,struct drm_framebuffer *fb, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {int i; fb->dev = dev; - fb->format =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); + fb->format = info ? :drm_get_format_info (dev, mode_cmd->pixel_format, + mode_cmd->modifier[0 ]); fb->width = mode_cmd->width; fb->height = mode_cmd->height;for (i =0 ; i <4 ; i++) {drivers/gpu/drm/exynos/exynos_drm_fb.c +1
-1@@ -76,7 +76,7 @@ exynos_drm_framebuffer_init(struct drm_device *dev, fb->obj[i] = &exynos_gem[i]->base; } -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); ret =drm_framebuffer_init (dev, fb, &exynos_drm_fb_funcs);if (ret <0 ) {drivers/gpu/drm/gma500/framebuffer.c +1
-1@@ -47,7 +47,7 @@ static int psb_framebuffer_init(struct drm_device *dev,if (mode_cmd->pitches[0 ] &63 )return -EINVAL ; -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); fb->obj[0 ] = obj; ret =drm_framebuffer_init (dev, fb, &psb_fb_funcs);if (ret) {drivers/gpu/drm/i915/display/intel_fb.c +1
-1@@ -2254,7 +2254,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb, goto err_frontbuffer_put; } -drm_helper_mode_fill_fb_struct (display->drm, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (display->drm, fb,NULL , mode_cmd);for (i =0 ; i < fb->format->num_planes; i++) {unsigned int stride_alignment;drivers/gpu/drm/msm/msm_fb.c +1
-1@@ -222,7 +222,7 @@ static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, msm_fb->base.obj[i] = bos[i]; } -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); ret =drm_framebuffer_init (dev, fb, &msm_framebuffer_funcs);if (ret) {drivers/gpu/drm/nouveau/nouveau_display.c +1
-1@@ -321,7 +321,7 @@ nouveau_framebuffer_new(struct drm_device *dev,if (!(fb = *pfb =kzalloc (sizeof (*fb),GFP_KERNEL )))return -ENOMEM ; -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); fb->obj[0 ] = gem; ret =drm_framebuffer_init (dev, fb, &nouveau_framebuffer_funcs);drivers/gpu/drm/omapdrm/omap_fb.c +1
-1@@ -440,7 +440,7 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, plane->dma_addr =0 ; } -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); ret =drm_framebuffer_init (dev, fb, &omap_framebuffer_funcs);if (ret) {drivers/gpu/drm/radeon/radeon_display.c +1
-1@@ -1302,7 +1302,7 @@ radeon_framebuffer_init(struct drm_device *dev, {int ret; fb->obj[0 ] = obj; -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); ret =drm_framebuffer_init (dev, fb, &radeon_fb_funcs);if (ret) { fb->obj[0 ] =NULL ;drivers/gpu/drm/tegra/fb.c +1
-1@@ -114,7 +114,7 @@ struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm,if (!fb)return ERR_PTR (-ENOMEM ); -drm_helper_mode_fill_fb_struct (drm, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (drm, fb,NULL , mode_cmd);for (i =0 ; i < fb->format->num_planes; i++) fb->obj[i] = &planes[i]->gem;drivers/gpu/drm/virtio/virtgpu_display.c +1
-1@@ -73,7 +73,7 @@ virtio_gpu_framebuffer_init(struct drm_device *dev, vgfb->base.obj[0 ] = obj; -drm_helper_mode_fill_fb_struct (dev, &vgfb->base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &vgfb->base,NULL , mode_cmd); ret =drm_framebuffer_init (dev, &vgfb->base, &virtio_gpu_fb_funcs);if (ret) {drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +2
-2@@ -548,7 +548,7 @@ static int vmw_kms_new_framebuffer_surface(struct vmw_private *dev_priv, goto out_err1; } -drm_helper_mode_fill_fb_struct (dev, &vfbs->base.base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &vfbs->base.base,NULL , mode_cmd);memcpy (&vfbs->uo, uo,sizeof (vfbs->uo));vmw_user_object_ref (&vfbs->uo);@@ -634,7 +634,7 @@ static int vmw_kms_new_framebuffer_bo(struct vmw_private *dev_priv, } vfbd->base.base.obj[0 ] = &bo->tbo.base; -drm_helper_mode_fill_fb_struct (dev, &vfbd->base.base, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &vfbd->base.base,NULL , mode_cmd); vfbd->base.bo = true; vfbd->buffer =vmw_bo_reference (bo); *out = &vfbd->base;include/drm/drm_modeset_helper.h +2
-0@@ -26,6 +26,7 @@struct drm_crtc ;struct drm_crtc_funcs ;struct drm_device ; +struct drm_format_info ;struct drm_framebuffer ;struct drm_mode_fb_cmd2 ;@@ -33,6 +34,7 @@ void drm_helper_move_panel_connectors_to_head(struct drm_device *);void drm_helper_mode_fill_fb_struct (struct drm_device *dev,struct drm_framebuffer *fb, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd); int drm_crtc_init(struct drm_device *dev, struct drm_crtc *crtc,Signature · 1 line
2.49.0
Signature · 8 lines
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯PATCH v2 6/19 drm/malidp: Pass along the format info from .fb_create() malidp_verify_afbc_framebuffer_size()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to malidp_verify_afbc_framebuffer_size() to avoid the redundant lookup.
--- drivers/gpu/drm/arm/malidp_drv.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
drivers/gpu/drm/arm/malidp_drv.c +4 -6
@@ -306,10 +306,10 @@ malidp_verify_afbc_framebuffer_caps(struct drm_device *dev,static bool malidp_verify_afbc_framebuffer_size (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {int n_superblocks =0 ; -const struct drm_format_info *info;struct drm_gem_object *objs =NULL ;u32 afbc_superblock_size =0 , afbc_superblock_height =0 ;u32 afbc_superblock_width =0 , afbc_size =0 ;
@@ -325,9 +325,6 @@ malidp_verify_afbc_framebuffer_size(struct drm_device *dev,return false; } - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); - n_superblocks = (mode_cmd->width / afbc_superblock_width) * (mode_cmd->height / afbc_superblock_height);
@@ -367,10 +364,11 @@ malidp_verify_afbc_framebuffer_size(struct drm_device *dev,static bool malidp_verify_afbc_framebuffer (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {if (malidp_verify_afbc_framebuffer_caps (dev, mode_cmd)) -return malidp_verify_afbc_framebuffer_size (dev, file, mode_cmd); +return malidp_verify_afbc_framebuffer_size (dev, file, info, mode_cmd);return false; }
@@ -381,7 +379,7 @@ malidp_fb_create(struct drm_device *dev, struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd) {if (mode_cmd->modifier[0 ]) { -if (!malidp_verify_afbc_framebuffer (dev, file, mode_cmd)) +if (!malidp_verify_afbc_framebuffer (dev, file, info, mode_cmd))return ERR_PTR (-EINVAL ); }
Signature · 1 line
2.49.0
Re: [PATCH v2 06/19] drm/malidp: Pass along the format info from .fb_create() malidp_verify_afbc_framebuffer_size()
Quoted 9 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to
malidp_verify_afbc_framebuffer_size()to avoid the redundant lookup.Cc Liviu Dudau <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
Best regards,
Liviu
Quoted 55 lines
--- drivers/gpu/drm/arm/malidp_drv.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)drivers/gpu/drm/arm/malidp_drv.c +4
-6@@ -306,10 +306,10 @@ malidp_verify_afbc_framebuffer_caps(struct drm_device *dev,static bool malidp_verify_afbc_framebuffer_size (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {int n_superblocks =0 ; -const struct drm_format_info *info;struct drm_gem_object *objs =NULL ;u32 afbc_superblock_size =0 , afbc_superblock_height =0 ;u32 afbc_superblock_width =0 , afbc_size =0 ;@@ -325,9 +325,6 @@ malidp_verify_afbc_framebuffer_size(struct drm_device *dev,return false; } - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); - n_superblocks = (mode_cmd->width / afbc_superblock_width) * (mode_cmd->height / afbc_superblock_height);@@ -367,10 +364,11 @@ malidp_verify_afbc_framebuffer_size(struct drm_device *dev,static bool malidp_verify_afbc_framebuffer (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {if (malidp_verify_afbc_framebuffer_caps (dev, mode_cmd)) -return malidp_verify_afbc_framebuffer_size (dev, file, mode_cmd); +return malidp_verify_afbc_framebuffer_size (dev, file, info, mode_cmd);return false; }@@ -381,7 +379,7 @@ malidp_fb_create(struct drm_device *dev, struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd) {if (mode_cmd->modifier[0 ]) { -if (!malidp_verify_afbc_framebuffer (dev, file, mode_cmd)) +if (!malidp_verify_afbc_framebuffer (dev, file, info, mode_cmd))return ERR_PTR (-EINVAL ); }Signature · 1 line
2.49.0
Signature · 8 lines
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯PATCH v2 7/19 drm/gem: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Pass along the format info from .fb_create() to aliminate the redundant drm_get_format_info() calls from the gem fb code.
v2: Fix kernel docs (Laurent)
--- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 23 +++++++++----------- drivers/gpu/drm/qxl/qxl_display.c | 2 +- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 3 ++- drivers/gpu/drm/xen/xen_drm_front_kms.c | 2 +- include/drm/drm_gem_framebuffer_helper.h | 2 ++ 5 files changed, 16 insertions(+), 16 deletions(-)
drivers/gpu/drm/drm_gem_framebuffer_helper.c +10 -13
@@ -68,6 +68,7 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_get_obj);static int drm_gem_fb_init (struct drm_device *dev,struct drm_framebuffer *fb, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object **obj,unsigned int num_planes,const struct drm_framebuffer_funcs *funcs)
@@ -75,7 +76,7 @@ drm_gem_fb_init(struct drm_device *dev,unsigned int i;int ret; -drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb, info, mode_cmd);for (i =0 ; i < num_planes; i++) fb->obj[i] = obj[i];
@@ -136,6 +137,7 @@ EXPORT_SYMBOL(drm_gem_fb_create_handle);* @dev: DRM device * @fb: framebuffer object * @file: DRM file that holds the GEM handle(s) backing the framebuffer +* @info: pixel format information * @mode_cmd: Metadata from the userspace framebuffer creation request * @funcs: vtable to be used for the new framebuffer object *
@@ -152,21 +154,14 @@ EXPORT_SYMBOL(drm_gem_fb_create_handle);int drm_gem_fb_init_with_funcs (struct drm_device *dev,struct drm_framebuffer *fb,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,const struct drm_framebuffer_funcs *funcs) { -const struct drm_format_info *info;struct drm_gem_object *objs[DRM_FORMAT_MAX_PLANES ];unsigned int i;int ret; - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -if (!info) { -drm_dbg_kms (dev,"Failed to get FB format info\n" ); -return -EINVAL ; - } -if (drm_drv_uses_atomic_modeset (dev) && !drm_any_plane_has_format (dev, mode_cmd->pixel_format, mode_cmd->modifier[0 ])) {
@@ -201,7 +196,7 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev, } } - ret =drm_gem_fb_init (dev, fb, mode_cmd, objs, i, funcs); + ret =drm_gem_fb_init (dev, fb, info, mode_cmd, objs, i, funcs);if (ret) goto err_gem_object_put;
@@ -222,6 +217,7 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_init_with_funcs);* callback * @dev: DRM device * @file: DRM file that holds the GEM handle(s) backing the framebuffer +* @info: pixel format information * @mode_cmd: Metadata from the userspace framebuffer creation request * @funcs: vtable to be used for the new framebuffer object *
@@ -234,6 +230,7 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_init_with_funcs);*/ struct drm_framebuffer *drm_gem_fb_create_with_funcs (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,const struct drm_framebuffer_funcs *funcs) {
@@ -244,7 +241,7 @@ drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file,if (!fb)return ERR_PTR (-ENOMEM ); - ret =drm_gem_fb_init_with_funcs (dev, fb, file, mode_cmd, funcs); + ret =drm_gem_fb_init_with_funcs (dev, fb, file, info, mode_cmd, funcs);if (ret) {kfree (fb);return ERR_PTR (ret);
@@ -287,7 +284,7 @@ drm_gem_fb_create(struct drm_device *dev, struct drm_file *file,const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd) { - return drm_gem_fb_create_with_funcs(dev, file, mode_cmd, + return drm_gem_fb_create_with_funcs(dev, file, info, mode_cmd, &drm_gem_fb_funcs); }EXPORT_SYMBOL_GPL (drm_gem_fb_create);
@@ -327,7 +324,7 @@ drm_gem_fb_create_with_dirty(struct drm_device *dev, struct drm_file *file,const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd) { - return drm_gem_fb_create_with_funcs(dev, file, mode_cmd, + return drm_gem_fb_create_with_funcs(dev, file, info, mode_cmd, &drm_gem_fb_funcs_dirtyfb); }EXPORT_SYMBOL_GPL (drm_gem_fb_create_with_dirty);
drivers/gpu/drm/qxl/qxl_display.c +1 -1
@@ -1179,7 +1179,7 @@ qxl_user_framebuffer_create(struct drm_device *dev,const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd) { - return drm_gem_fb_create_with_funcs(dev, file_priv, mode_cmd, + return drm_gem_fb_create_with_funcs(dev, file_priv, info, mode_cmd, &qxl_fb_funcs); }
drivers/gpu/drm/rockchip/rockchip_drm_fb.c +2 -1
@@ -40,7 +40,8 @@ rockchip_fb_create(struct drm_device *dev, struct drm_file *file,if (!afbc_fb)return ERR_PTR (-ENOMEM ); - ret =drm_gem_fb_init_with_funcs (dev, &afbc_fb->base, file, mode_cmd, + ret =drm_gem_fb_init_with_funcs (dev, &afbc_fb->base, + file, info, mode_cmd, &rockchip_drm_fb_funcs);if (ret) {kfree (afbc_fb);
drivers/gpu/drm/xen/xen_drm_front_kms.c +1 -1
@@ -62,7 +62,7 @@ fb_create(struct drm_device *dev, struct drm_file *filp,struct drm_gem_object *gem_obj;int ret; - fb =drm_gem_fb_create_with_funcs (dev, filp, mode_cmd, &fb_funcs); + fb =drm_gem_fb_create_with_funcs (dev, filp, info, mode_cmd, &fb_funcs);if (IS_ERR (fb))return fb;
include/drm/drm_gem_framebuffer_helper.h +2 -0
@@ -25,10 +25,12 @@ int drm_gem_fb_create_handle(struct drm_framebuffer *fb, struct drm_file *file,int drm_gem_fb_init_with_funcs (struct drm_device *dev,struct drm_framebuffer *fb,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,const struct drm_framebuffer_funcs *funcs);struct drm_framebuffer *drm_gem_fb_create_with_funcs (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,const struct drm_framebuffer_funcs *funcs); struct drm_framebuffer *
Signature · 1 line
2.49.0
Re: [PATCH v2 07/19] drm/gem: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
Quoted 3 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Pass along the format info from .fb_create() to aliminate the
s/aliminate/eliminate/
Quoted 4 lines
redundant
drm_get_format_info()calls from the gem fb code.v2: Fix kernel docs (Laurent)
Quoted 11 lines
Cc Dave Airlie <[email protected]>Cc Gerd Hoffmann <[email protected]>Cc Sandy Huang <[email protected]>Cc "Heiko Stübner" <[email protected]>Cc Andy Yan <[email protected]>Cc Oleksandr Andrushchenko <[email protected]>Cc Laurent Pinchart <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
Quoted 169 lines
--- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 23 +++++++++----------- drivers/gpu/drm/qxl/qxl_display.c | 2 +- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 3 ++- drivers/gpu/drm/xen/xen_drm_front_kms.c | 2 +- include/drm/drm_gem_framebuffer_helper.h | 2 ++ 5 files changed, 16 insertions(+), 16 deletions(-)drivers/gpu/drm/drm_gem_framebuffer_helper.c +10
-13@@ -68,6 +68,7 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_get_obj);static int drm_gem_fb_init (struct drm_device *dev,struct drm_framebuffer *fb, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object **obj,unsigned int num_planes,const struct drm_framebuffer_funcs *funcs)@@ -75,7 +76,7 @@ drm_gem_fb_init(struct drm_device *dev,unsigned int i;int ret; -drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb, info, mode_cmd);for (i =0 ; i < num_planes; i++) fb->obj[i] = obj[i];@@ -136,6 +137,7 @@ EXPORT_SYMBOL(drm_gem_fb_create_handle);* @dev: DRM device * @fb: framebuffer object * @file: DRM file that holds the GEM handle(s) backing the framebuffer +* @info: pixel format information * @mode_cmd: Metadata from the userspace framebuffer creation request * @funcs: vtable to be used for the new framebuffer object * @@ -152,21 +154,14 @@ EXPORT_SYMBOL(drm_gem_fb_create_handle);int drm_gem_fb_init_with_funcs (struct drm_device *dev,struct drm_framebuffer *fb,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,const struct drm_framebuffer_funcs *funcs) { -const struct drm_format_info *info;struct drm_gem_object *objs[DRM_FORMAT_MAX_PLANES ];unsigned int i;int ret; - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -if (!info) { -drm_dbg_kms (dev,"Failed to get FB format info\n" ); -return -EINVAL ; - } -if (drm_drv_uses_atomic_modeset (dev) && !drm_any_plane_has_format (dev, mode_cmd->pixel_format, mode_cmd->modifier[0 ])) {@@ -201,7 +196,7 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev, } } - ret =drm_gem_fb_init (dev, fb, mode_cmd, objs, i, funcs); + ret =drm_gem_fb_init (dev, fb, info, mode_cmd, objs, i, funcs);if (ret) goto err_gem_object_put;@@ -222,6 +217,7 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_init_with_funcs);* callback * @dev: DRM device * @file: DRM file that holds the GEM handle(s) backing the framebuffer +* @info: pixel format information * @mode_cmd: Metadata from the userspace framebuffer creation request * @funcs: vtable to be used for the new framebuffer object * @@ -234,6 +230,7 @@ EXPORT_SYMBOL_GPL(drm_gem_fb_init_with_funcs);*/ struct drm_framebuffer *drm_gem_fb_create_with_funcs (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,const struct drm_framebuffer_funcs *funcs) {@@ -244,7 +241,7 @@ drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file,if (!fb)return ERR_PTR (-ENOMEM ); - ret =drm_gem_fb_init_with_funcs (dev, fb, file, mode_cmd, funcs); + ret =drm_gem_fb_init_with_funcs (dev, fb, file, info, mode_cmd, funcs);if (ret) {kfree (fb);return ERR_PTR (ret);@@ -287,7 +284,7 @@ drm_gem_fb_create(struct drm_device *dev, struct drm_file *file,const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd) { - return drm_gem_fb_create_with_funcs(dev, file, mode_cmd, + return drm_gem_fb_create_with_funcs(dev, file, info, mode_cmd, &drm_gem_fb_funcs); }EXPORT_SYMBOL_GPL (drm_gem_fb_create);@@ -327,7 +324,7 @@ drm_gem_fb_create_with_dirty(struct drm_device *dev, struct drm_file *file,const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd) { - return drm_gem_fb_create_with_funcs(dev, file, mode_cmd, + return drm_gem_fb_create_with_funcs(dev, file, info, mode_cmd, &drm_gem_fb_funcs_dirtyfb); }EXPORT_SYMBOL_GPL (drm_gem_fb_create_with_dirty);drivers/gpu/drm/qxl/qxl_display.c +1
-1@@ -1179,7 +1179,7 @@ qxl_user_framebuffer_create(struct drm_device *dev,const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd) { - return drm_gem_fb_create_with_funcs(dev, file_priv, mode_cmd, + return drm_gem_fb_create_with_funcs(dev, file_priv, info, mode_cmd, &qxl_fb_funcs); }drivers/gpu/drm/rockchip/rockchip_drm_fb.c +2
-1@@ -40,7 +40,8 @@ rockchip_fb_create(struct drm_device *dev, struct drm_file *file,if (!afbc_fb)return ERR_PTR (-ENOMEM ); - ret =drm_gem_fb_init_with_funcs (dev, &afbc_fb->base, file, mode_cmd, + ret =drm_gem_fb_init_with_funcs (dev, &afbc_fb->base, + file, info, mode_cmd, &rockchip_drm_fb_funcs);if (ret) {kfree (afbc_fb);drivers/gpu/drm/xen/xen_drm_front_kms.c +1
-1@@ -62,7 +62,7 @@ fb_create(struct drm_device *dev, struct drm_file *filp,struct drm_gem_object *gem_obj;int ret; - fb =drm_gem_fb_create_with_funcs (dev, filp, mode_cmd, &fb_funcs); + fb =drm_gem_fb_create_with_funcs (dev, filp, info, mode_cmd, &fb_funcs);if (IS_ERR (fb))return fb;include/drm/drm_gem_framebuffer_helper.h +2
-0@@ -25,10 +25,12 @@ int drm_gem_fb_create_handle(struct drm_framebuffer *fb, struct drm_file *file,int drm_gem_fb_init_with_funcs (struct drm_device *dev,struct drm_framebuffer *fb,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,const struct drm_framebuffer_funcs *funcs);struct drm_framebuffer *drm_gem_fb_create_with_funcs (struct drm_device *dev,struct drm_file *file, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,const struct drm_framebuffer_funcs *funcs); struct drm_framebuffer *
Signature · 3 lines
Regards, Laurent Pinchart
PATCH v2 8/19 drm/gem/afbc: Eliminate redundant drm_get_format_info()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Pass along the format info from .fb_create() to aliminate the redundant drm_get_format_info() calls from the afbc code.
--- drivers/gpu/drm/drm_gem_framebuffer_helper.c | 18 ++++++------------ drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 2 +- include/drm/drm_gem_framebuffer_helper.h | 1 + 3 files changed, 8 insertions(+), 13 deletions(-)
drivers/gpu/drm/drm_gem_framebuffer_helper.c +6 -12
@@ -500,13 +500,9 @@ EXPORT_SYMBOL(drm_gem_fb_end_cpu_access);// TODO Drop this function and replace by drm_format_info_bpp() once all // DRM_FORMAT_* provide proper block info in drivers/gpu/drm/drm_fourcc.c static __u32 drm_gem_afbc_get_bpp (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) { -const struct drm_format_info *info; - - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -switch (info->format) {case DRM_FORMAT_YUV420_8BIT :return 12 ;
@@ -520,6 +516,7 @@ static __u32 drm_gem_afbc_get_bpp(struct drm_device *dev, }static int drm_gem_afbc_min_size (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_afbc_framebuffer *afbc_fb) {
@@ -560,7 +557,7 @@ static int drm_gem_afbc_min_size(struct drm_device *dev, afbc_fb->aligned_height =ALIGN (mode_cmd->height, h_alignment); afbc_fb->offset = mode_cmd->offsets[0 ]; - bpp =drm_gem_afbc_get_bpp (dev, mode_cmd); + bpp =drm_gem_afbc_get_bpp (dev, info, mode_cmd);if (!bpp) {drm_dbg_kms (dev,"Invalid AFBC bpp value: %d\n" , bpp);return -EINVAL ;
@@ -582,6 +579,7 @@ static int drm_gem_afbc_min_size(struct drm_device *dev,* * @dev: DRM device * @afbc_fb: afbc-specific framebuffer +* @info: pixel format information * @mode_cmd: Metadata from the userspace framebuffer creation request * @afbc_fb: afbc framebuffer *
@@ -595,20 +593,16 @@ static int drm_gem_afbc_min_size(struct drm_device *dev,* Zero on success or a negative error value on failure. */ int drm_gem_fb_afbc_init (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_afbc_framebuffer *afbc_fb) { -const struct drm_format_info *info;struct drm_gem_object **objs;int ret; objs = afbc_fb->base.obj; - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -if (!info) -return -EINVAL ; - ret =drm_gem_afbc_min_size (dev, mode_cmd, afbc_fb); + ret =drm_gem_afbc_min_size (dev, info, mode_cmd, afbc_fb);if (ret <0 )return ret;
drivers/gpu/drm/rockchip/rockchip_drm_fb.c +1 -1
@@ -49,7 +49,7 @@ rockchip_fb_create(struct drm_device *dev, struct drm_file *file, }if (drm_is_afbc (mode_cmd->modifier[0 ])) { - ret =drm_gem_fb_afbc_init (dev, mode_cmd, afbc_fb); + ret =drm_gem_fb_afbc_init (dev, info, mode_cmd, afbc_fb);if (ret) {drm_framebuffer_put (&afbc_fb->base);return ERR_PTR (ret);
include/drm/drm_gem_framebuffer_helper.h +1 -0
@@ -52,6 +52,7 @@ void drm_gem_fb_end_cpu_access(struct drm_framebuffer *fb, enum dma_data_directi (((modifier) & AFBC_VENDOR_AND_TYPE_MASK) == DRM_FORMAT_MOD_ARM_AFBC(0))int drm_gem_fb_afbc_init (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_afbc_framebuffer *afbc_fb);
Signature · 1 line
2.49.0
PATCH v2 9/19 drm/amdgpu: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup.
--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +3 -2
@@ -1196,13 +1196,14 @@ static int amdgpu_display_get_fb_info(const struct amdgpu_framebuffer *amdgpu_fbstatic int amdgpu_display_gem_fb_verify_and_init (struct drm_device *dev,struct amdgpu_framebuffer *rfb,struct drm_file *file_priv, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object *obj) {int ret; rfb->base.obj[0 ] = obj; -drm_helper_mode_fill_fb_struct (dev, &rfb->base,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &rfb->base, info, mode_cmd);/* Verify that the modifier is supported. */ if (!drm_any_plane_has_format (dev, mode_cmd->pixel_format, mode_cmd->modifier[0 ])) {
@@ -1331,7 +1332,7 @@ amdgpu_display_user_framebuffer_create(struct drm_device *dev, } ret =amdgpu_display_gem_fb_verify_and_init (dev, amdgpu_fb, file_priv, - mode_cmd, obj); + info, mode_cmd, obj);if (ret) {kfree (amdgpu_fb);drm_gem_object_put (obj);
Signature · 1 line
2.49.0
RE: [PATCH v2 09/19] drm/amdgpu: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
[Public]
Quoted 13 lines
-----Original Message-----
From: amd-gfx <[email protected]> On Behalf Of Ville Syrjala
Sent: Tuesday, July 1, 2025 5:07 AM
To: [email protected]
Cc: [email protected]; [email protected]; Deucher, Alexander <[email protected]>; [email protected]; Thomas Zimmermann <[email protected]>
Subject: [PATCH v2 09/19] drm/amdgpu: Pass along the format info from .fb_create() todrm_helper_mode_fill_fb_struct()From: Ville Syrjälä <[email protected]>
Quoted 7 lines
Plumb the format info from .fb_create() all the way to
drm_helper_mode_fill_fb_struct()to avoid the redundant lookup.Cc Alex Deucher <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
Series is:
Feel free to take the amdgpu/radeon bits via drm-misc.
Alex
Quoted 39 lines
--- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +0
-0@@ -1196,13 +1196,14 @@ static int amdgpu_display_get_fb_info(const struct
amdgpu_framebuffer*amdgpu_fbstatic int amdgpu_display_gem_fb_verify_and_init(structdrm_device*dev,
structamdgpu_framebuffer*rfb, structdrm_file*file_priv,
+ const structdrm_format_info*info,
const structdrm_mode_fb_cmd2*mode_cmd,
structdrm_gem_object*obj){ int ret; rfb->base.obj[0] = obj;drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +2
-2-drm_helper_mode_fill_fb_struct (dev, &rfb->base,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &rfb->base, info, mode_cmd);/* Verify that the modifier is supported. */ if (!drm_any_plane_has_format (dev, mode_cmd->pixel_format, mode_cmd->modifier[0 ])) {@@ -1331,7 +1332,7 @@ amdgpu_display_user_framebuffer_create(structdrm_device *dev, } ret =amdgpu_display_gem_fb_verify_and_init (dev, amdgpu_fb, file_priv, - mode_cmd, obj); + info, mode_cmd, obj);if (ret) {kfree (amdgpu_fb);drm_gem_object_put(obj);--
2.49.0
PATCH v2 10/19 drm/armada: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup.
For the fbdev case a manual drm_get_format_info() lookup is needed.
--- drivers/gpu/drm/armada/armada_fb.c | 8 +++++--- drivers/gpu/drm/armada/armada_fb.h | 1 + drivers/gpu/drm/armada/armada_fbdev.c | 5 ++++- 3 files changed, 10 insertions(+), 4 deletions(-)
drivers/gpu/drm/armada/armada_fb.c +5 -3
@@ -18,7 +18,9 @@ static const struct drm_framebuffer_funcs armada_fb_funcs = { };struct armada_framebuffer *armada_framebuffer_create (struct drm_device *dev, -const struct drm_mode_fb_cmd2 *mode,struct armada_gem_object *obj) +const struct drm_format_info *info, +const struct drm_mode_fb_cmd2 *mode, +struct armada_gem_object *obj) {struct armada_framebuffer *dfb;uint8_t format, config;
@@ -64,7 +66,7 @@ struct armada_framebuffer *armada_framebuffer_create(struct drm_device *dev, dfb->mod = config; dfb->fb.obj[0 ] = &obj->obj; -drm_helper_mode_fill_fb_struct (dev, &dfb->fb,NULL , mode); +drm_helper_mode_fill_fb_struct (dev, &dfb->fb, info, mode); ret =drm_framebuffer_init (dev, &dfb->fb, &armada_fb_funcs);if (ret) {
@@ -122,7 +124,7 @@ struct drm_framebuffer *armada_fb_create(struct drm_device *dev, goto err_unref; } - dfb =armada_framebuffer_create (dev, mode, obj); + dfb =armada_framebuffer_create (dev, info, mode, obj);if (IS_ERR (dfb)) { ret =PTR_ERR (dfb); goto err;
drivers/gpu/drm/armada/armada_fb.h +1 -0
@@ -17,6 +17,7 @@ struct armada_framebuffer {#define drm_fb_obj (fb) drm_to_armada_gem((fb)->obj[0])struct armada_framebuffer *armada_framebuffer_create (struct drm_device *, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *,struct armada_gem_object *); struct drm_framebuffer *armada_fb_create(struct drm_device *dev, struct drm_file *dfile, const struct drm_format_info *info,
drivers/gpu/drm/armada/armada_fbdev.c +4 -1
@@ -78,7 +78,10 @@ int armada_fbdev_driver_fbdev_probe(struct drm_fb_helper *fbh,return -ENOMEM ; } - dfb =armada_framebuffer_create (dev, &mode, obj); + dfb =armada_framebuffer_create (dev, +drm_get_format_info (dev, mode.pixel_format, + mode.modifier[0 ]), + &mode, obj);/* * A reference is now held by the framebuffer object if
Signature · 1 line
2.49.0
PATCH v2 11/19 drm/exynos: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup.
For the fbdev case a manual drm_get_format_info() lookup is needed.
--- drivers/gpu/drm/exynos/exynos_drm_fb.c | 5 +++-- drivers/gpu/drm/exynos/exynos_drm_fb.h | 1 + drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-)
drivers/gpu/drm/exynos/exynos_drm_fb.c +3 -2
@@ -56,6 +56,7 @@ static const struct drm_framebuffer_funcs exynos_drm_fb_funcs = {struct drm_framebuffer *exynos_drm_framebuffer_init (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct exynos_drm_gem **exynos_gem,int count)
@@ -76,7 +77,7 @@ exynos_drm_framebuffer_init(struct drm_device *dev, fb->obj[i] = &exynos_gem[i]->base; } -drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb, info, mode_cmd); ret =drm_framebuffer_init (dev, fb, &exynos_drm_fb_funcs);if (ret <0 ) {
@@ -124,7 +125,7 @@ exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, } } - fb =exynos_drm_framebuffer_init (dev, mode_cmd, exynos_gem, i); + fb =exynos_drm_framebuffer_init (dev, info, mode_cmd, exynos_gem, i);if (IS_ERR (fb)) { ret =PTR_ERR (fb); goto err;
drivers/gpu/drm/exynos/exynos_drm_fb.h +1 -0
@@ -14,6 +14,7 @@struct drm_framebuffer *exynos_drm_framebuffer_init (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct exynos_drm_gem **exynos_gem,int count);
drivers/gpu/drm/exynos/exynos_drm_fbdev.c +4 -1
@@ -116,7 +116,10 @@ int exynos_drm_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,return PTR_ERR (exynos_gem); helper->fb = -exynos_drm_framebuffer_init (dev, &mode_cmd, &exynos_gem,1 ); +exynos_drm_framebuffer_init (dev, +drm_get_format_info (dev, mode_cmd.pixel_format, + mode_cmd.modifier[0 ]), + &mode_cmd, &exynos_gem,1 );if (IS_ERR (helper->fb)) {DRM_DEV_ERROR (dev->dev,"failed to create drm framebuffer.\n" ); ret =PTR_ERR (helper->fb);
Signature · 1 line
2.49.0
PATCH v2 12/19 drm/gma500: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup.
For the fbdev case a manual drm_get_format_info() lookup is needed.
--- drivers/gpu/drm/gma500/fbdev.c | 5 ++++- drivers/gpu/drm/gma500/framebuffer.c | 14 +++++++------- drivers/gpu/drm/gma500/psb_drv.h | 1 + 3 files changed, 12 insertions(+), 8 deletions(-)
drivers/gpu/drm/gma500/fbdev.c +4 -1
@@ -203,7 +203,10 @@ int psb_fbdev_driver_fbdev_probe(struct drm_fb_helper *fb_helper,return PTR_ERR (backing); obj = &backing->base; - fb =psb_framebuffer_create (dev, &mode_cmd, obj); + fb =psb_framebuffer_create (dev, +drm_get_format_info (dev, mode_cmd.pixel_format, + mode_cmd.modifier[0 ]), + &mode_cmd, obj);if (IS_ERR (fb)) { ret =PTR_ERR (fb); goto err_drm_gem_object_put;
drivers/gpu/drm/gma500/framebuffer.c +7 -7
@@ -29,25 +29,23 @@ static const struct drm_framebuffer_funcs psb_fb_funcs = {*/ static int psb_framebuffer_init (struct drm_device *dev,struct drm_framebuffer *fb, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object *obj) { -const struct drm_format_info *info;int ret;/* * Reject unknown formats, YUV formats, and formats with more than * 4 bytes per pixel. */ - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -if (!info || !info->depth || info->cpp[0 ] >4 ) +if (!info->depth || info->cpp[0 ] >4 )return -EINVAL ;if (mode_cmd->pitches[0 ] &63 )return -EINVAL ; -drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb, info, mode_cmd); fb->obj[0 ] = obj; ret =drm_framebuffer_init (dev, fb, &psb_fb_funcs);if (ret) {
@@ -60,6 +58,7 @@ static int psb_framebuffer_init(struct drm_device *dev,/** * psb_framebuffer_create - create a framebuffer backed by gt * @dev: our DRM device +* @info: pixel format information * @mode_cmd: the description of the requested mode * @obj: the backing object *
@@ -69,6 +68,7 @@ static int psb_framebuffer_init(struct drm_device *dev,* TODO: review object references */ struct drm_framebuffer *psb_framebuffer_create (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object *obj) {
@@ -79,7 +79,7 @@ struct drm_framebuffer *psb_framebuffer_create(struct drm_device *dev,if (!fb)return ERR_PTR (-ENOMEM ); - ret =psb_framebuffer_init (dev, fb, mode_cmd, obj); + ret =psb_framebuffer_init (dev, fb, info, mode_cmd, obj);if (ret) {kfree (fb);return ERR_PTR (ret);
@@ -112,7 +112,7 @@ static struct drm_framebuffer *psb_user_framebuffer_createreturn ERR_PTR (-ENOENT );/* Let the core code do all the work */ - fb =psb_framebuffer_create (dev, cmd, obj); + fb =psb_framebuffer_create (dev, info, cmd, obj);if (IS_ERR (fb))drm_gem_object_put (obj);
drivers/gpu/drm/gma500/psb_drv.h +1 -0
@@ -594,6 +594,7 @@ extern void psb_modeset_cleanup(struct drm_device *dev);/* framebuffer */ struct drm_framebuffer *psb_framebuffer_create (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object *obj);
Signature · 1 line
2.49.0
Re: [PATCH v2 12/19] drm/gma500: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
Quoted 7 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to
drm_helper_mode_fill_fb_struct()to avoid the redundant lookup.
Quoted 6 lines
For the fbdev case a manual
drm_get_format_info()lookup is needed.Cc Patrik Jakobsson <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
Quoted 104 lines
--- drivers/gpu/drm/gma500/fbdev.c | 5 ++++- drivers/gpu/drm/gma500/framebuffer.c | 14 +++++++------- drivers/gpu/drm/gma500/psb_drv.h | 1 + 3 files changed, 12 insertions(+), 8 deletions(-)drivers/gpu/drm/gma500/fbdev.c +4
-1@@ -203,7 +203,10 @@ int psb_fbdev_driver_fbdev_probe(struct drm_fb_helper *fb_helper,return PTR_ERR (backing); obj = &backing->base; - fb =psb_framebuffer_create (dev, &mode_cmd, obj); + fb =psb_framebuffer_create (dev, +drm_get_format_info (dev, mode_cmd.pixel_format, + mode_cmd.modifier[0 ]), + &mode_cmd, obj);if (IS_ERR (fb)) { ret =PTR_ERR (fb); goto err_drm_gem_object_put;drivers/gpu/drm/gma500/framebuffer.c +7
-7@@ -29,25 +29,23 @@ static const struct drm_framebuffer_funcs psb_fb_funcs = {*/ static int psb_framebuffer_init (struct drm_device *dev,struct drm_framebuffer *fb, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object *obj) { -const struct drm_format_info *info;int ret;/* * Reject unknown formats, YUV formats, and formats with more than * 4 bytes per pixel. */ - info =drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); -if (!info || !info->depth || info->cpp[0 ] >4 ) +if (!info->depth || info->cpp[0 ] >4 )return -EINVAL ;if (mode_cmd->pitches[0 ] &63 )return -EINVAL ; -drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb, info, mode_cmd); fb->obj[0 ] = obj; ret =drm_framebuffer_init (dev, fb, &psb_fb_funcs);if (ret) {@@ -60,6 +58,7 @@ static int psb_framebuffer_init(struct drm_device *dev,/** * psb_framebuffer_create - create a framebuffer backed by gt * @dev: our DRM device +* @info: pixel format information * @mode_cmd: the description of the requested mode * @obj: the backing object * @@ -69,6 +68,7 @@ static int psb_framebuffer_init(struct drm_device *dev,* TODO: review object references */ struct drm_framebuffer *psb_framebuffer_create (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object *obj) {@@ -79,7 +79,7 @@ struct drm_framebuffer *psb_framebuffer_create(struct drm_device *dev,if (!fb)return ERR_PTR (-ENOMEM ); - ret =psb_framebuffer_init (dev, fb, mode_cmd, obj); + ret =psb_framebuffer_init (dev, fb, info, mode_cmd, obj);if (ret) {kfree (fb);return ERR_PTR (ret);@@ -112,7 +112,7 @@ static struct drm_framebuffer *psb_user_framebuffer_createreturn ERR_PTR (-ENOENT );/* Let the core code do all the work */ - fb =psb_framebuffer_create (dev, cmd, obj); + fb =psb_framebuffer_create (dev, info, cmd, obj);if (IS_ERR (fb))drm_gem_object_put (obj);drivers/gpu/drm/gma500/psb_drv.h +1
-1@@ -594,6 +594,7 @@ extern void psb_modeset_cleanup(struct drm_device *dev);/* framebuffer */ struct drm_framebuffer *psb_framebuffer_create (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object *obj); --2.49.0
PATCH v2 13/19 drm/i915: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup.
For the fbdev case a manual drm_get_format_info() lookup is needed.
--- drivers/gpu/drm/i915/display/intel_fb.c | 8 +++++--- drivers/gpu/drm/i915/display/intel_fb.h | 2 ++ drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 6 +++++- drivers/gpu/drm/i915/display/intel_plane_initial.c | 3 ++- drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 6 +++++- drivers/gpu/drm/xe/display/xe_plane_initial.c | 2 +- 6 files changed, 20 insertions(+), 7 deletions(-)
drivers/gpu/drm/i915/display/intel_fb.c +5 -3
@@ -2207,6 +2207,7 @@ static const struct drm_framebuffer_funcs intel_fb_funcs = {int intel_framebuffer_init (struct intel_framebuffer *intel_fb,struct drm_gem_object *obj, +const struct drm_format_info *info,struct drm_mode_fb_cmd2 *mode_cmd) {struct intel_display *display =to_intel_display (obj->dev);
@@ -2254,7 +2255,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb, goto err_frontbuffer_put; } -drm_helper_mode_fill_fb_struct (display->drm, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (display->drm, fb, info, mode_cmd);for (i =0 ; i < fb->format->num_planes; i++) {unsigned int stride_alignment;
@@ -2335,7 +2336,7 @@ intel_user_framebuffer_create(struct drm_device *dev,if (IS_ERR (obj))return ERR_CAST (obj); - fb =intel_framebuffer_create (obj, &mode_cmd); + fb =intel_framebuffer_create (obj, info, &mode_cmd);drm_gem_object_put (obj);return fb;
@@ -2343,6 +2344,7 @@ intel_user_framebuffer_create(struct drm_device *dev,struct drm_framebuffer *intel_framebuffer_create (struct drm_gem_object *obj, +const struct drm_format_info *info,struct drm_mode_fb_cmd2 *mode_cmd) {struct intel_framebuffer *intel_fb;
@@ -2352,7 +2354,7 @@ intel_framebuffer_create(struct drm_gem_object *obj,if (!intel_fb)return ERR_PTR (-ENOMEM ); - ret =intel_framebuffer_init (intel_fb, obj, mode_cmd); + ret =intel_framebuffer_init (intel_fb, obj, info, mode_cmd);if (ret) goto err;
drivers/gpu/drm/i915/display/intel_fb.h +2 -0
@@ -102,9 +102,11 @@ void intel_add_fb_offsets(int *x, int *y,int intel_framebuffer_init (struct intel_framebuffer *ifb,struct drm_gem_object *obj, +const struct drm_format_info *info,struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer *intel_framebuffer_create (struct drm_gem_object *obj, +const struct drm_format_info *info,struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer * intel_user_framebuffer_create(struct drm_device *dev,
drivers/gpu/drm/i915/display/intel_fbdev_fb.c +5 -1
@@ -62,7 +62,11 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper,return ERR_PTR (-ENOMEM ); } - fb =intel_framebuffer_create (intel_bo_to_drm_bo (obj), &mode_cmd); + fb =intel_framebuffer_create (intel_bo_to_drm_bo (obj), +drm_get_format_info (display->drm, + mode_cmd.pixel_format, + mode_cmd.modifier[0 ]), + &mode_cmd);i915_gem_object_put (obj);return to_intel_framebuffer (fb);
drivers/gpu/drm/i915/display/intel_plane_initial.c +2 -1
@@ -289,7 +289,8 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc, mode_cmd.flags =DRM_MODE_FB_MODIFIERS ;if (intel_framebuffer_init (to_intel_framebuffer (fb), -intel_bo_to_drm_bo (vma->obj), &mode_cmd)) { +intel_bo_to_drm_bo (vma->obj), + fb->format, &mode_cmd)) {drm_dbg_kms (display->drm,"intel fb init failed\n" ); goto err_vma; }
drivers/gpu/drm/xe/display/intel_fbdev_fb.c +5 -1
@@ -66,7 +66,11 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper, goto err; } - fb =intel_framebuffer_create (&obj->ttm.base, &mode_cmd); + fb =intel_framebuffer_create (&obj->ttm.base, +drm_get_format_info (dev, + mode_cmd.pixel_format, + mode_cmd.modifier[0 ]), + &mode_cmd);if (IS_ERR (fb)) {xe_bo_unpin_map_no_vm (obj); goto err;
drivers/gpu/drm/xe/display/xe_plane_initial.c +1 -1
@@ -184,7 +184,7 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,return false;if (intel_framebuffer_init (to_intel_framebuffer (fb), - &bo->ttm.base, &mode_cmd)) { + &bo->ttm.base, fb->format, &mode_cmd)) {drm_dbg_kms (&xe->drm,"intel fb init failed\n" ); goto err_bo; }
Signature · 1 line
2.49.0
Re: [PATCH v2 13/19] drm/i915: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
Quoted 11 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to
drm_helper_mode_fill_fb_struct()to avoid the redundant lookup.For the fbdev case a manual
drm_get_format_info()lookup is needed.Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
to get this through drm-misc
Quoted 136 lines
--- drivers/gpu/drm/i915/display/intel_fb.c | 8 +++++--- drivers/gpu/drm/i915/display/intel_fb.h | 2 ++ drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 6 +++++- drivers/gpu/drm/i915/display/intel_plane_initial.c | 3 ++- drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 6 +++++- drivers/gpu/drm/xe/display/xe_plane_initial.c | 2 +- 6 files changed, 20 insertions(+), 7 deletions(-)drivers/gpu/drm/i915/display/intel_fb.c +5
-3@@ -2207,6 +2207,7 @@ static const struct drm_framebuffer_funcs intel_fb_funcs = {int intel_framebuffer_init (struct intel_framebuffer *intel_fb,struct drm_gem_object *obj, +const struct drm_format_info *info,struct drm_mode_fb_cmd2 *mode_cmd) {struct intel_display *display =to_intel_display (obj->dev);@@ -2254,7 +2255,7 @@ int intel_framebuffer_init(struct intel_framebuffer *intel_fb, goto err_frontbuffer_put; } -drm_helper_mode_fill_fb_struct (display->drm, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (display->drm, fb, info, mode_cmd);for (i =0 ; i < fb->format->num_planes; i++) {unsigned int stride_alignment;@@ -2335,7 +2336,7 @@ intel_user_framebuffer_create(struct drm_device *dev,if (IS_ERR (obj))return ERR_CAST (obj); - fb =intel_framebuffer_create (obj, &mode_cmd); + fb =intel_framebuffer_create (obj, info, &mode_cmd);drm_gem_object_put (obj);return fb;@@ -2343,6 +2344,7 @@ intel_user_framebuffer_create(struct drm_device *dev,struct drm_framebuffer *intel_framebuffer_create (struct drm_gem_object *obj, +const struct drm_format_info *info,struct drm_mode_fb_cmd2 *mode_cmd) {struct intel_framebuffer *intel_fb;@@ -2352,7 +2354,7 @@ intel_framebuffer_create(struct drm_gem_object *obj,if (!intel_fb)return ERR_PTR (-ENOMEM ); - ret =intel_framebuffer_init (intel_fb, obj, mode_cmd); + ret =intel_framebuffer_init (intel_fb, obj, info, mode_cmd);if (ret) goto err;drivers/gpu/drm/i915/display/intel_fb.h +2
-0@@ -102,9 +102,11 @@ void intel_add_fb_offsets(int *x, int *y,int intel_framebuffer_init (struct intel_framebuffer *ifb,struct drm_gem_object *obj, +const struct drm_format_info *info,struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer *intel_framebuffer_create (struct drm_gem_object *obj, +const struct drm_format_info *info,struct drm_mode_fb_cmd2 *mode_cmd);struct drm_framebuffer * intel_user_framebuffer_create(struct drm_device *dev,drivers/gpu/drm/i915/display/intel_fbdev_fb.c +5
-1@@ -62,7 +62,11 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper,return ERR_PTR (-ENOMEM ); } - fb =intel_framebuffer_create (intel_bo_to_drm_bo (obj), &mode_cmd); + fb =intel_framebuffer_create (intel_bo_to_drm_bo (obj), +drm_get_format_info (display->drm, + mode_cmd.pixel_format, + mode_cmd.modifier[0 ]), + &mode_cmd);i915_gem_object_put (obj);return to_intel_framebuffer (fb);drivers/gpu/drm/i915/display/intel_plane_initial.c +2
-1@@ -289,7 +289,8 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc, mode_cmd.flags =DRM_MODE_FB_MODIFIERS ;if (intel_framebuffer_init (to_intel_framebuffer (fb), -intel_bo_to_drm_bo (vma->obj), &mode_cmd)) { +intel_bo_to_drm_bo (vma->obj), + fb->format, &mode_cmd)) {drm_dbg_kms (display->drm,"intel fb init failed\n" ); goto err_vma; }drivers/gpu/drm/xe/display/intel_fbdev_fb.c +5
-1@@ -66,7 +66,11 @@ struct intel_framebuffer *intel_fbdev_fb_alloc(struct drm_fb_helper *helper, goto err; } - fb =intel_framebuffer_create (&obj->ttm.base, &mode_cmd); + fb =intel_framebuffer_create (&obj->ttm.base, +drm_get_format_info (dev, + mode_cmd.pixel_format, + mode_cmd.modifier[0 ]), + &mode_cmd);if (IS_ERR (fb)) {xe_bo_unpin_map_no_vm (obj); goto err;drivers/gpu/drm/xe/display/xe_plane_initial.c +1
-1@@ -184,7 +184,7 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,return false;if (intel_framebuffer_init (to_intel_framebuffer (fb), - &bo->ttm.base, &mode_cmd)) { + &bo->ttm.base, fb->format, &mode_cmd)) {drm_dbg_kms (&xe->drm,"intel fb init failed\n" ); goto err_bo; }Signature · 1 line
2.49.0
PATCH v2 14/19 drm/komeda: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup.
--- drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c +1 -1
@@ -178,7 +178,7 @@ komeda_fb_create(struct drm_device *dev, struct drm_file *file,return ERR_PTR (-EINVAL ); } -drm_helper_mode_fill_fb_struct (dev, &kfb->base,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &kfb->base, info, mode_cmd);if (kfb->base.modifier) ret =komeda_fb_afbc_size_check (kfb, file, mode_cmd);
Signature · 1 line
2.49.0
Re: [PATCH v2 14/19] drm/komeda: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
Quoted 9 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to
drm_helper_mode_fill_fb_struct()to avoid the redundant lookup.Cc Liviu Dudau <[email protected]>Reviewed-by Thomas Zimmermann <[email protected]>Signed-off-by Ville Syrjälä <[email protected]>
Best regards,
Liviu
Quoted 20 lines
--- drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/gpu/drm/arm/display/komeda/komeda_framebuffer.c +1
-1@@ -178,7 +178,7 @@ komeda_fb_create(struct drm_device *dev, struct drm_file *file,return ERR_PTR (-EINVAL ); } -drm_helper_mode_fill_fb_struct (dev, &kfb->base,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &kfb->base, info, mode_cmd);if (kfb->base.modifier) ret =komeda_fb_afbc_size_check (kfb, file, mode_cmd);Signature · 1 line
2.49.0
Signature · 8 lines
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯PATCH v2 15/19 drm/msm: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookups.
For the fbdev case a manual drm_get_format_info() lookup is needed.
--- drivers/gpu/drm/msm/msm_fb.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
drivers/gpu/drm/msm/msm_fb.c +8 -6
@@ -30,6 +30,7 @@ struct msm_framebuffer {#define to_msm_framebuffer (x) container_of(x, struct msm_framebuffer, base)static struct drm_framebuffer *msm_framebuffer_init (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object **bos); static int msm_framebuffer_dirtyfb(struct drm_framebuffer *fb,
@@ -149,7 +150,7 @@ struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, } } - fb =msm_framebuffer_init (dev, mode_cmd, bos); + fb =msm_framebuffer_init (dev, info, mode_cmd, bos);if (IS_ERR (fb)) { ret =PTR_ERR (fb); goto out_unref;
@@ -164,11 +165,9 @@ struct drm_framebuffer *msm_framebuffer_create(struct drm_device *dev, }static struct drm_framebuffer *msm_framebuffer_init (struct drm_device *dev, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object **bos) { -const struct drm_format_info *info =drm_get_format_info (dev, - mode_cmd->pixel_format, - mode_cmd->modifier[0 ]);struct msm_drm_private *priv = dev->dev_private;struct msm_kms *kms = priv->kms;struct msm_framebuffer *msm_fb =NULL ;
@@ -222,7 +221,7 @@ static struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, msm_fb->base.obj[i] = bos[i]; } -drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb, info, mode_cmd); ret =drm_framebuffer_init (dev, fb, &msm_framebuffer_funcs);if (ret) {
@@ -271,7 +270,10 @@ msm_alloc_stolen_fb(struct drm_device *dev, int w, int h, int p, uint32_t formatmsm_gem_object_set_name (bo,"stolenfb" ); - fb =msm_framebuffer_init (dev, &mode_cmd, &bo); + fb =msm_framebuffer_init (dev, +drm_get_format_info (dev, mode_cmd.pixel_format, + mode_cmd.modifier[0 ]), + &mode_cmd, &bo);if (IS_ERR (fb)) {DRM_DEV_ERROR (dev->dev,"failed to allocate fb\n" );/* note: if fb creation failed, we can't rely on fb destroy
Signature · 1 line
2.49.0
PATCH v2 16/19 drm/tegra: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup.
For the fbdev case a manual drm_get_format_info() lookup is needed.
--- drivers/gpu/drm/tegra/drm.h | 1 + drivers/gpu/drm/tegra/fb.c | 5 +++-- drivers/gpu/drm/tegra/fbdev.c | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-)
drivers/gpu/drm/tegra/drm.h +1 -0
@@ -185,6 +185,7 @@ bool tegra_fb_is_bottom_up(struct drm_framebuffer *framebuffer);int tegra_fb_get_tiling (struct drm_framebuffer *framebuffer,struct tegra_bo_tiling *tiling);struct drm_framebuffer *tegra_fb_alloc (struct drm_device *drm, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct tegra_bo **planes,unsigned int num_planes);
drivers/gpu/drm/tegra/fb.c +3 -2
@@ -102,6 +102,7 @@ static const struct drm_framebuffer_funcs tegra_fb_funcs = { };struct drm_framebuffer *tegra_fb_alloc (struct drm_device *drm, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct tegra_bo **planes,unsigned int num_planes)
@@ -114,7 +115,7 @@ struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm,if (!fb)return ERR_PTR (-ENOMEM ); -drm_helper_mode_fill_fb_struct (drm, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (drm, fb, info, mode_cmd);for (i =0 ; i < fb->format->num_planes; i++) fb->obj[i] = &planes[i]->gem;
@@ -166,7 +167,7 @@ struct drm_framebuffer *tegra_fb_create(struct drm_device *drm, planes[i] =to_tegra_bo (gem); } - fb =tegra_fb_alloc (drm, cmd, planes, i); + fb =tegra_fb_alloc (drm, info, cmd, planes, i);if (IS_ERR (fb)) { err =PTR_ERR (fb); goto unreference;
drivers/gpu/drm/tegra/fbdev.c +3 -1
@@ -106,7 +106,9 @@ int tegra_fbdev_driver_fbdev_probe(struct drm_fb_helper *helper,return PTR_ERR (info); } - fb =tegra_fb_alloc (drm, &cmd, &bo,1 ); + fb =tegra_fb_alloc (drm, +drm_get_format_info (drm, cmd.pixel_format, cmd.modifier[0 ]), + &cmd, &bo,1 );if (IS_ERR (fb)) { err =PTR_ERR (fb); dev_err(drm->dev, "failed to allocate DRM framebuffer: %d\n",
Signature · 1 line
2.49.0
PATCH v2 17/19 drm/virtio: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup.
--- drivers/gpu/drm/virtio/virtgpu_display.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/gpu/drm/virtio/virtgpu_display.c +3 -2
@@ -66,6 +66,7 @@ static const struct drm_framebuffer_funcs virtio_gpu_fb_funcs = {static int virtio_gpu_framebuffer_init (struct drm_device *dev,struct virtio_gpu_framebuffer *vgfb, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd,struct drm_gem_object *obj) {
@@ -73,7 +74,7 @@ virtio_gpu_framebuffer_init(struct drm_device *dev, vgfb->base.obj[0 ] = obj; -drm_helper_mode_fill_fb_struct (dev, &vgfb->base,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &vgfb->base, info, mode_cmd); ret =drm_framebuffer_init (dev, &vgfb->base, &virtio_gpu_fb_funcs);if (ret) {
@@ -315,7 +316,7 @@ virtio_gpu_user_framebuffer_create(struct drm_device *dev,return ERR_PTR (-ENOMEM ); } - ret =virtio_gpu_framebuffer_init (dev, virtio_gpu_fb, mode_cmd, obj); + ret =virtio_gpu_framebuffer_init (dev, virtio_gpu_fb, info, mode_cmd, obj);if (ret) {kfree (virtio_gpu_fb);drm_gem_object_put (obj);
Signature · 1 line
2.49.0
PATCH v2 18/19 drm/vmwgfx: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct()
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Plumb the format info from .fb_create() all the way to drm_helper_mode_fill_fb_struct() to avoid the redundant lookup.
--- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 14 +++++++++----- drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 1 + 2 files changed, 10 insertions(+), 5 deletions(-)
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +9 -5
@@ -500,6 +500,7 @@ static const struct drm_framebuffer_funcs vmw_framebuffer_surface_funcs = {static int vmw_kms_new_framebuffer_surface (struct vmw_private *dev_priv,struct vmw_user_object *uo,struct vmw_framebuffer **out, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd)
@@ -548,7 +549,7 @@ static int vmw_kms_new_framebuffer_surface(struct vmw_private *dev_priv, goto out_err1; } -drm_helper_mode_fill_fb_struct (dev, &vfbs->base.base,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &vfbs->base.base, info, mode_cmd);memcpy (&vfbs->uo, uo,sizeof (vfbs->uo));vmw_user_object_ref (&vfbs->uo);
@@ -602,6 +603,7 @@ static const struct drm_framebuffer_funcs vmw_framebuffer_bo_funcs = {static int vmw_kms_new_framebuffer_bo (struct vmw_private *dev_priv,struct vmw_bo *bo,struct vmw_framebuffer **out, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd)
@@ -634,7 +636,7 @@ static int vmw_kms_new_framebuffer_bo(struct vmw_private *dev_priv, } vfbd->base.base.obj[0 ] = &bo->tbo.base; -drm_helper_mode_fill_fb_struct (dev, &vfbd->base.base,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, &vfbd->base.base, info, mode_cmd); vfbd->base.bo = true; vfbd->buffer =vmw_bo_reference (bo); *out = &vfbd->base;
@@ -679,11 +681,13 @@ vmw_kms_srf_ok(struct vmw_private *dev_priv, uint32_t width, uint32_t height)* @dev_priv: Pointer to device private struct. * @uo: Pointer to user object to wrap the kms framebuffer around. * Either the buffer or surface inside the user object must be NULL. +* @info: pixel format information. * @mode_cmd: Frame-buffer metadata. */ struct vmw_framebuffer *vmw_kms_new_framebuffer (struct vmw_private *dev_priv,struct vmw_user_object *uo, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd) {struct vmw_framebuffer *vfb =NULL ;
@@ -692,10 +696,10 @@ vmw_kms_new_framebuffer(struct vmw_private *dev_priv,/* Create the new framebuffer depending one what we have */ if (vmw_user_object_surface (uo)) { ret =vmw_kms_new_framebuffer_surface (dev_priv, uo, &vfb, - mode_cmd); + info, mode_cmd); }else if (uo->buffer) { ret =vmw_kms_new_framebuffer_bo (dev_priv, uo->buffer, &vfb, - mode_cmd); + info, mode_cmd); }else {BUG (); }
@@ -742,7 +746,7 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev, } - vfb =vmw_kms_new_framebuffer (dev_priv, &uo, mode_cmd); + vfb =vmw_kms_new_framebuffer (dev_priv, &uo, info, mode_cmd);if (IS_ERR (vfb)) { ret =PTR_ERR (vfb); goto err_out;
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h +1 -0
@@ -399,6 +399,7 @@ int vmw_kms_readback(struct vmw_private *dev_priv,struct vmw_framebuffer *vmw_kms_new_framebuffer (struct vmw_private *dev_priv,struct vmw_user_object *uo, +const struct drm_format_info *info,const struct drm_mode_fb_cmd2 *mode_cmd);void vmw_guess_mode_timing (struct drm_display_mode *mode);void vmw_kms_update_implicit_fb (struct vmw_private *dev_priv);
Signature · 1 line
2.49.0
PATCH v2 19/19 drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
In reply to Ville SyrjalaFrom: Ville Syrjälä <[email protected]>
Now that everyone passes along the format info to drm_helper_mode_fill_fb_struct() we can make this behaviour mandatory and drop the extra lookup.
--- drivers/gpu/drm/drm_modeset_helper.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/gpu/drm/drm_modeset_helper.c +1 -2
@@ -88,8 +88,7 @@ void drm_helper_mode_fill_fb_struct(struct drm_device *dev,int i; fb->dev = dev; - fb->format = info ? :drm_get_format_info (dev, mode_cmd->pixel_format, - mode_cmd->modifier[0 ]); + fb->format = info; fb->width = mode_cmd->width; fb->height = mode_cmd->height;for (i =0 ; i <4 ; i++) {
Signature · 1 line
2.49.0
Re: [PATCH v2 19/19] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Quoted 5 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Now that everyone passes along the format info to
drm_helper_mode_fill_fb_struct()we can make this behaviour mandatory and drop the extra lookup.
This patch, which is in -next as 41ab92d35ccd2d66, appears to be triggering warnings on TI x15 boards:
[ 11.866027] [drm] Initialized omapdrm 1.0.0 for omapdrm.0 on minor 0 [ 11.891723] omapdss error: HDMI I2C Master Error [ 11.896575] ------------[ cut here ]------------ [ 11.901245] WARNING: drivers/gpu/drm/drm_framebuffer.c:870 at drm_framebuffer_init+0x1f0/0x260, CPU#1: udevd/159
...
[ 11.941406] drm_framebuffer_init from omap_framebuffer_init+0x1b8/0x24c [omapdrm] [ 11.941497] omap_framebuffer_init [omapdrm] from omap_fbdev_driver_fbdev_probe+0x150/0x3c0 [omapdrm] [ 11.941619] omap_fbdev_driver_fbdev_probe [omapdrm] from __drm_fb_helper_initial_config_and_unlock+0x300/0x58c [ 11.941711] __drm_fb_helper_initial_config_and_unlock from drm_fbdev_client_hotplug+0x6c/0xb0 [ 11.941711] drm_fbdev_client_hotplug from drm_client_register+0x54/0x90 [ 11.941741] drm_client_register from drm_fbdev_client_setup+0xa4/0x1bc [ 11.941741] drm_fbdev_client_setup from drm_client_setup+0xa0/0xc8 [ 11.941772] drm_client_setup from pdev_probe+0x628/0x704 [omapdrm] [ 11.941833] pdev_probe [omapdrm] from platform_probe+0x5c/0x90
Full log:
https://validation.linaro.org/scheduler/job/4174082#L813
A git bisect identified this commit as triggering the issue:
# bad: [05adbee3ad528100ab0285c15c91100e19e10138] Add linux-next specific files for 20250722
# good: [bc3aa02f578a02ecf5e53929d8d6902377c14f2e] Merge branch 'for-linux-next-fixes' of https://gitlab.freedesktop.org/drm/misc/kernel.git
# good: [17882721dcb49323eaa9728d7eaa2ae826c876f7] ASoC: SDCA: add route by the number of input pins in MU entity
# good: [d60f7cab7c04944a79af16caa43c141e780a59c6] spi: spidev: Add an entry for the ABB spi sensors
# good: [d511206dc7443120637efd9cfa3ab06a26da33dd] regulator: core: repeat voltage setting request for stepped regulators
# good: [c2a08479b5f8b41f62f1a4984cb78c80c0cb66cb] Merge branches 'intel/vt-d', 'amd/amd-vi', 'mediatek', 'ti/omap', 'apple/dart', 'arm/smmu/bindings' and 'arm/smmu/updates' into next
# good: [951a6d8d41289b86a564ee5563ededa702b62b1b] spi: stm32-ospi: Fix NULL vs IS_ERR() bug in stm32_ospi_get_resources()
# good: [03aa2ed9e187e42f25b3871b691d535fc19156c4] ASoC: Intel: sof_rt5682: Add HDMI-In capture with rt5682 support for PTL.
# good: [63be976da994260ea116c431a2e61485dbede1b0] regulator: rt6160: Add rt6166 vout min_uV setting for compatible
# good: [d929cc75e9791def049a90998aaab8934196131c] spi: gpio: Use explicit 'unsigned int' for parameter types
# good: [8778837f0a5b7c1bc5dbf0cccd7619fec6981588] ASoC: codec: tlv320aic32x4: Fix reset GPIO check
# good: [d5255ae7ec48ac1f702e95b472801dbb7bf1e97f] spi: dt-bindings: spi-mux: Drop "spi-max-frequency" as required
# good: [4ed357f72a0e0a691304e5f14a3323811c8ce862] ASoC: SDCA: Add hw_params() helper function
# good: [7e477e9c4eb412cbcaeae3ed4fff22035dc943eb] clocksource/drivers/exynos_mct: Fix section mismatch from the module conversion
# good: [d9f334fca5448907cc47ba8553926f9ba148512f] MAINTAINERS: add regulator.rs to the regulator API entry
# good: [15247b5a63f506125360fa45d7aa1fbe8b903b95] ASoC: SDCA: Update memory allocations to zero initialise
# good: [d5f317fd5cd9dfdf5bbe11384001817760c12b75] ASoC: stm: stm32_sai_sub: convert from round_rate() to determine_rate()
# good: [6f8584a4826f01a55d3d0c4bbad5961f1de52fc9] spi: st: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()
# good: [a1d87a3586152f52856b449c4787f21cb35d430f] docs: dt: writing-bindings: Document compatible and filename naming
# good: [43728a6434f9eca0385fd180d8452a5071678a5b] regulator: tps6286x-regulator: Fix a copy & paste error
# good: [6beda760db7eb6b06cdbf77d4749af0bf9aca1e0] Merge ras/edac-drivers into for-next
# good: [790d5f8ee6f2a27686d042abbce16b4e03ac1608] ASoC: codec: tlv320aic32x4: Convert to GPIO descriptors
# good: [af241e3fa4d823f8af899c92fd50d020816a1860] ASoC: fsl-asoc-card: add sysclk_ratio for calculate sysclk frequency
# good: [f00e06296ba3f0d8440030afe8cc2258758b7af7] ASoC: samsung: littlemill: don't set dapm->bias_level directly
# good: [3aa47d2ec83316c24e1ed15a492b331802dc6a69] regulator: qcom-rpmh: add support for pm7550 regulators
# good: [5030abcb0aa3304bf91497844ffa9607a2d4ad5d] ASoC: SDCA: Pull HID and IRQ into the primary SDCA module
# good: [7d61715c58a39edc5f74fc7366487726fc223530] spi: rspi: Convert to DEFINE_SIMPLE_DEV_PM_OPS()
# good: [b30d390812c8559c5835f8ae5f490b38488fafc8] regulator: tps6594-regulator: Add TI TPS652G1 PMIC regulators
# good: [ad4655653a6c463026ed3c300e5fb34f39abff48] ASoC: SDCA: fix HID dependency
# good: [c61da55412a08268ea0cdef99dea11f7ade934ee] ASoC: sdw_utils: Add missed component_name strings for speaker amps
# good: [68e4dadacb7faa393b532b41bbf99a2dbfec3b1b] ASoC: img: Imagination Technologies sound should depend on MIPS
# good: [defe01abfb7f5c5bd53c723b8577d4fcd64faa5a] spi: stm32-ospi: Use of_reserved_mem_region_to_resource() for "memory-region"
# good: [86ccd4d3e8bc9eeb5dde4080fcc67e0505d1d2c6] ASoC: Intel: soc-acpi-intel-lnl-match: add rt1320_l12_rt714_l0 support
# good: [67bdd67aedcec8c63e3158c3c82991fbde0c4d22] ASoC: rt715: don't set dapm->bias_level
# good: [5054740e0092aac528c0589251f612b3b41c9e7b] regulator: sy8827n: make enable gpio NONEXCLUSIVE
# good: [08dc0f5cc26a203e8008c38d9b436c079e7dbb45] ASoC: soc-dapm: add prefix on soc_dapm_dev_attrs
# good: [2fca750160f29015ab1109bb478537a4e415f7cd] spi: Remove redundant pm_runtime_mark_last_busy() calls
# good: [571defe0dff3f1e4180bd0db79283d3d5bf74a71] ASoC: codec: rockchip_sai: Remove including of_gpio.h
# good: [2bd9648d5a8d329ca734ca2c273a80934867471e] ASoC: SOF: Remove redundant pm_runtime_mark_last_busy() calls
# good: [c61e94e5e4e6bc50064119e6a779564d1d2ac0e7] regulator: stm32-vrefbuf: Remove redundant pm_runtime_mark_last_busy() calls
# good: [bc163baef57002c08b3afe64cdd2f55f55a765eb] ASoC: Use of_reserved_mem_region_to_resource() for "memory-region"
# good: [9f711c9321cffe3e03709176873c277fa911c366] regmap: get rid of redundant debugfs_file_{get,put}()
# good: [baee26a9d6cd3d3c6c3c03c56270aa647a67e4bd] ASoC: fsl_mqs: rename system manager indices for i.MX95
# good: [7105fdd54a14bee49371b39374a61b3c967d74cb] spi: dt-bindings: Convert marvell,orion-spi to DT schema
# good: [913bf8d50cbd144c87e9660b591781179182ff59] spi: spi-qpic-snand: add support for 8 bits ECC strength
# good: [34d340d48e595f8dfd4e72fe4100d2579dbe4a1a] ASoC: qcom: sc8280xp: Add support for QCS8275
# good: [0c0ef1d90967717b91cded41b00dbae05d8e521c] ASoC: amd: acp: Enable acp7.2 platform based DMIC support in machine driver
# good: [3fcd3d2fe44dc9dfca20b6aed117f314a50ba0ff] spi: offload trigger: add ADI Util Sigma-Delta SPI driver
# good: [244bc18e5f1875401a4af87d2eae3f9376d9d720] spi: stm32: delete stray tabs in stm32h7_spi_data_idleness()
# good: [7e1c28fbf235791cb5046fafdac5bc16fe8e788d] spi: spi-pci1xxxx: enable concurrent DMA read/write across SPI transfers
# good: [c4f2c05ab02952c9a56067aeb700ded95b183570] spi: stm32: fix pointer-to-pointer variables usage
# good: [b9ab3b61824190b1c6b2c59e7ba4de591f24eb92] ASoC: SDCA: Add some initial IRQ handlers
# good: [427ceac823e58813b510e585011488f603f0d891] regulator: tps6286x-regulator: Enable REGCACHE_MAPLE
# good: [29ddce17e909779633f856ad1c2f111fbf71c0df] ASoC: codecs: Add calibration function to aw88399 chip
# good: [ac4c064f67d3cdf9118b9b09c1e3b28b6c10a7ea] spi: dt-bindings: add nxp,lpc3220-spi.yaml
# good: [08bf1663c21a3e815eda28fa242d84c945ca3b94] dmaengine: Add devm_dma_request_chan()
# good: [2555691165a0285a4617230fed859f20dcc51608] spi: atmel-quadspi: Use devm_dma_request_chan()
# good: [ce57bc9771411d6d27f2ca7b40396cbd7d684ba9] regulator: core: Don't use "proxy" headers
# good: [0f60ecffbfe35e12eb56c99640ba2360244b5bb3] ASoC: sdw_utils: generate combined spk components string
# good: [9a944494c299fabf3cc781798eb7c02a0bece364] spi: dt-bindings: stm32: deprecate st,spi-midi-ns property
# good: [3e36c822506d924894ff7de549b9377d3114c2d7] spi: spi-pci1xxxx: Add support for per-instance DMA interrupt vectors
# good: [68fbc70ece40139380380dce74059afa592846b3] ASoC: hisilicon: Standardize ASoC menu
# good: [8f9cf02c8852837923f1cdacfcc92e138513325c] spi: microchip-core-qspi: Add regular transfers
# good: [17cc308b183308bf5ada36e164284fff7eb064ba] ASoC: wm8524: enable constraints when sysclk is configured.
# good: [59566923d955b69bfb1e1163f07dff437dde8c9c] ASoC: SOF: amd: add alternate machines for ACP7.0 and ACP7.1 platforms
# good: [024f39fff6d222cedde361f7fe34d9ba4e6afb92] regulator: mtk-dvfsrc: Add support for MediaTek MT8196 DVFSRC
# good: [19cbc930c209d59a2c9828de4c7b767e9f14667e] regulator: pca9450: Support PWM mode also for pca9451a
# good: [c4ca928a6db1593802cd945f075a7e21dd0430c1] ASoC: hdac_hdmi: Rate limit logging on connection and disconnection
# good: [a48352921f0b15b1f7eff83f5b5613d6ae2350d3] ASoC: codecs: wcd939x: Add defines for major/minor version decoding
# good: [3421d46440ebe0865bec71dbd2330b4e17a425ab] HID: core: Add bus define for SoundWire bus
# good: [a1d203d390e04798ccc1c3c06019cd4411885d6d] ASoC: SOF: ipc4-pcm: Enable delay reporting for ChainDMA streams
# good: [2756b7f08ff6ca7c68c8c7dd61c8dc6895c9de34] ASoC: SOF: ipc4-pcm: Harmonize sof_ipc4_set_pipeline_state() dbg print
# good: [bb48117b79ebc39485f7306d09dc602981fe540f] ASoC: Intel: sof_sdw: Implement add_dai_link to filter HDMI PCMs
# good: [ace9b3daf2b4778358573d3698e34cb1c0fa7e14] ASoC: SOF: ipc4/Intel: Add support for library restore firmware functionality
# good: [5fc2c383125c2b4b6037e02ad8796b776b25e6d0] spi: falcon: mark falcon_sflash_xfer() as static
# good: [7f8924e8785b68c998bc1906e049bf5595865e60] ASoC: dt-bindings: cirrus,cs42xx8: add 'port' property
# good: [3e1c01d06e1f52f78fe00ef26a9cf80dbb0a3115] regulator: rpi-panel-v2: Add shutdown hook
# good: [d9f38d9824bfb1b046d2e720349d2f45959ab184] ASoC: tegra: AHUB: Remove unneeded semicolon
# good: [dce4bc30f42d313b4dc5832316196411b7f07ad0] spi: spi-fsl-dspi: Revert unintended dependency change in config SPI_FSL_DSPI
# good: [47972c1c3315672352f25c68f91dd88543541947] ASoC: Intel: Replace deprecated strcpy() with strscpy()
# good: [5eb8a0d7733d4cd32a776acf1d1aa1c7c01c8a14] ASoC: hdmi-codec: use SND_JACK_AVOUT as jack status
# good: [1918e51321c0c34341397644512568ac3451e416] ARM: dts: vt8500: Fix the unit address of the VT8500 LCD controller
# good: [bb8d8ba4715cb8f997d63d90ba935f6073595df5] ASoC: mediatek: mt8183-afe-pcm: use local dev pointer in driver callbacks
# good: [8a5a5cecb79058b608e5562d8998123a3adb313c] ASoC: tas2781: Move the "include linux/debugfs.h" into tas2781.h
# good: [a4eb71ff98c4792f441f108910bd829da7a04092] regulator: rpi-panel-v2: Fix missing OF dependency
# good: [6cafcc53eb5fffd9b9bdfde700bb9bad21e98ed3] spi: spi-mt65xx: Add support for MT6991 Dimensity 9400 SPI IPM
# good: [7e10d7242ea8a5947878880b912ffa5806520705] ASoC: ops: dynamically allocate struct snd_ctl_elem_value
# good: [d6fa0ca959db8efd4462d7beef4bdc5568640fd0] regulator: rpi-panel-v2: Add missing GPIOLIB dependency
# good: [1f5cdb6ab45e1c06ae0953609acbb52f8946b3e8] ASoC: codecs: Add support for Richtek RTQ9124
# good: [6ba68e5aa9d5d15c8877a655db279fcfc0b38b04] ASoC: renesas: msiof: Convert to <linux/spi/sh_msiof.h>
# good: [d49305862fdc4d9ff1b1093b4ed7d8e0cb9971b4] regulator: rpi-panel-v2: Add regulator for 7" Raspberry Pi 720x1280
# good: [03b778d1994827ea5cc971dbdfbb457bbb7bfa5d] ASOC: rockchip: Use helper function devm_clk_get_enabled()
# good: [c459262159f39e6e6336797feb975799344b749b] spi: spi-pci1xxxx: Add support for 25MHz Clock frequency in C0
# good: [267be32b0a7b70cc777f8a46f0904c92c0521d89] ASoC: remove component->id
# good: [548d770c330cd1027549947a6ea899c56b5bc4e4] regulator: pca9450: Add support for mode operations
# good: [f6f914893d478b7ba08e5c375de1ced16deb5e92] ASoC: dt-bindings: tas57xx: add tas5753 compatibility
# good: [9a30e332c36c52e92e5316b4a012d45284dedeb5] spi: spi-fsl-dspi: Enable support for S32G platforms
# good: [c95e925daa434ee1a40a86aec6476ce588e4bd77] ASoC: Intel: avs: Add rt5640 machine board
# good: [c8c4694ede7ed42d8d4db0e8927dea9839a3e248] regmap: kunit: Constify regmap_range_cfg array
# good: [ac209bde018fd320b79976657a44c23113181af6] ASoC: tas2781: Drop the unnecessary symbol imply
# good: [b9ecde0bcf6a99a3ff08496d4ba90a385ebbfd68] ASoC: codecs: wcd939x: Add VDD_PX supply
# good: [111a2c8ab462d77d1519b71b46f13ae1b46920b4] ASoC: imx-card: Use helper function for_each_child_of_node_scoped()
# good: [ece5d881004f041c2e1493436409dbcbea3ad5f8] ASoC: codecs: wcd939x: Drop unused 'struct wcd939x_priv' fields
# good: [e6e8897995a9e6028563ce36c27877e5478c8571] ASoC: qcom: sm8250: Add Fairphone 5 soundcard compatible
git bisect start '05adbee3ad528100ab0285c15c91100e19e10138' 'bc3aa02f578a02ecf5e53929d8d6902377c14f2e' '17882721dcb49323eaa9728d7eaa2ae826c876f7' 'd60f7cab7c04944a79af16caa43c141e780a59c6' 'd511206dc7443120637efd9cfa3ab06a26da33dd' 'c2a08479b5f8b41f62f1a4984cb78c80c0cb66cb' '951a6d8d41289b86a564ee5563ededa702b62b1b' '03aa2ed9e187e42f25b3871b691d535fc19156c4' '63be976da994260ea116c431a2e61485dbede1b0' 'd929cc75e9791def049a90998aaab8934196131c' '8778837f0a5b7c1bc5dbf0cccd7619fec6981588' 'd5255ae7ec48ac1f702e95b472801dbb7bf1e97f' '4ed357f72a0e0a691304e5f14a3323811c8ce862' '7e477e9c4eb412cbcaeae3ed4fff22035dc943eb' 'd9f334fca5448907cc47ba8553926f9ba148512f' '15247b5a63f506125360fa45d7aa1fbe8b903b95' 'd5f317fd5cd9dfdf5bbe11384001817760c12b75' '6f8584a4826f01a55d3d0c4bbad5961f1de52fc9' 'a1d87a3586152f52856b449c4787f21cb35d430f' '43728a6434f9eca0385fd180d8452a5071678a5b' '6beda760db7eb6b06cdbf77d4749af0bf9aca1e0' '790d5f8ee6f2a27686d042abbce16b4e03ac1608' 'af241e3fa4d823f8af899c92fd50d020816a1860' 'f00e06296ba3f0d8440030afe8cc2258758b7af7' '3aa47d2ec83316c24e1ed15a492b331802dc6a69' '5030abcb0aa3304bf91497844ffa9607a2d4ad5d' '7d61715c58a39edc5f74fc7366487726fc223530' 'b30d390812c8559c5835f8ae5f490b38488fafc8' 'ad4655653a6c463026ed3c300e5fb34f39abff48' 'c61da55412a08268ea0cdef99dea11f7ade934ee' '68e4dadacb7faa393b532b41bbf99a2dbfec3b1b' 'defe01abfb7f5c5bd53c723b8577d4fcd64faa5a' '86ccd4d3e8bc9eeb5dde4080fcc67e0505d1d2c6' '67bdd67aedcec8c63e3158c3c82991fbde0c4d22' '5054740e0092aac528c0589251f612b3b41c9e7b' '08dc0f5cc26a203e8008c38d9b436c079e7dbb45' '2fca750160f29015ab1109bb478537a4e415f7cd' '571defe0dff3f1e4180bd0db79283d3d5bf74a71' '2bd9648d5a8d329ca734ca2c273a80934867471e' 'c61e94e5e4e6bc50064119e6a779564d1d2ac0e7' 'bc163baef57002c08b3afe64cdd2f55f55a765eb' '9f711c9321cffe3e03709176873c277fa911c366' 'baee26a9d6cd3d3c6c3c03c56270aa647a67e4bd' '7105fdd54a14bee49371b39374a61b3c967d74cb' '913bf8d50cbd144c87e9660b591781179182ff59' '34d340d48e595f8dfd4e72fe4100d2579dbe4a1a' '0c0ef1d90967717b91cded41b00dbae05d8e521c' '3fcd3d2fe44dc9dfca20b6aed117f314a50ba0ff' '244bc18e5f1875401a4af87d2eae3f9376d9d720' '7e1c28fbf235791cb5046fafdac5bc16fe8e788d' 'c4f2c05ab02952c9a56067aeb700ded95b183570' 'b9ab3b61824190b1c6b2c59e7ba4de591f24eb92' '427ceac823e58813b510e585011488f603f0d891' '29ddce17e909779633f856ad1c2f111fbf71c0df' 'ac4c064f67d3cdf9118b9b09c1e3b28b6c10a7ea' '08bf1663c21a3e815eda28fa242d84c945ca3b94' '2555691165a0285a4617230fed859f20dcc51608' 'ce57bc9771411d6d27f2ca7b40396cbd7d684ba9' '0f60ecffbfe35e12eb56c99640ba2360244b5bb3' '9a944494c299fabf3cc781798eb7c02a0bece364' '3e36c822506d924894ff7de549b9377d3114c2d7' '68fbc70ece40139380380dce74059afa592846b3' '8f9cf02c8852837923f1cdacfcc92e138513325c' '17cc308b183308bf5ada36e164284fff7eb064ba' '59566923d955b69bfb1e1163f07dff437dde8c9c' '024f39fff6d222cedde361f7fe34d9ba4e6afb92' '19cbc930c209d59a2c9828de4c7b767e9f14667e' 'c4ca928a6db1593802cd945f075a7e21dd0430c1' 'a48352921f0b15b1f7eff83f5b5613d6ae2350d3' '3421d46440ebe0865bec71dbd2330b4e17a425ab' 'a1d203d390e04798ccc1c3c06019cd4411885d6d' '2756b7f08ff6ca7c68c8c7dd61c8dc6895c9de34' 'bb48117b79ebc39485f7306d09dc602981fe540f' 'ace9b3daf2b4778358573d3698e34cb1c0fa7e14' '5fc2c383125c2b4b6037e02ad8796b776b25e6d0' '7f8924e8785b68c998bc1906e049bf5595865e60' '3e1c01d06e1f52f78fe00ef26a9cf80dbb0a3115' 'd9f38d9824bfb1b046d2e720349d2f45959ab184' 'dce4bc30f42d313b4dc5832316196411b7f07ad0' '47972c1c3315672352f25c68f91dd88543541947' '5eb8a0d7733d4cd32a776acf1d1aa1c7c01c8a14' '1918e51321c0c34341397644512568ac3451e416' 'bb8d8ba4715cb8f997d63d90ba935f6073595df5' '8a5a5cecb79058b608e5562d8998123a3adb313c' 'a4eb71ff98c4792f441f108910bd829da7a04092' '6cafcc53eb5fffd9b9bdfde700bb9bad21e98ed3' '7e10d7242ea8a5947878880b912ffa5806520705' 'd6fa0ca959db8efd4462d7beef4bdc5568640fd0' '1f5cdb6ab45e1c06ae0953609acbb52f8946b3e8' '6ba68e5aa9d5d15c8877a655db279fcfc0b38b04' 'd49305862fdc4d9ff1b1093b4ed7d8e0cb9971b4' '03b778d1994827ea5cc971dbdfbb457bbb7bfa5d' 'c459262159f39e6e6336797feb975799344b749b' '267be32b0a7b70cc777f8a46f0904c92c0521d89' '548d770c330cd1027549947a6ea899c56b5bc4e4' 'f6f914893d478b7ba08e5c375de1ced16deb5e92' '9a30e332c36c52e92e5316b4a012d45284dedeb5' 'c95e925daa434ee1a40a86aec6476ce588e4bd77' 'c8c4694ede7ed42d8d4db0e8927dea9839a3e248' 'ac209bde018fd320b79976657a44c23113181af6' 'b9ecde0bcf6a99a3ff08496d4ba90a385ebbfd68' '111a2c8ab462d77d1519b71b46f13ae1b46920b4' 'ece5d881004f041c2e1493436409dbcbea3ad5f8' 'e6e8897995a9e6028563ce36c27877e5478c8571'
# test job: [17882721dcb49323eaa9728d7eaa2ae826c876f7] https://validation.linaro.org/scheduler/job/4173726 # test job: [d60f7cab7c04944a79af16caa43c141e780a59c6] https://validation.linaro.org/scheduler/job/4173611 # test job: [d511206dc7443120637efd9cfa3ab06a26da33dd] https://validation.linaro.org/scheduler/job/4171806 # test job: [c2a08479b5f8b41f62f1a4984cb78c80c0cb66cb] https://validation.linaro.org/scheduler/job/4173816 # test job: [951a6d8d41289b86a564ee5563ededa702b62b1b] https://validation.linaro.org/scheduler/job/4170213 # test job: [03aa2ed9e187e42f25b3871b691d535fc19156c4] https://validation.linaro.org/scheduler/job/4170234 # test job: [63be976da994260ea116c431a2e61485dbede1b0] https://validation.linaro.org/scheduler/job/4169936 # test job: [d929cc75e9791def049a90998aaab8934196131c] https://validation.linaro.org/scheduler/job/4169992 # test job: [8778837f0a5b7c1bc5dbf0cccd7619fec6981588] https://validation.linaro.org/scheduler/job/4169969 # test job: [d5255ae7ec48ac1f702e95b472801dbb7bf1e97f] https://validation.linaro.org/scheduler/job/4169393 # test job: [4ed357f72a0e0a691304e5f14a3323811c8ce862] https://validation.linaro.org/scheduler/job/4169297 # test job: [7e477e9c4eb412cbcaeae3ed4fff22035dc943eb] https://validation.linaro.org/scheduler/job/4172225 # test job: [d9f334fca5448907cc47ba8553926f9ba148512f] https://validation.linaro.org/scheduler/job/4169108 # test job: [15247b5a63f506125360fa45d7aa1fbe8b903b95] https://validation.linaro.org/scheduler/job/4169227 # test job: [d5f317fd5cd9dfdf5bbe11384001817760c12b75] https://validation.linaro.org/scheduler/job/4169020 # test job: [6f8584a4826f01a55d3d0c4bbad5961f1de52fc9] https://validation.linaro.org/scheduler/job/4168986 # test job: [a1d87a3586152f52856b449c4787f21cb35d430f] https://validation.linaro.org/scheduler/job/4171075 # test job: [43728a6434f9eca0385fd180d8452a5071678a5b] https://validation.linaro.org/scheduler/job/4168060 # test job: [6beda760db7eb6b06cdbf77d4749af0bf9aca1e0] https://validation.linaro.org/scheduler/job/4172243 # test job: [790d5f8ee6f2a27686d042abbce16b4e03ac1608] https://validation.linaro.org/scheduler/job/4167458 # test job: [af241e3fa4d823f8af899c92fd50d020816a1860] https://validation.linaro.org/scheduler/job/4167411 # test job: [f00e06296ba3f0d8440030afe8cc2258758b7af7] https://validation.linaro.org/scheduler/job/4167498 # test job: [3aa47d2ec83316c24e1ed15a492b331802dc6a69] https://validation.linaro.org/scheduler/job/4167393 # test job: [5030abcb0aa3304bf91497844ffa9607a2d4ad5d] https://validation.linaro.org/scheduler/job/4167431 # test job: [7d61715c58a39edc5f74fc7366487726fc223530] https://validation.linaro.org/scheduler/job/4164982 # test job: [b30d390812c8559c5835f8ae5f490b38488fafc8] https://validation.linaro.org/scheduler/job/4165138 # test job: [ad4655653a6c463026ed3c300e5fb34f39abff48] https://validation.linaro.org/scheduler/job/4164482 # test job: [c61da55412a08268ea0cdef99dea11f7ade934ee] https://validation.linaro.org/scheduler/job/4164377 # test job: [68e4dadacb7faa393b532b41bbf99a2dbfec3b1b] https://validation.linaro.org/scheduler/job/4164207 # test job: [defe01abfb7f5c5bd53c723b8577d4fcd64faa5a] https://validation.linaro.org/scheduler/job/4164197 # test job: [86ccd4d3e8bc9eeb5dde4080fcc67e0505d1d2c6] https://validation.linaro.org/scheduler/job/4163601 # test job: [67bdd67aedcec8c63e3158c3c82991fbde0c4d22] https://validation.linaro.org/scheduler/job/4163612 # test job: [5054740e0092aac528c0589251f612b3b41c9e7b] https://validation.linaro.org/scheduler/job/4163396 # test job: [08dc0f5cc26a203e8008c38d9b436c079e7dbb45] https://validation.linaro.org/scheduler/job/4163273 # test job: [2fca750160f29015ab1109bb478537a4e415f7cd] https://validation.linaro.org/scheduler/job/4162152 # test job: [571defe0dff3f1e4180bd0db79283d3d5bf74a71] https://validation.linaro.org/scheduler/job/4162026 # test job: [2bd9648d5a8d329ca734ca2c273a80934867471e] https://validation.linaro.org/scheduler/job/4162043 # test job: [c61e94e5e4e6bc50064119e6a779564d1d2ac0e7] https://validation.linaro.org/scheduler/job/4161828 # test job: [bc163baef57002c08b3afe64cdd2f55f55a765eb] https://validation.linaro.org/scheduler/job/4161850 # test job: [9f711c9321cffe3e03709176873c277fa911c366] https://validation.linaro.org/scheduler/job/4161895 # test job: [baee26a9d6cd3d3c6c3c03c56270aa647a67e4bd] https://validation.linaro.org/scheduler/job/4160982 # test job: [7105fdd54a14bee49371b39374a61b3c967d74cb] https://validation.linaro.org/scheduler/job/4160926 # test job: [913bf8d50cbd144c87e9660b591781179182ff59] https://validation.linaro.org/scheduler/job/4160472 # test job: [34d340d48e595f8dfd4e72fe4100d2579dbe4a1a] https://validation.linaro.org/scheduler/job/4160262 # test job: [0c0ef1d90967717b91cded41b00dbae05d8e521c] https://validation.linaro.org/scheduler/job/4160281 # test job: [3fcd3d2fe44dc9dfca20b6aed117f314a50ba0ff] https://validation.linaro.org/scheduler/job/4159928 # test job: [244bc18e5f1875401a4af87d2eae3f9376d9d720] https://validation.linaro.org/scheduler/job/4159638 # test job: [7e1c28fbf235791cb5046fafdac5bc16fe8e788d] https://validation.linaro.org/scheduler/job/4159007 # test job: [c4f2c05ab02952c9a56067aeb700ded95b183570] https://validation.linaro.org/scheduler/job/4159129 # test job: [b9ab3b61824190b1c6b2c59e7ba4de591f24eb92] https://validation.linaro.org/scheduler/job/4159152 # test job: [427ceac823e58813b510e585011488f603f0d891] https://validation.linaro.org/scheduler/job/4159012 # test job: [29ddce17e909779633f856ad1c2f111fbf71c0df] https://validation.linaro.org/scheduler/job/4158530 # test job: [ac4c064f67d3cdf9118b9b09c1e3b28b6c10a7ea] https://validation.linaro.org/scheduler/job/4156481 # test job: [08bf1663c21a3e815eda28fa242d84c945ca3b94] https://validation.linaro.org/scheduler/job/4156861 # test job: [2555691165a0285a4617230fed859f20dcc51608] https://validation.linaro.org/scheduler/job/4156456 # test job: [ce57bc9771411d6d27f2ca7b40396cbd7d684ba9] https://validation.linaro.org/scheduler/job/4156452 # test job: [0f60ecffbfe35e12eb56c99640ba2360244b5bb3] https://validation.linaro.org/scheduler/job/4155485 # test job: [9a944494c299fabf3cc781798eb7c02a0bece364] https://validation.linaro.org/scheduler/job/4155391 # test job: [3e36c822506d924894ff7de549b9377d3114c2d7] https://validation.linaro.org/scheduler/job/4155019 # test job: [68fbc70ece40139380380dce74059afa592846b3] https://validation.linaro.org/scheduler/job/4154919 # test job: [8f9cf02c8852837923f1cdacfcc92e138513325c] https://validation.linaro.org/scheduler/job/4154906 # test job: [17cc308b183308bf5ada36e164284fff7eb064ba] https://validation.linaro.org/scheduler/job/4154840 # test job: [59566923d955b69bfb1e1163f07dff437dde8c9c] https://validation.linaro.org/scheduler/job/4154671 # test job: [024f39fff6d222cedde361f7fe34d9ba4e6afb92] https://validation.linaro.org/scheduler/job/4154683 # test job: [19cbc930c209d59a2c9828de4c7b767e9f14667e] https://validation.linaro.org/scheduler/job/4154624 # test job: [c4ca928a6db1593802cd945f075a7e21dd0430c1] https://validation.linaro.org/scheduler/job/4154605 # test job: [a48352921f0b15b1f7eff83f5b5613d6ae2350d3] https://validation.linaro.org/scheduler/job/4154592 # test job: [3421d46440ebe0865bec71dbd2330b4e17a425ab] https://validation.linaro.org/scheduler/job/4154399 # test job: [a1d203d390e04798ccc1c3c06019cd4411885d6d] https://validation.linaro.org/scheduler/job/4154295 # test job: [2756b7f08ff6ca7c68c8c7dd61c8dc6895c9de34] https://validation.linaro.org/scheduler/job/4154216 # test job: [bb48117b79ebc39485f7306d09dc602981fe540f] https://validation.linaro.org/scheduler/job/4154200 # test job: [ace9b3daf2b4778358573d3698e34cb1c0fa7e14] https://validation.linaro.org/scheduler/job/4154179 # test job: [5fc2c383125c2b4b6037e02ad8796b776b25e6d0] https://validation.linaro.org/scheduler/job/4154051 # test job: [7f8924e8785b68c998bc1906e049bf5595865e60] https://validation.linaro.org/scheduler/job/4154046 # test job: [3e1c01d06e1f52f78fe00ef26a9cf80dbb0a3115] https://validation.linaro.org/scheduler/job/4153777 # test job: [d9f38d9824bfb1b046d2e720349d2f45959ab184] https://validation.linaro.org/scheduler/job/4153760 # test job: [dce4bc30f42d313b4dc5832316196411b7f07ad0] https://validation.linaro.org/scheduler/job/4153623 # test job: [47972c1c3315672352f25c68f91dd88543541947] https://validation.linaro.org/scheduler/job/4153638 # test job: [5eb8a0d7733d4cd32a776acf1d1aa1c7c01c8a14] https://validation.linaro.org/scheduler/job/4153380 # test job: [1918e51321c0c34341397644512568ac3451e416] https://validation.linaro.org/scheduler/job/4171107 # test job: [bb8d8ba4715cb8f997d63d90ba935f6073595df5] https://validation.linaro.org/scheduler/job/4153231 # test job: [8a5a5cecb79058b608e5562d8998123a3adb313c] https://validation.linaro.org/scheduler/job/4153166 # test job: [a4eb71ff98c4792f441f108910bd829da7a04092] https://validation.linaro.org/scheduler/job/4153034 # test job: [6cafcc53eb5fffd9b9bdfde700bb9bad21e98ed3] https://validation.linaro.org/scheduler/job/4153011 # test job: [7e10d7242ea8a5947878880b912ffa5806520705] https://validation.linaro.org/scheduler/job/4152870 # test job: [d6fa0ca959db8efd4462d7beef4bdc5568640fd0] https://validation.linaro.org/scheduler/job/4152813 # test job: [1f5cdb6ab45e1c06ae0953609acbb52f8946b3e8] https://validation.linaro.org/scheduler/job/4152631 # test job: [6ba68e5aa9d5d15c8877a655db279fcfc0b38b04] https://validation.linaro.org/scheduler/job/4152714 # test job: [d49305862fdc4d9ff1b1093b4ed7d8e0cb9971b4] https://validation.linaro.org/scheduler/job/4152653 # test job: [03b778d1994827ea5cc971dbdfbb457bbb7bfa5d] https://validation.linaro.org/scheduler/job/4152438 # test job: [c459262159f39e6e6336797feb975799344b749b] https://validation.linaro.org/scheduler/job/4152394 # test job: [267be32b0a7b70cc777f8a46f0904c92c0521d89] https://validation.linaro.org/scheduler/job/4152329 # test job: [548d770c330cd1027549947a6ea899c56b5bc4e4] https://validation.linaro.org/scheduler/job/4152282 # test job: [f6f914893d478b7ba08e5c375de1ced16deb5e92] https://validation.linaro.org/scheduler/job/4152314 # test job: [9a30e332c36c52e92e5316b4a012d45284dedeb5] https://validation.linaro.org/scheduler/job/4152562 # test job: [c95e925daa434ee1a40a86aec6476ce588e4bd77] https://validation.linaro.org/scheduler/job/4152595 # test job: [c8c4694ede7ed42d8d4db0e8927dea9839a3e248] https://validation.linaro.org/scheduler/job/4152467 # test job: [ac209bde018fd320b79976657a44c23113181af6] https://validation.linaro.org/scheduler/job/4152406 # test job: [b9ecde0bcf6a99a3ff08496d4ba90a385ebbfd68] https://validation.linaro.org/scheduler/job/4152315 # test job: [111a2c8ab462d77d1519b71b46f13ae1b46920b4] https://validation.linaro.org/scheduler/job/4152528 # test job: [ece5d881004f041c2e1493436409dbcbea3ad5f8] https://validation.linaro.org/scheduler/job/4152339 # test job: [e6e8897995a9e6028563ce36c27877e5478c8571] https://validation.linaro.org/scheduler/job/4152415 # test job: [05adbee3ad528100ab0285c15c91100e19e10138] https://validation.linaro.org/scheduler/job/4174082 # bad: [05adbee3ad528100ab0285c15c91100e19e10138] Add linux-next specific files for 20250722 git bisect bad 05adbee3ad528100ab0285c15c91100e19e10138 # test job: [18a31e73d0f9e5b4ba3481ed8b39d48644d22a20] https://validation.linaro.org/scheduler/job/4174089 # good: [18a31e73d0f9e5b4ba3481ed8b39d48644d22a20] Merge branch 'main' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git git bisect good 18a31e73d0f9e5b4ba3481ed8b39d48644d22a20 # test job: [c871ad861540a12c68f8e92a4a40352350eacc30] https://validation.linaro.org/scheduler/job/4174103 # bad: [c871ad861540a12c68f8e92a4a40352350eacc30] Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git git bisect bad c871ad861540a12c68f8e92a4a40352350eacc30 # test job: [be3cd668fffe2a1dc8a9c617b44c5f46fa2e4b96] https://validation.linaro.org/scheduler/job/4174117 # bad: [be3cd668fffe2a1dc8a9c617b44c5f46fa2e4b96] Merge tag 'drm-misc-next-2025-07-17' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next git bisect bad be3cd668fffe2a1dc8a9c617b44c5f46fa2e4b96 # test job: [0dc6bfb50a5d0759e726cd36a3d3b7529fd2a627] https://validation.linaro.org/scheduler/job/4174131 # good: [0dc6bfb50a5d0759e726cd36a3d3b7529fd2a627] drm/i915/dsi: Fix NULL pointer deref in vlv_dphy_param_init() git bisect good 0dc6bfb50a5d0759e726cd36a3d3b7529fd2a627 # test job: [69d09a26096c187742fa7040ef9b2925becf00f4] https://validation.linaro.org/scheduler/job/4174141 # good: [69d09a26096c187742fa7040ef9b2925becf00f4] Merge tag 'drm-intel-next-2025-07-04' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next git bisect good 69d09a26096c187742fa7040ef9b2925becf00f4 # test job: [530694f54dd5e097866999bbaebc5c133e5507b6] https://validation.linaro.org/scheduler/job/4174148 # good: [530694f54dd5e097866999bbaebc5c133e5507b6] drm/amdgpu: do not resume device in thaw for normal hibernation git bisect good 530694f54dd5e097866999bbaebc5c133e5507b6 # test job: [fba12307633933917a799fa2cda5bfc324b3f114] https://validation.linaro.org/scheduler/job/4174157 # good: [fba12307633933917a799fa2cda5bfc324b3f114] drm/xe: Add plumbing for indirect context workarounds git bisect good fba12307633933917a799fa2cda5bfc324b3f114 # test job: [04a5889cf75aa5b59bd1e13c33eccaf49f3f9d81] https://validation.linaro.org/scheduler/job/4174164 # good: [04a5889cf75aa5b59bd1e13c33eccaf49f3f9d81] drm/gem: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() git bisect good 04a5889cf75aa5b59bd1e13c33eccaf49f3f9d81 # test job: [a81648768178f6adf171d98db486b4b2613f645a] https://validation.linaro.org/scheduler/job/4174173 # good: [a81648768178f6adf171d98db486b4b2613f645a] drm/xe/pf: Invalidate LMTT after completing changes git bisect good a81648768178f6adf171d98db486b4b2613f645a # test job: [7e11e01d1f1d00cb308f9351511e9597a4f70678] https://validation.linaro.org/scheduler/job/4174180 # good: [7e11e01d1f1d00cb308f9351511e9597a4f70678] Merge tag 'amd-drm-next-6.17-2025-07-11' of https://gitlab.freedesktop.org/agd5f/linux into drm-next git bisect good 7e11e01d1f1d00cb308f9351511e9597a4f70678 # test job: [7a46d03936727f2342686cbc90e073271b1827db] https://validation.linaro.org/scheduler/job/4174187 # good: [7a46d03936727f2342686cbc90e073271b1827db] drm/komeda: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() git bisect good 7a46d03936727f2342686cbc90e073271b1827db # test job: [3f019d749671b21c31cf1290e6c6a9f107e78cb8] https://validation.linaro.org/scheduler/job/4174193 # good: [3f019d749671b21c31cf1290e6c6a9f107e78cb8] drm/vmwgfx: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() git bisect good 3f019d749671b21c31cf1290e6c6a9f107e78cb8 # test job: [28c5c486380cc29e82b7747e999b3238f2887539] https://validation.linaro.org/scheduler/job/4174202 # bad: [28c5c486380cc29e82b7747e999b3238f2887539] drm/amdgpu: Fix missing unlocking in an error path in amdgpu_userq_create() git bisect bad 28c5c486380cc29e82b7747e999b3238f2887539 # test job: [41ab92d35ccd2d66bfb049bd34cd95f0304b0240] https://validation.linaro.org/scheduler/job/4174211 # bad: [41ab92d35ccd2d66bfb049bd34cd95f0304b0240] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory git bisect bad 41ab92d35ccd2d66bfb049bd34cd95f0304b0240 # first bad commit: [41ab92d35ccd2d66bfb049bd34cd95f0304b0240] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Re: [PATCH v2 19/19] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Quoted 9 lines · Mark Brown
Quoted 5 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Now that everyone passes along the format info to
drm_helper_mode_fill_fb_struct()we can make this behaviour mandatory and drop the extra lookup.This patch, which is in -next as
41ab92d35ccd2d66, appears to be triggering warnings on TI x15 boards:
This regression is still present in today's -next, I've not seen any response to my report?
Re: [PATCH v2 19/19] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Quoted 8 lines · Mark Brown
Quoted 7 lines · Mark Brown
Quoted 5 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
Now that everyone passes along the format info to
drm_helper_mode_fill_fb_struct()we can make this behaviour mandatory and drop the extra lookup.
Quoted 5 lines
Quoted 2 lines
This patch, which is in -next as
41ab92d35ccd2d66, appears to be triggering warnings on TI x15 boards:This regression is still present in today's -next, I've not seen any response to my report?
Looks like the following would fix it, could you give it a go?:
drivers/gpu/drm/omapdrm/omap_fb.c +1 -1
@@ -440,7 +440,7 @@ struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, plane->dma_addr =0 ; } -drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb, format, mode_cmd); ret =drm_framebuffer_init (dev, fb, &omap_framebuffer_funcs);if (ret) {
Mark Brown
Tested-byRe: [PATCH v2 19/19] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Quoted 6 lines · Imre Deak
Quoted 2 lines · Mark Brown
This regression is still present in today's -next, I've not seen any response to my report?
Looks like the following would fix it, could you give it a go?:
Yes, that seems to do the trick thanks!
Re: [PATCH v2 19/19] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Quoted 11 lines · Mark Brown
Quoted 6 lines · Imre Deak
Quoted 2 lines · Mark Brown
This regression is still present in today's -next, I've not seen any response to my report?
Looks like the following would fix it, could you give it a go?:
Yes, that seems to do the trick thanks!
Tested-by Mark Brown <[email protected]>
Ok, thanks for testing it. I realized that it's better to fix this aligning with the conversion for the rest of the drivers in the original
[1] patchset, could you still give a try if the corresponding patch [2] also fixes the issue for you?
Thanks,
Imre
[1] https://lore.kernel.org/all/[email protected]
[2] https://lore.kernel.org/all/[email protected]
Re: [PATCH v2 19/19] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Quoted 5 lines · Imre Deak
Ok, thanks for testing it. I realized that it's better to fix this aligning with the conversion for the rest of the drivers in the original
[1] patchset, could you still give a try if the corresponding patch [2] also fixes the issue for you?
Looks like Nouveau is broken the same way:
drivers/gpu/drm/nouveau/nouveau_display.c nouveau_framebuffer_new(struct drm_device *dev, · line 327
Quoted 13 lines
drivers/gpu/drm/nouveau/nouveau_display.c +1
-1@@ -321,7 +321,7 @@ nouveau_framebuffer_new(struct drm_device *dev,if (!(fb = *pfb =kzalloc (sizeof (*fb),GFP_KERNEL )))return -ENOMEM ; -drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); fb->obj[0 ] = gem; ret =drm_framebuffer_init (dev, fb, &nouveau_framebuffer_funcs);
fb->format is NULL when drm_framebuffer_init() is called. This is in the drm-misc-next branch.
Re: [PATCH v2 19/19] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Quoted 17 lines · Timur Tabi
Quoted 5 lines · Imre Deak
Ok, thanks for testing it. I realized that it's better to fix this aligning with the conversion for the rest of the drivers in the original
[1] patchset, could you still give a try if the corresponding patch [2] also fixes the issue for you?Looks like Nouveau is broken the same way:
Quoted 8 lines
drivers/gpu/drm/nouveau/nouveau_display.c +0
-0@@ -321,7 +321,7 @@ nouveau_framebuffer_new(struct drm_device *dev,if (!(fb = *pfb =kzalloc (sizeof (*fb),GFP_KERNEL )))return -ENOMEM ;
Quoted 8 lines
drivers/gpu/drm/nouveau/nouveau_display.c nouveau_framebuffer_new(struct drm_device *dev, · line 327
Quoted 5 lines
drivers/gpu/drm/nouveau/nouveau_display.c +1
-1-drm_helper_mode_fill_fb_struct (dev, fb, mode_cmd); +drm_helper_mode_fill_fb_struct (dev, fb,NULL , mode_cmd); fb->obj[0 ] = gem; ret =drm_framebuffer_init (dev, fb, &nouveau_framebuffer_funcs);
fb->formatis NULL whendrm_framebuffer_init()is called. This is in the drm-misc-next branch.
The issue got fixed by
https://cgit.freedesktop.org/drm/drm-misc/commit/?h=drm-misc-next-fixes&id=d2b524c90643
Re: [PATCH v2 19/19] drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Quoted 5 lines · Imre Deak
Quoted 2 lines
fb->formatis NULL whendrm_framebuffer_init()is called. This is in the drm-misc-next branch.The issue got fixed by
https://cgit.freedesktop.org/drm/drm-misc/commit/?h=drm-misc-next-fixes&id=d2b524c90643
I think I see my confusion. There are two DRM trees on freedesktop.org:
✗ CI.checkpatch: warning for drm: Eliminate redundant drm_format_info lookups (rev7)
In reply to Ville Syrjala== Series Details ==
== Series Details ==
Series: drm: Eliminate redundant drm_format_info lookups (rev7)
URL : https://patchwork.freedesktop.org/series/147542/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master f8ff75ae1d2127635239b134695774ed4045d05b
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit e8556d3ea42cc7f8baf08acc357d9a3dbbee08ca
Author: Ville Syrjälä <[email protected]> Date: Tue Jul 1 12:07:22 2025 +0300
drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Now that everyone passes along the format info to drm_helper_mode_fill_fb_struct() we can make this behaviour mandatory and drop the extra lookup.
+ /mt/dim checkpatch 9f3690735949ad5f24ece89cf2e91c2750ea580f drm-intel0baf7e23caff drm: Pass pixel_format+modifier to .get_format_info()80a63c628461 drm: Pass pixel_format+modifier directly to drm_get_format_info()189e87b357ad drm: Look up the format info earlieree7f012a56e2 drm: Pass the format info to .fb_create()
-:101: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?) #101:
const struct drm_mode_fb_cmd2 *mode_cmd);
total: 0 errors, 1 warnings, 0 checks, 426 lines checkeda12ef10176ba drm: Allow the caller to pass in the format info to drm_helper_mode_fill_fb_struct() -:26: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?) #26:
const struct drm_mode_fb_cmd2 *mode_cmd)
total: 0 errors, 1 warnings, 0 checks, 157 lines checked82eff1af3bee drm/malidp: Pass along the format info from .fb_create() malidp_verify_afbc_framebuffer_size() 4cbdf009fce1 drm/gem: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() 720a4940c09e drm/gem/afbc: Eliminate redundant drm_get_format_info()b20b9797d007 drm/amdgpu: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() 50402a9c05c4 drm/armada: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() e862921f0feb drm/exynos: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() de99e64fc3cb drm/gma500: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() d467326005d1 drm/i915: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() 60dd6312bb2c drm/komeda: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() eee7a1ba705f drm/msm: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() 942e6cfc5afc drm/tegra: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() afd89164de0f drm/virtio: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() 2fac6e07e14c drm/vmwgfx: Pass along the format info from .fb_create() to drm_helper_mode_fill_fb_struct() e8556d3ea42c drm: Make passing of format info to drm_helper_mode_fill_fb_struct() mandatory
Patchwork
CI✓ CI.KUnit: success for drm: Eliminate redundant drm_format_info lookups (rev7)
In reply to Ville Syrjala== Series Details ==
== Series Details ==
Series: drm: Eliminate redundant drm_format_info lookups (rev7)
URL : https://patchwork.freedesktop.org/series/147542/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig [10:29:13] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [10:29:17] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [10:29:43] Starting KUnit Kernel (1/1)... [10:29:43] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [10:29:44] ================== guc_buf (11 subtests) =================== [10:29:44] [PASSED] test_smallest [10:29:44] [PASSED] test_largest [10:29:44] [PASSED] test_granular [10:29:44] [PASSED] test_unique [10:29:44] [PASSED] test_overlap [10:29:44] [PASSED] test_reusable [10:29:44] [PASSED] test_too_big [10:29:44] [PASSED] test_flush [10:29:44] [PASSED] test_lookup [10:29:44] [PASSED] test_data [10:29:44] [PASSED] test_class [10:29:44] ===================== [PASSED] guc_buf ===================== [10:29:44] =================== guc_dbm (7 subtests) =================== [10:29:44] [PASSED] test_empty [10:29:44] [PASSED] test_default [10:29:44] ======================== test_size ======================== [10:29:44] [PASSED] 4 [10:29:44] [PASSED] 8 [10:29:44] [PASSED] 32 [10:29:44] [PASSED] 256 [10:29:44] ==================== [PASSED] test_size ==================== [10:29:44] ======================= test_reuse ======================== [10:29:44] [PASSED] 4 [10:29:44] [PASSED] 8 [10:29:44] [PASSED] 32 [10:29:44] [PASSED] 256 [10:29:44] =================== [PASSED] test_reuse ==================== [10:29:44] =================== test_range_overlap ==================== [10:29:44] [PASSED] 4 [10:29:44] [PASSED] 8 [10:29:44] [PASSED] 32 [10:29:44] [PASSED] 256 [10:29:44] =============== [PASSED] test_range_overlap ================ [10:29:44] =================== test_range_compact ==================== [10:29:44] [PASSED] 4 [10:29:44] [PASSED] 8 [10:29:44] [PASSED] 32 [10:29:44] [PASSED] 256 [10:29:44] =============== [PASSED] test_range_compact ================ [10:29:44] ==================== test_range_spare ===================== [10:29:44] [PASSED] 4 [10:29:44] [PASSED] 8 [10:29:44] [PASSED] 32 [10:29:44] [PASSED] 256 [10:29:44] ================ [PASSED] test_range_spare ================= [10:29:44] ===================== [PASSED] guc_dbm ===================== [10:29:44] =================== guc_idm (6 subtests) =================== [10:29:44] [PASSED] bad_init [10:29:44] [PASSED] no_init [10:29:44] [PASSED] init_fini [10:29:44] [PASSED] check_used [10:29:44] [PASSED] check_quota [10:29:44] [PASSED] check_all [10:29:44] ===================== [PASSED] guc_idm ===================== [10:29:44] ================== no_relay (3 subtests) =================== [10:29:44] [PASSED] xe_drops_guc2pf_if_not_ready [10:29:44] [PASSED] xe_drops_guc2vf_if_not_ready [10:29:44] [PASSED] xe_rejects_send_if_not_ready [10:29:44] ==================== [PASSED] no_relay ===================== [10:29:44] ================== pf_relay (14 subtests) ================== [10:29:44] [PASSED] pf_rejects_guc2pf_too_short [10:29:44] [PASSED] pf_rejects_guc2pf_too_long [10:29:44] [PASSED] pf_rejects_guc2pf_no_payload [10:29:44] [PASSED] pf_fails_no_payload [10:29:44] [PASSED] pf_fails_bad_origin [10:29:44] [PASSED] pf_fails_bad_type [10:29:44] [PASSED] pf_txn_reports_error [10:29:44] [PASSED] pf_txn_sends_pf2guc [10:29:44] [PASSED] pf_sends_pf2guc [10:29:44] [SKIPPED] pf_loopback_nop [10:29:44] [SKIPPED] pf_loopback_echo [10:29:44] [SKIPPED] pf_loopback_fail [10:29:44] [SKIPPED] pf_loopback_busy [10:29:44] [SKIPPED] pf_loopback_retry [10:29:44] ==================== [PASSED] pf_relay ===================== [10:29:44] ================== vf_relay (3 subtests) =================== [10:29:44] [PASSED] vf_rejects_guc2vf_too_short [10:29:44] [PASSED] vf_rejects_guc2vf_too_long [10:29:44] [PASSED] vf_rejects_guc2vf_no_payload [10:29:44] ==================== [PASSED] vf_relay ===================== [10:29:44] ================= pf_service (11 subtests) ================= [10:29:44] [PASSED] pf_negotiate_any [10:29:44] [PASSED] pf_negotiate_base_match [10:29:44] [PASSED] pf_negotiate_base_newer [10:29:44] [PASSED] pf_negotiate_base_next [10:29:44] [SKIPPED] pf_negotiate_base_older [10:29:44] [PASSED] pf_negotiate_base_prev [10:29:44] [PASSED] pf_negotiate_latest_match [10:29:44] [PASSED] pf_negotiate_latest_newer [10:29:44] [PASSED] pf_negotiate_latest_next [10:29:44] [SKIPPED] pf_negotiate_latest_older [10:29:44] [SKIPPED] pf_negotiate_latest_prev [10:29:44] =================== [PASSED] pf_service ==================== [10:29:44] ===================== lmtt (1 subtest) ===================== [10:29:44] ======================== test_ops ========================= [10:29:44] [PASSED] 2-level [10:29:44] [PASSED] multi-level [10:29:44] ==================== [PASSED] test_ops ===================== [10:29:44] ====================== [PASSED] lmtt ======================= [10:29:44] =================== xe_mocs (2 subtests) =================== [10:29:44] ================ xe_live_mocs_kernel_kunit ================ [10:29:44] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============ [10:29:44] ================ xe_live_mocs_reset_kunit ================= [10:29:44] ============ [SKIPPED] xe_live_mocs_reset_kunit ============ [10:29:44] ==================== [SKIPPED] xe_mocs ===================== [10:29:44] ================= xe_migrate (2 subtests) ================== [10:29:44] ================= xe_migrate_sanity_kunit ================= [10:29:44] ============ [SKIPPED] xe_migrate_sanity_kunit ============= [10:29:44] ================== xe_validate_ccs_kunit ================== [10:29:44] ============= [SKIPPED] xe_validate_ccs_kunit ============== [10:29:44] =================== [SKIPPED] xe_migrate =================== [10:29:44] ================== xe_dma_buf (1 subtest) ================== [10:29:44] ==================== xe_dma_buf_kunit ===================== [10:29:44] ================ [SKIPPED] xe_dma_buf_kunit ================ [10:29:44] =================== [SKIPPED] xe_dma_buf =================== [10:29:44] ================= xe_bo_shrink (1 subtest) ================= [10:29:44] =================== xe_bo_shrink_kunit ==================== [10:29:44] =============== [SKIPPED] xe_bo_shrink_kunit =============== [10:29:44] ================== [SKIPPED] xe_bo_shrink ================== [10:29:44] ==================== xe_bo (2 subtests) ==================== [10:29:44] ================== xe_ccs_migrate_kunit =================== [10:29:44] ============== [SKIPPED] xe_ccs_migrate_kunit ============== [10:29:44] ==================== xe_bo_evict_kunit ==================== [10:29:44] =============== [SKIPPED] xe_bo_evict_kunit ================ [10:29:44] ===================== [SKIPPED] xe_bo ====================== [10:29:44] ==================== args (11 subtests) ==================== [10:29:44] [PASSED] count_args_test [10:29:44] [PASSED] call_args_example [10:29:44] [PASSED] call_args_test [10:29:44] [PASSED] drop_first_arg_example [10:29:44] [PASSED] drop_first_arg_test [10:29:44] [PASSED] first_arg_example [10:29:44] [PASSED] first_arg_test [10:29:44] [PASSED] last_arg_example [10:29:44] [PASSED] last_arg_test [10:29:44] [PASSED] pick_arg_example [10:29:44] [PASSED] sep_comma_example [10:29:44] ====================== [PASSED] args ======================= [10:29:44] =================== xe_pci (2 subtests) ==================== [10:29:44] ==================== check_graphics_ip ==================== [10:29:44] [PASSED] 12.70 Xe_LPG [10:29:44] [PASSED] 12.71 Xe_LPG [10:29:44] [PASSED] 12.74 Xe_LPG+ [10:29:44] [PASSED] 20.01 Xe2_HPG [10:29:44] [PASSED] 20.02 Xe2_HPG [10:29:44] [PASSED] 20.04 Xe2_LPG [10:29:44] [PASSED] 30.00 Xe3_LPG [10:29:44] [PASSED] 30.01 Xe3_LPG [10:29:44] [PASSED] 30.03 Xe3_LPG [10:29:44] ================ [PASSED] check_graphics_ip ================ [10:29:44] ===================== check_media_ip ====================== [10:29:44] [PASSED] 13.00 Xe_LPM+ [10:29:44] [PASSED] 13.01 Xe2_HPM [10:29:44] [PASSED] 20.00 Xe2_LPM [10:29:44] [PASSED] 30.00 Xe3_LPM [10:29:44] [PASSED] 30.02 Xe3_LPM stty: 'standard input': Inappropriate ioctl for device [10:29:44] ================= [PASSED] check_media_ip ================== [10:29:44] ===================== [PASSED] xe_pci ====================== [10:29:44] =================== xe_rtp (2 subtests) ==================== [10:29:44] =============== xe_rtp_process_to_sr_tests ================ [10:29:44] [PASSED] coalesce-same-reg [10:29:44] [PASSED] no-match-no-add [10:29:44] [PASSED] match-or [10:29:44] [PASSED] match-or-xfail [10:29:44] [PASSED] no-match-no-add-multiple-rules [10:29:44] [PASSED] two-regs-two-entries [10:29:44] [PASSED] clr-one-set-other [10:29:44] [PASSED] set-field [10:29:44] [PASSED] conflict-duplicate [10:29:44] [PASSED] conflict-not-disjoint [10:29:44] [PASSED] conflict-reg-type [10:29:44] =========== [PASSED] xe_rtp_process_to_sr_tests ============ [10:29:44] ================== xe_rtp_process_tests =================== [10:29:44] [PASSED] active1 [10:29:44] [PASSED] active2 [10:29:44] [PASSED] active-inactive [10:29:44] [PASSED] inactive-active [10:29:44] [PASSED] inactive-1st_or_active-inactive [10:29:44] [PASSED] inactive-2nd_or_active-inactive [10:29:44] [PASSED] inactive-last_or_active-inactive [10:29:44] [PASSED] inactive-no_or_active-inactive [10:29:44] ============== [PASSED] xe_rtp_process_tests =============== [10:29:44] ===================== [PASSED] xe_rtp ====================== [10:29:44] ==================== xe_wa (1 subtest) ===================== [10:29:44] ======================== xe_wa_gt ========================= [10:29:44] [PASSED] TIGERLAKE (B0) [10:29:44] [PASSED] DG1 (A0) [10:29:44] [PASSED] DG1 (B0) [10:29:44] [PASSED] ALDERLAKE_S (A0) [10:29:44] [PASSED] ALDERLAKE_S (B0) [10:29:44] [PASSED] ALDERLAKE_S (C0) [10:29:44] [PASSED] ALDERLAKE_S (D0) [10:29:44] [PASSED] ALDERLAKE_P (A0) [10:29:44] [PASSED] ALDERLAKE_P (B0) [10:29:44] [PASSED] ALDERLAKE_P (C0) [10:29:44] [PASSED] ALDERLAKE_S_RPLS (D0) [10:29:44] [PASSED] ALDERLAKE_P_RPLU (E0) [10:29:44] [PASSED] DG2_G10 (C0) [10:29:44] [PASSED] DG2_G11 (B1) [10:29:44] [PASSED] DG2_G12 (A1) [10:29:44] [PASSED] METEORLAKE (g:A0, m:A0) [10:29:44] [PASSED] METEORLAKE (g:A0, m:A0) [10:29:44] [PASSED] METEORLAKE (g:A0, m:A0) [10:29:44] [PASSED] LUNARLAKE (g:A0, m:A0) [10:29:44] [PASSED] LUNARLAKE (g:B0, m:A0) [10:29:44] [PASSED] BATTLEMAGE (g:A0, m:A1) [10:29:44] ==================== [PASSED] xe_wa_gt ===================== [10:29:44] ====================== [PASSED] xe_wa ====================== [10:29:44] ============================================================ [10:29:44] Testing complete. Ran 145 tests: passed: 129, skipped: 16 [10:29:44] Elapsed time: 31.203s total, 4.144s configuring, 26.743s building, 0.310s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig [10:29:44] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [10:29:45] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [10:30:07] Starting KUnit Kernel (1/1)... [10:30:07] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [10:30:07] == drm_test_atomic_get_connector_for_encoder (1 subtest) === [10:30:07] [PASSED] drm_test_drm_atomic_get_connector_for_encoder [10:30:07] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ==== [10:30:07] =========== drm_validate_clone_mode (2 subtests) =========== [10:30:07] ============== drm_test_check_in_clone_mode =============== [10:30:07] [PASSED] in_clone_mode [10:30:07] [PASSED] not_in_clone_mode [10:30:07] ========== [PASSED] drm_test_check_in_clone_mode =========== [10:30:07] =============== drm_test_check_valid_clones =============== [10:30:07] [PASSED] not_in_clone_mode [10:30:07] [PASSED] valid_clone [10:30:07] [PASSED] invalid_clone [10:30:07] =========== [PASSED] drm_test_check_valid_clones =========== [10:30:07] ============= [PASSED] drm_validate_clone_mode ============= [10:30:07] ============= drm_validate_modeset (1 subtest) ============= [10:30:07] [PASSED] drm_test_check_connector_changed_modeset [10:30:07] ============== [PASSED] drm_validate_modeset =============== [10:30:07] ====== drm_test_bridge_get_current_state (2 subtests) ====== [10:30:07] [PASSED] drm_test_drm_bridge_get_current_state_atomic [10:30:07] [PASSED] drm_test_drm_bridge_get_current_state_legacy [10:30:07] ======== [PASSED] drm_test_bridge_get_current_state ======== [10:30:07] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ====== [10:30:07] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic [10:30:07] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled [10:30:07] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy [10:30:07] ======== [PASSED] drm_test_bridge_helper_reset_crtc ======== [10:30:07] ============== drm_bridge_alloc (2 subtests) =============== [10:30:07] [PASSED] drm_test_drm_bridge_alloc_basic [10:30:07] [PASSED] drm_test_drm_bridge_alloc_get_put [10:30:07] ================ [PASSED] drm_bridge_alloc ================= [10:30:07] ================== drm_buddy (7 subtests) ================== [10:30:07] [PASSED] drm_test_buddy_alloc_limit [10:30:07] [PASSED] drm_test_buddy_alloc_optimistic [10:30:07] [PASSED] drm_test_buddy_alloc_pessimistic [10:30:07] [PASSED] drm_test_buddy_alloc_pathological [10:30:07] [PASSED] drm_test_buddy_alloc_contiguous [10:30:07] [PASSED] drm_test_buddy_alloc_clear [10:30:07] [PASSED] drm_test_buddy_alloc_range_bias [10:30:07] ==================== [PASSED] drm_buddy ==================== [10:30:07] ============= drm_cmdline_parser (40 subtests) ============= [10:30:07] [PASSED] drm_test_cmdline_force_d_only [10:30:07] [PASSED] drm_test_cmdline_force_D_only_dvi [10:30:07] [PASSED] drm_test_cmdline_force_D_only_hdmi [10:30:07] [PASSED] drm_test_cmdline_force_D_only_not_digital [10:30:07] [PASSED] drm_test_cmdline_force_e_only [10:30:07] [PASSED] drm_test_cmdline_res [10:30:07] [PASSED] drm_test_cmdline_res_vesa [10:30:07] [PASSED] drm_test_cmdline_res_vesa_rblank [10:30:07] [PASSED] drm_test_cmdline_res_rblank [10:30:07] [PASSED] drm_test_cmdline_res_bpp [10:30:07] [PASSED] drm_test_cmdline_res_refresh [10:30:07] [PASSED] drm_test_cmdline_res_bpp_refresh [10:30:07] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced [10:30:07] [PASSED] drm_test_cmdline_res_bpp_refresh_margins [10:30:07] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off [10:30:07] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on [10:30:07] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog [10:30:07] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital [10:30:07] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on [10:30:07] [PASSED] drm_test_cmdline_res_margins_force_on [10:30:07] [PASSED] drm_test_cmdline_res_vesa_margins [10:30:07] [PASSED] drm_test_cmdline_name [10:30:07] [PASSED] drm_test_cmdline_name_bpp [10:30:07] [PASSED] drm_test_cmdline_name_option [10:30:07] [PASSED] drm_test_cmdline_name_bpp_option [10:30:07] [PASSED] drm_test_cmdline_rotate_0 [10:30:07] [PASSED] drm_test_cmdline_rotate_90 [10:30:07] [PASSED] drm_test_cmdline_rotate_180 [10:30:07] [PASSED] drm_test_cmdline_rotate_270 [10:30:07] [PASSED] drm_test_cmdline_hmirror [10:30:07] [PASSED] drm_test_cmdline_vmirror [10:30:07] [PASSED] drm_test_cmdline_margin_options [10:30:07] [PASSED] drm_test_cmdline_multiple_options [10:30:07] [PASSED] drm_test_cmdline_bpp_extra_and_option [10:30:07] [PASSED] drm_test_cmdline_extra_and_option [10:30:07] [PASSED] drm_test_cmdline_freestanding_options [10:30:07] [PASSED] drm_test_cmdline_freestanding_force_e_and_options [10:30:07] [PASSED] drm_test_cmdline_panel_orientation [10:30:07] ================ drm_test_cmdline_invalid ================= [10:30:07] [PASSED] margin_only [10:30:07] [PASSED] interlace_only [10:30:07] [PASSED] res_missing_x [10:30:07] [PASSED] res_missing_y [10:30:07] [PASSED] res_bad_y [10:30:07] [PASSED] res_missing_y_bpp [10:30:07] [PASSED] res_bad_bpp [10:30:07] [PASSED] res_bad_refresh [10:30:07] [PASSED] res_bpp_refresh_force_on_off [10:30:07] [PASSED] res_invalid_mode [10:30:07] [PASSED] res_bpp_wrong_place_mode [10:30:07] [PASSED] name_bpp_refresh [10:30:07] [PASSED] name_refresh [10:30:07] [PASSED] name_refresh_wrong_mode [10:30:07] [PASSED] name_refresh_invalid_mode [10:30:07] [PASSED] rotate_multiple [10:30:07] [PASSED] rotate_invalid_val [10:30:07] [PASSED] rotate_truncated [10:30:07] [PASSED] invalid_option [10:30:07] [PASSED] invalid_tv_option [10:30:07] [PASSED] truncated_tv_option [10:30:07] ============ [PASSED] drm_test_cmdline_invalid ============= [10:30:07] =============== drm_test_cmdline_tv_options =============== [10:30:07] [PASSED] NTSC [10:30:07] [PASSED] NTSC_443 [10:30:07] [PASSED] NTSC_J [10:30:07] [PASSED] PAL [10:30:07] [PASSED] PAL_M [10:30:07] [PASSED] PAL_N [10:30:07] [PASSED] SECAM [10:30:07] [PASSED] MONO_525 [10:30:07] [PASSED] MONO_625 [10:30:07] =========== [PASSED] drm_test_cmdline_tv_options =========== [10:30:07] =============== [PASSED] drm_cmdline_parser ================ [10:30:07] ========== drmm_connector_hdmi_init (20 subtests) ========== [10:30:07] [PASSED] drm_test_connector_hdmi_init_valid [10:30:07] [PASSED] drm_test_connector_hdmi_init_bpc_8 [10:30:07] [PASSED] drm_test_connector_hdmi_init_bpc_10 [10:30:07] [PASSED] drm_test_connector_hdmi_init_bpc_12 [10:30:07] [PASSED] drm_test_connector_hdmi_init_bpc_invalid [10:30:07] [PASSED] drm_test_connector_hdmi_init_bpc_null [10:30:07] [PASSED] drm_test_connector_hdmi_init_formats_empty [10:30:07] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb [10:30:07] === drm_test_connector_hdmi_init_formats_yuv420_allowed === [10:30:07] [PASSED] supported_formats=0x9 yuv420_allowed=1 [10:30:07] [PASSED] supported_formats=0x9 yuv420_allowed=0 [10:30:07] [PASSED] supported_formats=0x3 yuv420_allowed=1 [10:30:07] [PASSED] supported_formats=0x3 yuv420_allowed=0 [10:30:07] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed === [10:30:07] [PASSED] drm_test_connector_hdmi_init_null_ddc [10:30:07] [PASSED] drm_test_connector_hdmi_init_null_product [10:30:07] [PASSED] drm_test_connector_hdmi_init_null_vendor [10:30:07] [PASSED] drm_test_connector_hdmi_init_product_length_exact [10:30:07] [PASSED] drm_test_connector_hdmi_init_product_length_too_long [10:30:07] [PASSED] drm_test_connector_hdmi_init_product_valid [10:30:07] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact [10:30:07] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long [10:30:07] [PASSED] drm_test_connector_hdmi_init_vendor_valid [10:30:07] ========= drm_test_connector_hdmi_init_type_valid ========= [10:30:07] [PASSED] HDMI-A [10:30:07] [PASSED] HDMI-B [10:30:07] ===== [PASSED] drm_test_connector_hdmi_init_type_valid ===== [10:30:07] ======== drm_test_connector_hdmi_init_type_invalid ======== [10:30:07] [PASSED] Unknown [10:30:07] [PASSED] VGA [10:30:07] [PASSED] DVI-I [10:30:07] [PASSED] DVI-D [10:30:07] [PASSED] DVI-A [10:30:07] [PASSED] Composite [10:30:07] [PASSED] SVIDEO [10:30:07] [PASSED] LVDS [10:30:07] [PASSED] Component [10:30:07] [PASSED] DIN [10:30:07] [PASSED] DP [10:30:07] [PASSED] TV [10:30:07] [PASSED] eDP [10:30:07] [PASSED] Virtual [10:30:07] [PASSED] DSI [10:30:07] [PASSED] DPI [10:30:07] [PASSED] Writeback [10:30:07] [PASSED] SPI [10:30:07] [PASSED] USB [10:30:07] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ==== [10:30:07] ============ [PASSED] drmm_connector_hdmi_init ============= [10:30:07] ============= drmm_connector_init (3 subtests) ============= [10:30:07] [PASSED] drm_test_drmm_connector_init [10:30:07] [PASSED] drm_test_drmm_connector_init_null_ddc [10:30:07] ========= drm_test_drmm_connector_init_type_valid ========= [10:30:07] [PASSED] Unknown [10:30:07] [PASSED] VGA [10:30:07] [PASSED] DVI-I [10:30:07] [PASSED] DVI-D [10:30:07] [PASSED] DVI-A [10:30:07] [PASSED] Composite [10:30:07] [PASSED] SVIDEO [10:30:07] [PASSED] LVDS [10:30:07] [PASSED] Component [10:30:07] [PASSED] DIN [10:30:07] [PASSED] DP [10:30:07] [PASSED] HDMI-A [10:30:07] [PASSED] HDMI-B [10:30:07] [PASSED] TV [10:30:07] [PASSED] eDP [10:30:07] [PASSED] Virtual [10:30:07] [PASSED] DSI [10:30:07] [PASSED] DPI [10:30:07] [PASSED] Writeback [10:30:07] [PASSED] SPI [10:30:07] [PASSED] USB [10:30:07] ===== [PASSED] drm_test_drmm_connector_init_type_valid ===== [10:30:07] =============== [PASSED] drmm_connector_init =============== [10:30:07] ========= drm_connector_dynamic_init (6 subtests) ========== [10:30:07] [PASSED] drm_test_drm_connector_dynamic_init [10:30:07] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc [10:30:07] [PASSED] drm_test_drm_connector_dynamic_init_not_added [10:30:07] [PASSED] drm_test_drm_connector_dynamic_init_properties [10:30:07] ===== drm_test_drm_connector_dynamic_init_type_valid ====== [10:30:07] [PASSED] Unknown [10:30:07] [PASSED] VGA [10:30:07] [PASSED] DVI-I [10:30:07] [PASSED] DVI-D [10:30:07] [PASSED] DVI-A [10:30:07] [PASSED] Composite [10:30:07] [PASSED] SVIDEO [10:30:07] [PASSED] LVDS [10:30:07] [PASSED] Component [10:30:07] [PASSED] DIN [10:30:07] [PASSED] DP [10:30:07] [PASSED] HDMI-A [10:30:07] [PASSED] HDMI-B [10:30:07] [PASSED] TV [10:30:07] [PASSED] eDP [10:30:07] [PASSED] Virtual [10:30:07] [PASSED] DSI [10:30:07] [PASSED] DPI [10:30:07] [PASSED] Writeback [10:30:07] [PASSED] SPI [10:30:07] [PASSED] USB [10:30:07] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid == [10:30:07] ======== drm_test_drm_connector_dynamic_init_name ========= [10:30:07] [PASSED] Unknown [10:30:07] [PASSED] VGA [10:30:07] [PASSED] DVI-I [10:30:07] [PASSED] DVI-D [10:30:07] [PASSED] DVI-A [10:30:07] [PASSED] Composite [10:30:07] [PASSED] SVIDEO [10:30:07] [PASSED] LVDS [10:30:07] [PASSED] Component [10:30:07] [PASSED] DIN [10:30:07] [PASSED] DP [10:30:07] [PASSED] HDMI-A [10:30:07] [PASSED] HDMI-B [10:30:07] [PASSED] TV [10:30:07] [PASSED] eDP [10:30:07] [PASSED] Virtual [10:30:07] [PASSED] DSI [10:30:07] [PASSED] DPI [10:30:07] [PASSED] Writeback [10:30:07] [PASSED] SPI [10:30:07] [PASSED] USB [10:30:07] ==== [PASSED] drm_test_drm_connector_dynamic_init_name ===== [10:30:07] =========== [PASSED] drm_connector_dynamic_init ============ [10:30:07] ==== drm_connector_dynamic_register_early (4 subtests) ===== [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_early_defer [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object [10:30:07] ====== [PASSED] drm_connector_dynamic_register_early ======= [10:30:07] ======= drm_connector_dynamic_register (7 subtests) ======== [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_on_list [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_no_defer [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_no_init [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_mode_object [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_sysfs [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name [10:30:07] [PASSED] drm_test_drm_connector_dynamic_register_debugfs [10:30:07] ========= [PASSED] drm_connector_dynamic_register ========== [10:30:07] = drm_connector_attach_broadcast_rgb_property (2 subtests) = [10:30:07] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property [10:30:07] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector [10:30:07] === [PASSED] drm_connector_attach_broadcast_rgb_property === [10:30:07] ========== drm_get_tv_mode_from_name (2 subtests) ========== [10:30:07] ========== drm_test_get_tv_mode_from_name_valid =========== [10:30:07] [PASSED] NTSC [10:30:07] [PASSED] NTSC-443 [10:30:07] [PASSED] NTSC-J [10:30:07] [PASSED] PAL [10:30:07] [PASSED] PAL-M [10:30:07] [PASSED] PAL-N [10:30:07] [PASSED] SECAM [10:30:07] [PASSED] Mono [10:30:07] ====== [PASSED] drm_test_get_tv_mode_from_name_valid ======= [10:30:07] [PASSED] drm_test_get_tv_mode_from_name_truncated [10:30:07] ============ [PASSED] drm_get_tv_mode_from_name ============ [10:30:07] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) = [10:30:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb [10:30:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc [10:30:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1 [10:30:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc [10:30:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1 [10:30:07] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double [10:30:07] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid = [10:30:07] [PASSED] VIC 96 [10:30:07] [PASSED] VIC 97 [10:30:07] [PASSED] VIC 101 [10:30:07] [PASSED] VIC 102 [10:30:07] [PASSED] VIC 106 [10:30:07] [PASSED] VIC 107 [10:30:07] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid === [10:30:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc [10:30:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc [10:30:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc [10:30:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc [10:30:07] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc [10:30:07] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ==== [10:30:07] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) == [10:30:07] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ==== [10:30:07] [PASSED] Automatic [10:30:07] [PASSED] Full [10:30:07] [PASSED] Limited 16:235 [10:30:07] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name === [10:30:07] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid [10:30:07] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ==== [10:30:07] == drm_hdmi_connector_get_output_format_name (2 subtests) == [10:30:07] === drm_test_drm_hdmi_connector_get_output_format_name ==== [10:30:07] [PASSED] RGB [10:30:07] [PASSED] YUV 4:2:0 [10:30:07] [PASSED] YUV 4:2:2 [10:30:07] [PASSED] YUV 4:4:4 [10:30:07] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name === [10:30:07] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid [10:30:07] ==== [PASSED] drm_hdmi_connector_get_output_format_name ==== [10:30:07] ============= drm_damage_helper (21 subtests) ============== [10:30:07] [PASSED] drm_test_damage_iter_no_damage [10:30:07] [PASSED] drm_test_damage_iter_no_damage_fractional_src [10:30:07] [PASSED] drm_test_damage_iter_no_damage_src_moved [10:30:07] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved [10:30:07] [PASSED] drm_test_damage_iter_no_damage_not_visible [10:30:07] [PASSED] drm_test_damage_iter_no_damage_no_crtc [10:30:07] [PASSED] drm_test_damage_iter_no_damage_no_fb [10:30:07] [PASSED] drm_test_damage_iter_simple_damage [10:30:07] [PASSED] drm_test_damage_iter_single_damage [10:30:07] [PASSED] drm_test_damage_iter_single_damage_intersect_src [10:30:07] [PASSED] drm_test_damage_iter_single_damage_outside_src [10:30:07] [PASSED] drm_test_damage_iter_single_damage_fractional_src [10:30:07] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src [10:30:07] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src [10:30:07] [PASSED] drm_test_damage_iter_single_damage_src_moved [10:30:07] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved [10:30:07] [PASSED] drm_test_damage_iter_damage [10:30:07] [PASSED] drm_test_damage_iter_damage_one_intersect [10:30:07] [PASSED] drm_test_damage_iter_damage_one_outside [10:30:07] [PASSED] drm_test_damage_iter_damage_src_moved [10:30:07] [PASSED] drm_test_damage_iter_damage_not_visible [10:30:07] ================ [PASSED] drm_damage_helper ================ [10:30:07] ============== drm_dp_mst_helper (3 subtests) ============== [10:30:07] ============== drm_test_dp_mst_calc_pbn_mode ============== [10:30:07] [PASSED] Clock 154000 BPP 30 DSC disabled [10:30:07] [PASSED] Clock 234000 BPP 30 DSC disabled [10:30:07] [PASSED] Clock 297000 BPP 24 DSC disabled [10:30:07] [PASSED] Clock 332880 BPP 24 DSC enabled [10:30:07] [PASSED] Clock 324540 BPP 24 DSC enabled [10:30:07] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ========== [10:30:07] ============== drm_test_dp_mst_calc_pbn_div =============== [10:30:07] [PASSED] Link rate 2000000 lane count 4 [10:30:07] [PASSED] Link rate 2000000 lane count 2 [10:30:07] [PASSED] Link rate 2000000 lane count 1 [10:30:07] [PASSED] Link rate 1350000 lane count 4 [10:30:07] [PASSED] Link rate 1350000 lane count 2 [10:30:07] [PASSED] Link rate 1350000 lane count 1 [10:30:07] [PASSED] Link rate 1000000 lane count 4 [10:30:07] [PASSED] Link rate 1000000 lane count 2 [10:30:07] [PASSED] Link rate 1000000 lane count 1 [10:30:07] [PASSED] Link rate 810000 lane count 4 [10:30:07] [PASSED] Link rate 810000 lane count 2 [10:30:07] [PASSED] Link rate 810000 lane count 1 [10:30:07] [PASSED] Link rate 540000 lane count 4 [10:30:07] [PASSED] Link rate 540000 lane count 2 [10:30:07] [PASSED] Link rate 540000 lane count 1 [10:30:07] [PASSED] Link rate 270000 lane count 4 [10:30:07] [PASSED] Link rate 270000 lane count 2 [10:30:07] [PASSED] Link rate 270000 lane count 1 [10:30:07] [PASSED] Link rate 162000 lane count 4 [10:30:07] [PASSED] Link rate 162000 lane count 2 [10:30:07] [PASSED] Link rate 162000 lane count 1 [10:30:07] ========== [PASSED] drm_test_dp_mst_calc_pbn_div =========== [10:30:07] ========= drm_test_dp_mst_sideband_msg_req_decode ========= [10:30:07] [PASSED] DP_ENUM_PATH_RESOURCES with port number [10:30:07] [PASSED] DP_POWER_UP_PHY with port number [10:30:07] [PASSED] DP_POWER_DOWN_PHY with port number [10:30:07] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks [10:30:07] [PASSED] DP_ALLOCATE_PAYLOAD with port number [10:30:07] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI [10:30:07] [PASSED] DP_ALLOCATE_PAYLOAD with PBN [10:30:07] [PASSED] DP_QUERY_PAYLOAD with port number [10:30:07] [PASSED] DP_QUERY_PAYLOAD with VCPI [10:30:07] [PASSED] DP_REMOTE_DPCD_READ with port number [10:30:07] [PASSED] DP_REMOTE_DPCD_READ with DPCD address [10:30:07] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes [10:30:07] [PASSED] DP_REMOTE_DPCD_WRITE with port number [10:30:07] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address [10:30:07] [PASSED] DP_REMOTE_DPCD_WRITE with data array [10:30:07] [PASSED] DP_REMOTE_I2C_READ with port number [10:30:07] [PASSED] DP_REMOTE_I2C_READ with I2C device ID [10:30:07] [PASSED] DP_REMOTE_I2C_READ with transactions array [10:30:07] [PASSED] DP_REMOTE_I2C_WRITE with port number [10:30:07] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID [10:30:07] [PASSED] DP_REMOTE_I2C_WRITE with data array [10:30:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID [10:30:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID [10:30:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event [10:30:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event [10:30:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior [10:30:07] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior [10:30:07] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode ===== [10:30:07] ================ [PASSED] drm_dp_mst_helper ================ [10:30:07] ================== drm_exec (7 subtests) =================== [10:30:07] [PASSED] sanitycheck [10:30:07] [PASSED] test_lock [10:30:07] [PASSED] test_lock_unlock [10:30:07] [PASSED] test_duplicates [10:30:07] [PASSED] test_prepare [10:30:07] [PASSED] test_prepare_array [10:30:07] [PASSED] test_multiple_loops [10:30:07] ==================== [PASSED] drm_exec ===================== [10:30:07] =========== drm_format_helper_test (17 subtests) =========== [10:30:07] ============== drm_test_fb_xrgb8888_to_gray8 ============== [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ========== [10:30:07] ============= drm_test_fb_xrgb8888_to_rgb332 ============== [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ========== [10:30:07] ============= drm_test_fb_xrgb8888_to_rgb565 ============== [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ========== [10:30:07] ============ drm_test_fb_xrgb8888_to_xrgb1555 ============= [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 ========= [10:30:07] ============ drm_test_fb_xrgb8888_to_argb1555 ============= [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 ========= [10:30:07] ============ drm_test_fb_xrgb8888_to_rgba5551 ============= [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 ========= [10:30:07] ============= drm_test_fb_xrgb8888_to_rgb888 ============== [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ========== [10:30:07] ============= drm_test_fb_xrgb8888_to_bgr888 ============== [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ========== [10:30:07] ============ drm_test_fb_xrgb8888_to_argb8888 ============= [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 ========= [10:30:07] =========== drm_test_fb_xrgb8888_to_xrgb2101010 =========== [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 ======= [10:30:07] =========== drm_test_fb_xrgb8888_to_argb2101010 =========== [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 ======= [10:30:07] ============== drm_test_fb_xrgb8888_to_mono =============== [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ========== [PASSED] drm_test_fb_xrgb8888_to_mono =========== [10:30:07] ==================== drm_test_fb_swab ===================== [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ================ [PASSED] drm_test_fb_swab ================= [10:30:07] ============ drm_test_fb_xrgb8888_to_xbgr8888 ============= [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 ========= [10:30:07] ============ drm_test_fb_xrgb8888_to_abgr8888 ============= [10:30:07] [PASSED] single_pixel_source_buffer [10:30:07] [PASSED] single_pixel_clip_rectangle [10:30:07] [PASSED] well_known_colors [10:30:07] [PASSED] destination_pitch [10:30:07] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 ========= [10:30:07] ================= drm_test_fb_clip_offset ================= [10:30:07] [PASSED] pass through [10:30:07] [PASSED] horizontal offset [10:30:07] [PASSED] vertical offset [10:30:07] [PASSED] horizontal and vertical offset [10:30:07] [PASSED] horizontal offset (custom pitch) [10:30:07] [PASSED] vertical offset (custom pitch) [10:30:07] [PASSED] horizontal and vertical offset (custom pitch) [10:30:07] ============= [PASSED] drm_test_fb_clip_offset ============= [10:30:07] =================== drm_test_fb_memcpy ==================== [10:30:07] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258) [10:30:07] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258) [10:30:07] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559) [10:30:07] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258) [10:30:07] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258) [10:30:07] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559) [10:30:07] [PASSED] well_known_colors: XB24 little-endian (0x34324258) [10:30:07] [PASSED] well_known_colors: XRA8 little-endian (0x38415258) [10:30:07] [PASSED] well_known_colors: YU24 little-endian (0x34325559) [10:30:07] [PASSED] destination_pitch: XB24 little-endian (0x34324258) [10:30:07] [PASSED] destination_pitch: XRA8 little-endian (0x38415258) [10:30:07] [PASSED] destination_pitch: YU24 little-endian (0x34325559) [10:30:07] =============== [PASSED] drm_test_fb_memcpy ================ [10:30:07] ============= [PASSED] drm_format_helper_test ============== [10:30:07] ================= drm_format (18 subtests) ================= [10:30:07] [PASSED] drm_test_format_block_width_invalid [10:30:07] [PASSED] drm_test_format_block_width_one_plane [10:30:07] [PASSED] drm_test_format_block_width_two_plane [10:30:07] [PASSED] drm_test_format_block_width_three_plane [10:30:07] [PASSED] drm_test_format_block_width_tiled [10:30:07] [PASSED] drm_test_format_block_height_invalid [10:30:07] [PASSED] drm_test_format_block_height_one_plane [10:30:07] [PASSED] drm_test_format_block_height_two_plane [10:30:07] [PASSED] drm_test_format_block_height_three_plane [10:30:07] [PASSED] drm_test_format_block_height_tiled [10:30:07] [PASSED] drm_test_format_min_pitch_invalid [10:30:07] [PASSED] drm_test_format_min_pitch_one_plane_8bpp [10:30:07] [PASSED] drm_test_format_min_pitch_one_plane_16bpp [10:30:07] [PASSED] drm_test_format_min_pitch_one_plane_24bpp [10:30:07] [PASSED] drm_test_format_min_pitch_one_plane_32bpp [10:30:07] [PASSED] drm_test_format_min_pitch_two_plane [10:30:07] [PASSED] drm_test_format_min_pitch_three_plane_8bpp [10:30:07] [PASSED] drm_test_format_min_pitch_tiled [10:30:07] =================== [PASSED] drm_format ==================== [10:30:07] ============== drm_framebuffer (10 subtests) =============== [10:30:07] ========== drm_test_framebuffer_check_src_coords ========== [10:30:07] [PASSED] Success: source fits into fb [10:30:07] [PASSED] Fail: overflowing fb with x-axis coordinate [10:30:07] [PASSED] Fail: overflowing fb with y-axis coordinate [10:30:07] [PASSED] Fail: overflowing fb with source width [10:30:07] [PASSED] Fail: overflowing fb with source height [10:30:07] ====== [PASSED] drm_test_framebuffer_check_src_coords ====== [10:30:07] [PASSED] drm_test_framebuffer_cleanup [10:30:07] =============== drm_test_framebuffer_create =============== [10:30:07] [PASSED] ABGR8888 normal sizes [10:30:07] [PASSED] ABGR8888 max sizes [10:30:07] [PASSED] ABGR8888 pitch greater than min required [10:30:07] [PASSED] ABGR8888 pitch less than min required [10:30:07] [PASSED] ABGR8888 Invalid width [10:30:07] [PASSED] ABGR8888 Invalid buffer handle [10:30:07] [PASSED] No pixel format [10:30:07] [PASSED] ABGR8888 Width 0 [10:30:07] [PASSED] ABGR8888 Height 0 [10:30:07] [PASSED] ABGR8888 Out of bound height * pitch combination [10:30:07] [PASSED] ABGR8888 Large buffer offset [10:30:07] [PASSED] ABGR8888 Buffer offset for inexistent plane [10:30:07] [PASSED] ABGR8888 Invalid flag [10:30:07] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers [10:30:07] [PASSED] ABGR8888 Valid buffer modifier [10:30:07] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE) [10:30:07] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS [10:30:07] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS [10:30:07] [PASSED] NV12 Normal sizes [10:30:07] [PASSED] NV12 Max sizes [10:30:07] [PASSED] NV12 Invalid pitch [10:30:07] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag [10:30:07] [PASSED] NV12 different modifier per-plane [10:30:07] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE [10:30:07] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS [10:30:07] [PASSED] NV12 Modifier for inexistent plane [10:30:07] [PASSED] NV12 Handle for inexistent plane [10:30:07] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS [10:30:07] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier [10:30:07] [PASSED] YVU420 Normal sizes [10:30:07] [PASSED] YVU420 Max sizes [10:30:07] [PASSED] YVU420 Invalid pitch [10:30:07] [PASSED] YVU420 Different pitches [10:30:07] [PASSED] YVU420 Different buffer offsets/pitches [10:30:07] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS [10:30:07] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS [10:30:07] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS [10:30:07] [PASSED] YVU420 Valid modifier [10:30:07] [PASSED] YVU420 Different modifiers per plane [10:30:07] [PASSED] YVU420 Modifier for inexistent plane [10:30:07] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR) [10:30:07] [PASSED] X0L2 Normal sizes [10:30:07] [PASSED] X0L2 Max sizes [10:30:07] [PASSED] X0L2 Invalid pitch [10:30:07] [PASSED] X0L2 Pitch greater than minimum required [10:30:07] [PASSED] X0L2 Handle for inexistent plane [10:30:07] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set [10:30:07] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set [10:30:07] [PASSED] X0L2 Valid modifier [10:30:07] [PASSED] X0L2 Modifier for inexistent plane [10:30:07] =========== [PASSED] drm_test_framebuffer_create =========== [10:30:07] [PASSED] drm_test_framebuffer_free [10:30:07] [PASSED] drm_test_framebuffer_init [10:30:07] [PASSED] drm_test_framebuffer_init_bad_format [10:30:07] [PASSED] drm_test_framebuffer_init_dev_mismatch [10:30:07] [PASSED] drm_test_framebuffer_lookup [10:30:07] [PASSED] drm_test_framebuffer_lookup_inexistent [10:30:07] [PASSED] drm_test_framebuffer_modifiers_not_supported [10:30:07] ================= [PASSED] drm_framebuffer ================= [10:30:07] ================ drm_gem_shmem (8 subtests) ================ [10:30:07] [PASSED] drm_gem_shmem_test_obj_create [10:30:07] [PASSED] drm_gem_shmem_test_obj_create_private [10:30:07] [PASSED] drm_gem_shmem_test_pin_pages [10:30:07] [PASSED] drm_gem_shmem_test_vmap [10:30:07] [PASSED] drm_gem_shmem_test_get_pages_sgt [10:30:07] [PASSED] drm_gem_shmem_test_get_sg_table [10:30:07] [PASSED] drm_gem_shmem_test_madvise [10:30:07] [PASSED] drm_gem_shmem_test_purge [10:30:07] ================== [PASSED] drm_gem_shmem ================== [10:30:07] === drm_atomic_helper_connector_hdmi_check (27 subtests) === [10:30:07] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode [10:30:07] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1 [10:30:07] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode [10:30:07] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1 [10:30:07] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode [10:30:07] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1 [10:30:07] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 ======= [10:30:07] [PASSED] Automatic [10:30:07] [PASSED] Full [10:30:07] [PASSED] Limited 16:235 [10:30:07] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 === [10:30:07] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed [10:30:07] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed [10:30:07] [PASSED] drm_test_check_disable_connector [10:30:07] [PASSED] drm_test_check_hdmi_funcs_reject_rate [10:30:07] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb [10:30:07] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420 [10:30:07] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422 [10:30:07] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420 [10:30:07] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420 [10:30:07] [PASSED] drm_test_check_output_bpc_crtc_mode_changed [10:30:07] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed [10:30:07] [PASSED] drm_test_check_output_bpc_dvi [10:30:07] [PASSED] drm_test_check_output_bpc_format_vic_1 [10:30:07] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only [10:30:07] [PASSED] drm_test_check_output_bpc_format_display_rgb_only [10:30:07] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only [10:30:07] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only [10:30:07] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc [10:30:07] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc [10:30:07] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc [10:30:07] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ====== [10:30:07] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ==== [10:30:07] [PASSED] drm_test_check_broadcast_rgb_value [10:30:07] [PASSED] drm_test_check_bpc_8_value [10:30:07] [PASSED] drm_test_check_bpc_10_value [10:30:07] [PASSED] drm_test_check_bpc_12_value [10:30:07] [PASSED] drm_test_check_format_value [10:30:07] [PASSED] drm_test_check_tmds_char_value [10:30:07] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ====== [10:30:07] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) = [10:30:07] [PASSED] drm_test_check_mode_valid [10:30:07] [PASSED] drm_test_check_mode_valid_reject [10:30:07] [PASSED] drm_test_check_mode_valid_reject_rate [10:30:07] [PASSED] drm_test_check_mode_valid_reject_max_clock [10:30:07] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid === [10:30:07] ================= drm_managed (2 subtests) ================= [10:30:07] [PASSED] drm_test_managed_release_action [10:30:07] [PASSED] drm_test_managed_run_action [10:30:07] =================== [PASSED] drm_managed =================== [10:30:07] =================== drm_mm (6 subtests) ==================== [10:30:07] [PASSED] drm_test_mm_init [10:30:07] [PASSED] drm_test_mm_debug [10:30:07] [PASSED] drm_test_mm_align32 [10:30:07] [PASSED] drm_test_mm_align64 [10:30:07] [PASSED] drm_test_mm_lowest [10:30:07] [PASSED] drm_test_mm_highest [10:30:07] ===================== [PASSED] drm_mm ====================== [10:30:07] ============= drm_modes_analog_tv (5 subtests) ============= [10:30:07] [PASSED] drm_test_modes_analog_tv_mono_576i [10:30:07] [PASSED] drm_test_modes_analog_tv_ntsc_480i [10:30:07] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined [10:30:07] [PASSED] drm_test_modes_analog_tv_pal_576i [10:30:07] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined [10:30:07] =============== [PASSED] drm_modes_analog_tv =============== [10:30:07] ============== drm_plane_helper (2 subtests) =============== [10:30:07] =============== drm_test_check_plane_state ================ [10:30:07] [PASSED] clipping_simple [10:30:07] [PASSED] clipping_rotate_reflect [10:30:07] [PASSED] positioning_simple [10:30:07] [PASSED] upscaling [10:30:07] [PASSED] downscaling [10:30:07] [PASSED] rounding1 [10:30:07] [PASSED] rounding2 [10:30:07] [PASSED] rounding3 [10:30:07] [PASSED] rounding4 [10:30:07] =========== [PASSED] drm_test_check_plane_state ============ [10:30:07] =========== drm_test_check_invalid_plane_state ============ [10:30:07] [PASSED] positioning_invalid [10:30:07] [PASSED] upscaling_invalid [10:30:07] [PASSED] downscaling_invalid [10:30:07] ======= [PASSED] drm_test_check_invalid_plane_state ======== [10:30:07] ================ [PASSED] drm_plane_helper ================= [10:30:07] ====== drm_connector_helper_tv_get_modes (1 subtest) ======= [10:30:07] ====== drm_test_connector_helper_tv_get_modes_check ======= [10:30:07] [PASSED] None [10:30:07] [PASSED] PAL [10:30:07] [PASSED] NTSC [10:30:07] [PASSED] Both, NTSC Default [10:30:07] [PASSED] Both, PAL Default [10:30:07] [PASSED] Both, NTSC Default, with PAL on command-line [10:30:07] [PASSED] Both, PAL Default, with NTSC on command-line [10:30:07] == [PASSED] drm_test_connector_helper_tv_get_modes_check === [10:30:07] ======== [PASSED] drm_connector_helper_tv_get_modes ======== [10:30:07] ================== drm_rect (9 subtests) =================== [10:30:07] [PASSED] drm_test_rect_clip_scaled_div_by_zero [10:30:07] [PASSED] drm_test_rect_clip_scaled_not_clipped [10:30:07] [PASSED] drm_test_rect_clip_scaled_clipped [10:30:07] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned [10:30:07] ================= drm_test_rect_intersect ================= [10:30:07] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0 [10:30:07] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1 [10:30:07] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0 [10:30:07] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1 [10:30:07] [PASSED] right x left: 2x1+0+0 x 3x1+1+0 [10:30:07] [PASSED] left x right: 3x1+1+0 x 2x1+0+0 [10:30:07] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1 [10:30:07] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0 [10:30:07] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1 [10:30:07] [PASSED] touching side: 1x1+0+0 x 1x1+1+0 [10:30:07] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0 [10:30:07] [PASSED] inside another: 2x2+0+0 x 1x1+1+1 [10:30:07] [PASSED] far away: 1x1+0+0 x 1x1+3+6 [10:30:07] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10 [10:30:07] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10 [10:30:07] ============= [PASSED] drm_test_rect_intersect ============= [10:30:07] ================ drm_test_rect_calc_hscale ================ [10:30:07] [PASSED] normal use [10:30:07] [PASSED] out of max range [10:30:07] [PASSED] out of min range [10:30:07] [PASSED] zero dst [10:30:07] [PASSED] negative src [10:30:07] [PASSED] negative dst [10:30:07] ============ [PASSED] drm_test_rect_calc_hscale ============ [10:30:07] ================ drm_test_rect_calc_vscale ================ [10:30:07] [PASSED] normal use [10:30:07] [PASSED] out of max range [10:30:07] [PASSED] out of min range [10:30:07] [PASSED] zero dst [10:30:07] [PASSED] negative src [10:30:07] [PASSED] negative dst [10:30:07] ============ [PASSED] drm_test_rect_calc_vscale ============ [10:30:07] ================== drm_test_rect_rotate =================== [10:30:07] [PASSED] reflect-x [10:30:07] [PASSED] reflect-y [10:30:07] [PASSED] rotate-0 [10:30:07] [PASSED] rotate-90 [10:30:07] [PASSED] rotate-180 [10:30:07] [PASSED] rotate-270 stty: 'standard input': Inappropriate ioctl for device [10:30:07] ============== [PASSED] drm_test_rect_rotate =============== [10:30:07] ================ drm_test_rect_rotate_inv ================= [10:30:07] [PASSED] reflect-x [10:30:07] [PASSED] reflect-y [10:30:07] [PASSED] rotate-0 [10:30:07] [PASSED] rotate-90 [10:30:07] [PASSED] rotate-180 [10:30:07] [PASSED] rotate-270 [10:30:07] ============ [PASSED] drm_test_rect_rotate_inv ============= [10:30:07] ==================== [PASSED] drm_rect ===================== [10:30:07] ============ drm_sysfb_modeset_test (1 subtest) ============ [10:30:07] ============ drm_test_sysfb_build_fourcc_list ============= [10:30:07] [PASSED] no native formats [10:30:07] [PASSED] XRGB8888 as native format [10:30:07] [PASSED] remove duplicates [10:30:07] [PASSED] convert alpha formats [10:30:07] [PASSED] random formats [10:30:07] ======== [PASSED] drm_test_sysfb_build_fourcc_list ========= [10:30:07] ============= [PASSED] drm_sysfb_modeset_test ============== [10:30:07] ============================================================ [10:30:07] Testing complete. Ran 616 tests: passed: 616 [10:30:07] Elapsed time: 23.276s total, 1.659s configuring, 21.447s building, 0.148s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig [10:30:07] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig [10:30:09] Building KUnit Kernel ... Populating config with: $ make ARCH=um O=.kunit olddefconfig Building with: $ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48 [10:30:17] Starting KUnit Kernel (1/1)... [10:30:17] ============================================================ Running tests with: $ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt [10:30:17] ================= ttm_device (5 subtests) ================== [10:30:17] [PASSED] ttm_device_init_basic [10:30:17] [PASSED] ttm_device_init_multiple [10:30:17] [PASSED] ttm_device_fini_basic [10:30:17] [PASSED] ttm_device_init_no_vma_man [10:30:17] ================== ttm_device_init_pools ================== [10:30:17] [PASSED] No DMA allocations, no DMA32 required [10:30:17] [PASSED] DMA allocations, DMA32 required [10:30:17] [PASSED] No DMA allocations, DMA32 required [10:30:17] [PASSED] DMA allocations, no DMA32 required [10:30:17] ============== [PASSED] ttm_device_init_pools ============== [10:30:17] =================== [PASSED] ttm_device ==================== [10:30:17] ================== ttm_pool (8 subtests) =================== [10:30:17] ================== ttm_pool_alloc_basic =================== [10:30:17] [PASSED] One page [10:30:17] [PASSED] More than one page [10:30:17] [PASSED] Above the allocation limit [10:30:17] [PASSED] One page, with coherent DMA mappings enabled [10:30:17] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [10:30:17] ============== [PASSED] ttm_pool_alloc_basic =============== [10:30:17] ============== ttm_pool_alloc_basic_dma_addr ============== [10:30:17] [PASSED] One page [10:30:17] [PASSED] More than one page [10:30:17] [PASSED] Above the allocation limit [10:30:17] [PASSED] One page, with coherent DMA mappings enabled [10:30:17] [PASSED] Above the allocation limit, with coherent DMA mappings enabled [10:30:17] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ========== [10:30:17] [PASSED] ttm_pool_alloc_order_caching_match [10:30:17] [PASSED] ttm_pool_alloc_caching_mismatch [10:30:17] [PASSED] ttm_pool_alloc_order_mismatch [10:30:17] [PASSED] ttm_pool_free_dma_alloc [10:30:17] [PASSED] ttm_pool_free_no_dma_alloc [10:30:17] [PASSED] ttm_pool_fini_basic [10:30:17] ==================== [PASSED] ttm_pool ===================== [10:30:17] ================ ttm_resource (8 subtests) ================= [10:30:17] ================= ttm_resource_init_basic ================= [10:30:17] [PASSED] Init resource in TTM_PL_SYSTEM [10:30:17] [PASSED] Init resource in TTM_PL_VRAM [10:30:17] [PASSED] Init resource in a private placement [10:30:17] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags [10:30:17] ============= [PASSED] ttm_resource_init_basic ============= [10:30:17] [PASSED] ttm_resource_init_pinned [10:30:17] [PASSED] ttm_resource_fini_basic [10:30:17] [PASSED] ttm_resource_manager_init_basic [10:30:17] [PASSED] ttm_resource_manager_usage_basic [10:30:17] [PASSED] ttm_resource_manager_set_used_basic [10:30:17] [PASSED] ttm_sys_man_alloc_basic [10:30:17] [PASSED] ttm_sys_man_free_basic [10:30:17] ================== [PASSED] ttm_resource =================== [10:30:17] =================== ttm_tt (15 subtests) =================== [10:30:17] ==================== ttm_tt_init_basic ==================== [10:30:17] [PASSED] Page-aligned size [10:30:17] [PASSED] Extra pages requested [10:30:17] ================ [PASSED] ttm_tt_init_basic ================ [10:30:17] [PASSED] ttm_tt_init_misaligned [10:30:17] [PASSED] ttm_tt_fini_basic [10:30:17] [PASSED] ttm_tt_fini_sg [10:30:17] [PASSED] ttm_tt_fini_shmem [10:30:17] [PASSED] ttm_tt_create_basic [10:30:17] [PASSED] ttm_tt_create_invalid_bo_type [10:30:17] [PASSED] ttm_tt_create_ttm_exists [10:30:17] [PASSED] ttm_tt_create_failed [10:30:17] [PASSED] ttm_tt_destroy_basic [10:30:17] [PASSED] ttm_tt_populate_null_ttm [10:30:17] [PASSED] ttm_tt_populate_populated_ttm [10:30:17] [PASSED] ttm_tt_unpopulate_basic [10:30:17] [PASSED] ttm_tt_unpopulate_empty_ttm [10:30:17] [PASSED] ttm_tt_swapin_basic [10:30:17] ===================== [PASSED] ttm_tt ====================== [10:30:17] =================== ttm_bo (14 subtests) =================== [10:30:17] =========== ttm_bo_reserve_optimistic_no_ticket =========== [10:30:17] [PASSED] Cannot be interrupted and sleeps [10:30:17] [PASSED] Cannot be interrupted, locks straight away [10:30:17] [PASSED] Can be interrupted, sleeps [10:30:17] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket ======= [10:30:17] [PASSED] ttm_bo_reserve_locked_no_sleep [10:30:17] [PASSED] ttm_bo_reserve_no_wait_ticket [10:30:17] [PASSED] ttm_bo_reserve_double_resv [10:30:17] [PASSED] ttm_bo_reserve_interrupted [10:30:17] [PASSED] ttm_bo_reserve_deadlock [10:30:17] [PASSED] ttm_bo_unreserve_basic [10:30:17] [PASSED] ttm_bo_unreserve_pinned [10:30:17] [PASSED] ttm_bo_unreserve_bulk [10:30:17] [PASSED] ttm_bo_put_basic [10:30:17] [PASSED] ttm_bo_put_shared_resv [10:30:17] [PASSED] ttm_bo_pin_basic [10:30:17] [PASSED] ttm_bo_pin_unpin_resource [10:30:17] [PASSED] ttm_bo_multiple_pin_one_unpin [10:30:17] ===================== [PASSED] ttm_bo ====================== [10:30:17] ============== ttm_bo_validate (22 subtests) =============== [10:30:17] ============== ttm_bo_init_reserved_sys_man =============== [10:30:17] [PASSED] Buffer object for userspace [10:30:17] [PASSED] Kernel buffer object [10:30:17] [PASSED] Shared buffer object [10:30:17] ========== [PASSED] ttm_bo_init_reserved_sys_man =========== [10:30:17] ============== ttm_bo_init_reserved_mock_man ============== [10:30:17] [PASSED] Buffer object for userspace [10:30:17] [PASSED] Kernel buffer object [10:30:17] [PASSED] Shared buffer object [10:30:17] ========== [PASSED] ttm_bo_init_reserved_mock_man ========== [10:30:17] [PASSED] ttm_bo_init_reserved_resv [10:30:17] ================== ttm_bo_validate_basic ================== [10:30:17] [PASSED] Buffer object for userspace [10:30:17] [PASSED] Kernel buffer object [10:30:17] [PASSED] Shared buffer object [10:30:17] ============== [PASSED] ttm_bo_validate_basic ============== [10:30:17] [PASSED] ttm_bo_validate_invalid_placement [10:30:17] ============= ttm_bo_validate_same_placement ============== [10:30:17] [PASSED] System manager [10:30:17] [PASSED] VRAM manager [10:30:17] ========= [PASSED] ttm_bo_validate_same_placement ========== [10:30:17] [PASSED] ttm_bo_validate_failed_alloc [10:30:17] [PASSED] ttm_bo_validate_pinned [10:30:17] [PASSED] ttm_bo_validate_busy_placement [10:30:17] ================ ttm_bo_validate_multihop ================= [10:30:17] [PASSED] Buffer object for userspace [10:30:17] [PASSED] Kernel buffer object [10:30:17] [PASSED] Shared buffer object [10:30:17] ============ [PASSED] ttm_bo_validate_multihop ============= [10:30:17] ========== ttm_bo_validate_no_placement_signaled ========== [10:30:17] [PASSED] Buffer object in system domain, no page vector [10:30:17] [PASSED] Buffer object in system domain with an existing page vector [10:30:17] ====== [PASSED] ttm_bo_validate_no_placement_signaled ====== [10:30:17] ======== ttm_bo_validate_no_placement_not_signaled ======== [10:30:17] [PASSED] Buffer object for userspace [10:30:17] [PASSED] Kernel buffer object [10:30:17] [PASSED] Shared buffer object [10:30:17] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ==== [10:30:17] [PASSED] ttm_bo_validate_move_fence_signaled [10:30:17] ========= ttm_bo_validate_move_fence_not_signaled ========= [10:30:17] [PASSED] Waits for GPU [10:30:17] [PASSED] Tries to lock straight away [10:30:17] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled ===== [10:30:17] [PASSED] ttm_bo_validate_swapout [10:30:17] [PASSED] ttm_bo_validate_happy_evict [10:30:17] [PASSED] ttm_bo_validate_all_pinned_evict [10:30:17] [PASSED] ttm_bo_validate_allowed_only_evict [10:30:17] [PASSED] ttm_bo_validate_deleted_evict [10:30:17] [PASSED] ttm_bo_validate_busy_domain_evict [10:30:17] [PASSED] ttm_bo_validate_evict_gutting [10:30:17] [PASSED] ttm_bo_validate_recrusive_evict stty: 'standard input': Inappropriate ioctl for device [10:30:17] ================= [PASSED] ttm_bo_validate ================= [10:30:17] ============================================================ [10:30:17] Testing complete. Ran 102 tests: passed: 102 [10:30:17] Elapsed time: 10.078s total, 1.674s configuring, 7.786s building, 0.501s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
Patchwork
CI✗ CI.checksparse: warning for drm: Eliminate redundant drm_format_info lookups (rev7)
In reply to Ville Syrjala== Series Details ==
== Series Details ==
Series: drm: Eliminate redundant drm_format_info lookups (rev7)
URL : https://patchwork.freedesktop.org/series/147542/
State : warning
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 9f3690735949ad5f24ece89cf2e91c2750ea580f
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-+drivers/gpu/drm/drm_drv.c:452:6: warning: context imbalance in 'drm_dev_enter' - different lock contexts for basic block+drivers/gpu/drm/drm_drv.c: note: in included file (through include/linux/notifier.h, arch/x86/include/asm/uprobes.h, include/linux/uprobes.h, include/linux/mm_types.h, include/linux/mmzone.h, include/linux/gfp.h, ...):+drivers/gpu/drm/drm_plane.c:213:24: warning: Using plain integer as NULL pointer+drivers/gpu/drm/i915/display/intel_alpm.c: note: in included file:+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file:+drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file:+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2019:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2032:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2032:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_display_types.h:2032:24: warning: unreplaced symbol '<noident>'+drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file:+drivers/gpu/drm/i915/display/intel_hotplug.c: note: in included file:+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file:+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:+drivers/gpu/drm/i915/gt/intel_reset.c:1572:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block +drivers/gpu/drm/i915/gt/intel_sseu.c:598:17: error: too long token expansion+drivers/gpu/drm/i915/i915_active.c:1063:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block +drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: expected struct list_head const *list +drivers/gpu/drm/i915/i915_drm_client.c:92:9: got struct list_head [noderef] __rcu *pos +drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head * +drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head * +drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu * +drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces) +drivers/gpu/drm/i915/i915_irq.c:492:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:492:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:500:16: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:500:16: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:505:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:505:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:505:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:543:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:543:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:551:16: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:551:16: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:556:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:556:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:556:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:600:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:600:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:603:15: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:603:15: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:607:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:607:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/i915_irq.c:614:9: warning: unreplaced symbol '<noident>' +drivers/gpu/drm/i915/intel_uncore.c:1927:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock +drivers/gpu/drm/i915/intel_uncore.c:1928:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock +drivers/gpu/drm/i915/intel_uncore.c:1929:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock +drivers/gpu/drm/i915/intel_uncore.c:1930:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock +drivers/gpu/drm/i915/intel_uncore.c:1995:1: warning: context imbalance in 'gen6_write8' - unexpected unlock +drivers/gpu/drm/i915/intel_uncore.c:1996:1: warning: context imbalance in 'gen6_write16' - unexpected unlock +drivers/gpu/drm/i915/intel_uncore.c:1997:1: warning: context imbalance in 'gen6_write32' - unexpected unlock +drivers/gpu/drm/i915/intel_uncore.c:2017:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock +drivers/gpu/drm/i915/intel_uncore.c:2018:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock +drivers/gpu/drm/i915/intel_uncore.c:2019:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock +drivers/gpu/drm/i915/intel_wakeref.c:145:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock +drivers/gpu/drm/ttm/ttm_bo.c:1199:31: warning: symbol 'ttm_swap_ops' was not declared. Should it be static?+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: expected void *virtual+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: got void [noderef] __iomem *+drivers/gpu/drm/ttm/ttm_bo_util.c:329:38: warning: incorrect type in assignment (different address spaces)+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: expected void *virtual+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: got void [noderef] __iomem *+drivers/gpu/drm/ttm/ttm_bo_util.c:332:38: warning: incorrect type in assignment (different address spaces)+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: expected void *virtual+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: got void [noderef] __iomem *+drivers/gpu/drm/ttm/ttm_bo_util.c:335:38: warning: incorrect type in assignment (different address spaces)+drivers/gpu/drm/ttm/ttm_bo_util.c:468:28: expected void volatile [noderef] __iomem *addr+drivers/gpu/drm/ttm/ttm_bo_util.c:468:28: got void *virtual+drivers/gpu/drm/ttm/ttm_bo_util.c:468:28: warning: incorrect type in argument 1 (different address spaces) +./include/linux/srcu.h:400:9: warning: context imbalance in 'drm_dev_exit' - unexpected unlock
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
Patchwork
CI✓ Xe.CI.BAT: success for drm: Eliminate redundant drm_format_info lookups (rev7)
In reply to Ville Syrjala== Series Details ==
== Series Details ==
Series: drm: Eliminate redundant drm_format_info lookups (rev7)
URL : https://patchwork.freedesktop.org/series/147542/
State : success
== Summary ==
CI Bug Log - changes from xe-3328-9f3690735949ad5f24ece89cf2e91c2750ea580f_BAT -> xe-pw-147542v7_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (8 -> 8)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-147542v7_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@intel_sysfs_debugfs@xe-sysfs-read-all-entries:
- bat-lnl-2: [PASS][1] -> [ABORT][2] ([Intel XE#4624] / [Intel XE#4966])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-3328-9f3690735949ad5f24ece89cf2e91c2750ea580f/bat-lnl-2/igt@[email protected]
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-147542v7/bat-lnl-2/igt@[email protected]
[Intel XE#4624]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4624
[Intel XE#4966]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4966
Build changes
-------------
* Linux: xe-3328-9f3690735949ad5f24ece89cf2e91c2750ea580f -> xe-pw-147542v7
IGT_8432: 4871829d8b7117553eb2dc1bdb9a0d18de428a98 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-3328-9f3690735949ad5f24ece89cf2e91c2750ea580f: 9f3690735949ad5f24ece89cf2e91c2750ea580f
xe-pw-147542v7: 147542v7
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-147542v7/index.html
Patchwork
CI✗ i915.CI.BAT: failure for drm: Eliminate redundant drm_format_info lookups (rev7)
In reply to Ville Syrjala== Series Details ==
== Series Details ==
Series: drm: Eliminate redundant drm_format_info lookups (rev7)
URL : https://patchwork.freedesktop.org/series/147544/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_16780 -> Patchwork_147544v7
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_147544v7 absolutely need to be verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_147544v7, please notify your bug team ([email protected]) to allow them to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/index.html
Participating hosts (43 -> 42)
------------------------------
Missing (1): fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_147544v7:
### IGT changes ###
#### Possible regressions ####
* igt@i915_selftest@live@gt_pm:
- bat-jsl-1: [PASS][1] -> [DMESG-FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/bat-jsl-1/igt@i915_selftest@live@gt_pm.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/bat-jsl-1/igt@i915_selftest@live@gt_pm.html
* igt@kms_pm_rpm@basic-rte:
- bat-rpls-4: [PASS][3] -> [DMESG-WARN][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/bat-rpls-4/igt@[email protected]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/bat-rpls-4/igt@[email protected]
#### Warnings ####
* igt@i915_selftest@live:
- bat-jsl-1: [DMESG-WARN][5] ([i915#13827]) -> [DMESG-FAIL][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/bat-jsl-1/igt@[email protected]
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/bat-jsl-1/igt@[email protected]
Known issues
------------
Here are the changes found in Patchwork_147544v7 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live:
- bat-adlp-6: [PASS][7] -> [ABORT][8] ([i915#14527])
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/bat-adlp-6/igt@[email protected]
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/bat-adlp-6/igt@[email protected]
* igt@i915_selftest@live@guc:
- bat-adlp-6: [PASS][9] -> [ABORT][10] ([i915#14365])
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/bat-adlp-6/igt@i915_selftest@[email protected]
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/bat-adlp-6/igt@i915_selftest@[email protected]
* igt@i915_selftest@live@workarounds:
- bat-dg2-9: [PASS][11] -> [DMESG-FAIL][12] ([i915#12061]) +1 other test dmesg-fail
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/bat-dg2-9/igt@i915_selftest@[email protected]
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/bat-dg2-9/igt@i915_selftest@[email protected]
#### Possible fixes ####
* igt@dmabuf@all-tests@dma_fence_chain:
- fi-bsw-n3050: [INCOMPLETE][13] ([i915#12904]) -> [PASS][14] +1 other test pass
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/fi-bsw-n3050/igt@dmabuf@all-tests@dma_fence_chain.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/fi-bsw-n3050/igt@dmabuf@all-tests@dma_fence_chain.html
* igt@i915_selftest@live@hangcheck:
- bat-jsl-1: [DMESG-WARN][15] ([i915#13827]) -> [PASS][16]
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/bat-jsl-1/igt@i915_selftest@[email protected]
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/bat-jsl-1/igt@i915_selftest@[email protected]
* igt@i915_selftest@live@workarounds:
- bat-arlh-3: [DMESG-FAIL][17] ([i915#12061]) -> [PASS][18] +1 other test pass
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/bat-arlh-3/igt@i915_selftest@[email protected]
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/bat-arlh-3/igt@i915_selftest@[email protected]
- bat-arls-5: [DMESG-FAIL][19] ([i915#12061]) -> [PASS][20] +1 other test pass
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_16780/bat-arls-5/igt@i915_selftest@[email protected]
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/bat-arls-5/igt@i915_selftest@[email protected]
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#12904]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12904
[i915#13827]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13827
[i915#14365]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14365
[i915#14527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14527
Build changes
-------------
* Linux: CI_DRM_16780 -> Patchwork_147544v7
CI-20190529: 20190529
CI_DRM_16780: 9f3690735949ad5f24ece89cf2e91c2750ea580f @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8432: 4871829d8b7117553eb2dc1bdb9a0d18de428a98 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_147544v7: 9f3690735949ad5f24ece89cf2e91c2750ea580f @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_147544v7/index.html
Ville Syrjälä
AppliedQuoted 34 lines · Ville Syrjala
From: Ville Syrjälä <[email protected]>
I noticed a bunch of redundant (and rather expensive)
drm_format_infolookups in some traces recently. This series is an attempt to eliminate them.v2: Rebase
Ville Syrjälä (19):
drm: Pass pixel_format+modifier to .get_format_info()
drm: Pass pixel_format+modifier directly todrm_get_format_info()
drm: Look up the format info earlier
drm: Pass the format info to .fb_create()
drm: Allow the caller to pass in the format info to
drm_helper_mode_fill_fb_struct()
drm/malidp: Pass along the format info from .fb_create()
malidp_verify_afbc_framebuffer_size()
drm/gem: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/gem/afbc: Eliminate redundantdrm_get_format_info()drm/amdgpu: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/armada: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/exynos: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/gma500: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/i915: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/komeda: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/msm: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
Quoted 8 lines
drm/tegra: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/virtio: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm/vmwgfx: Pass along the format info from .fb_create() to
drm_helper_mode_fill_fb_struct()
drm: Make passing of format info todrm_helper_mode_fill_fb_struct()
mandatory
Pushed to drm-misc-next. Thanks for the reviews and acks.
Quoted 61 lines
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 6 ++- drivers/gpu/drm/amd/amdgpu/amdgpu_display.h | 1 + .../amd/display/amdgpu_dm/amdgpu_dm_plane.c | 4 +- .../amd/display/amdgpu_dm/amdgpu_dm_plane.h | 2 +- .../arm/display/komeda/komeda_framebuffer.c | 3 +- .../arm/display/komeda/komeda_framebuffer.h | 1 + drivers/gpu/drm/arm/malidp_drv.c | 12 +++--- drivers/gpu/drm/armada/armada_fb.c | 12 +++--- drivers/gpu/drm/armada/armada_fb.h | 4 +- drivers/gpu/drm/armada/armada_fbdev.c | 5 ++- drivers/gpu/drm/drm_fourcc.c | 10 +++-- drivers/gpu/drm/drm_framebuffer.c | 27 ++++++------ drivers/gpu/drm/drm_gem_framebuffer_helper.c | 42 +++++++++---------- drivers/gpu/drm/drm_modeset_helper.c | 4 +- drivers/gpu/drm/exynos/exynos_drm_fb.c | 7 ++-- drivers/gpu/drm/exynos/exynos_drm_fb.h | 1 + drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 5 ++- drivers/gpu/drm/gma500/fbdev.c | 5 ++- drivers/gpu/drm/gma500/framebuffer.c | 14 ++++--- drivers/gpu/drm/gma500/psb_drv.h | 1 + drivers/gpu/drm/i915/display/intel_fb.c | 20 +++++---- drivers/gpu/drm/i915/display/intel_fb.h | 5 ++- drivers/gpu/drm/i915/display/intel_fbdev_fb.c | 6 ++- .../drm/i915/display/intel_plane_initial.c | 3 +- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 5 ++- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 5 +-- drivers/gpu/drm/msm/msm_drv.h | 3 +- drivers/gpu/drm/msm/msm_fb.c | 18 ++++---- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 9 +--- drivers/gpu/drm/nouveau/nouveau_display.c | 6 ++- drivers/gpu/drm/nouveau/nouveau_display.h | 1 + drivers/gpu/drm/omapdrm/omap_fb.c | 10 ++--- drivers/gpu/drm/omapdrm/omap_fb.h | 3 +- drivers/gpu/drm/qxl/qxl_display.c | 3 +- drivers/gpu/drm/radeon/radeon_display.c | 3 +- drivers/gpu/drm/radeon/radeon_fbdev.c | 3 +- drivers/gpu/drm/renesas/rcar-du/rcar_du_kms.c | 3 +- drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 3 +- .../gpu/drm/renesas/shmobile/shmob_drm_kms.c | 3 +- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 11 ++--- drivers/gpu/drm/tegra/drm.h | 2 + drivers/gpu/drm/tegra/fb.c | 7 ++-- drivers/gpu/drm/tegra/fbdev.c | 4 +- drivers/gpu/drm/tests/drm_framebuffer_test.c | 1 + drivers/gpu/drm/vc4/vc4_kms.c | 3 +- drivers/gpu/drm/virtio/virtgpu_display.c | 6 ++- drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 15 ++++--- drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 1 + drivers/gpu/drm/xe/display/intel_fbdev_fb.c | 6 ++- drivers/gpu/drm/xe/display/xe_plane_initial.c | 2 +- drivers/gpu/drm/xen/xen_drm_front_kms.c | 3 +- drivers/gpu/drm/xlnx/zynqmp_kms.c | 3 +- include/drm/drm_fourcc.h | 3 +- include/drm/drm_gem_framebuffer_helper.h | 6 +++ include/drm/drm_mode_config.h | 3 +- include/drm/drm_modeset_helper.h | 2 + 56 files changed, 214 insertions(+), 142 deletions(-)Signature · 1 line
2.49.0
Signature · 2 lines
Ville Syrjälä Intel