dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Sinclair Yeh <syeh@vmware.com>
To: Eric Engestrom <eric@engestrom.ch>
Cc: "David Airlie" <airlied@linux.ie>,
	dri-devel@lists.freedesktop.org,
	"Wei Yongjun" <yongjun_wei@trendmicro.com.cn>,
	"Daniel Vetter" <daniel.vetter@intel.com>,
	"Flora Cui" <Flora.Cui@amd.com>,
	"Gustavo Padovan" <gustavo.padovan@collabora.co.uk>,
	"Tom St Denis" <tom.stdenis@amd.com>,
	"Chunming Zhou" <David1.Zhou@amd.com>,
	"Thomas Hellstrom" <thellstrom@vmware.com>,
	"Laurent Pinchart" <laurent.pinchart+renesas@ideasonboard.com>,
	"Xinliang Liu" <z.liuxinliang@hisilicon.com>,
	"Xinwei Kong" <kong.kongxinwei@hisilicon.com>,
	"VMware Graphics" <linux-graphics-maintainer@vmware.com>,
	"Vitaly Prosyak" <vitaly.prosyak@amd.com>,
	"Eric Engestrom" <eric.engestrom@imgtec.com>,
	"Alexandre Demers" <alexandre.f.demers@gmail.com>,
	intel-gfx@lists.freedesktop.org,
	"Emily Deng" <Emily.Deng@amd.com>,
	"Colin Ian King" <colin.king@canonical.com>,
	"Junwei Zhang" <Jerry.Zhang@amd.com>
Subject: Re: [PATCH v2] drm: move allocation out of drm_get_format_name()
Date: Mon, 7 Nov 2016 10:12:21 -0800	[thread overview]
Message-ID: <20161107181221.GA15287@promb-2n-dhcp72.eng.vmware.com> (raw)
In-Reply-To: <20161107004821.25369-1-eric@engestrom.ch>

Thomas has already acked the earlier version, but in case you need
it for this one, too.

vmwgfx portion:  Acked-by: Sinclair Yeh <syeh@vmware.com>

On Mon, Nov 07, 2016 at 12:48:09AM +0000, Eric Engestrom wrote:
> Fixes: 90844f00049e9f42573fd31d7c32e8fd31d3fd07
> 
>     drm: make drm_get_format_name thread-safe
> 
>     Signed-off-by: Eric Engestrom <eric@engestrom.ch>
>     [danvet: Clarify that the returned pointer must be freed with
>     kfree().]
>     Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> 
> Cc: Rob Clark <robdclark@gmail.com>
> Cc: Christian König <christian.koenig@amd.com>
> Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Eric Engestrom <eric@engestrom.ch>
> ---
> 
> v2: use single-field struct instead of typedef to let the compiler
>     enforce the type (Christian König)
> 
> ---
>  include/drm/drm_fourcc.h                        | 10 +++++-
>  drivers/gpu/drm/drm_fourcc.c                    | 14 +++------
>  drivers/gpu/drm/amd/amdgpu/dce_v10_0.c          |  7 ++---
>  drivers/gpu/drm/amd/amdgpu/dce_v11_0.c          |  7 ++---
>  drivers/gpu/drm/amd/amdgpu/dce_v6_0.c           |  3 +-
>  drivers/gpu/drm/amd/amdgpu/dce_v8_0.c           |  7 ++---
>  drivers/gpu/drm/drm_atomic.c                    |  7 +++--
>  drivers/gpu/drm/drm_crtc.c                      |  7 +++--
>  drivers/gpu/drm/drm_framebuffer.c               |  7 +++--
>  drivers/gpu/drm/drm_modeset_helper.c            |  7 +++--
>  drivers/gpu/drm/drm_plane.c                     |  7 +++--
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c |  7 ++---
>  drivers/gpu/drm/i915/i915_debugfs.c             | 10 +++---
>  drivers/gpu/drm/i915/intel_atomic_plane.c       |  8 ++---
>  drivers/gpu/drm/i915/intel_display.c            | 41 ++++++++++---------------
>  drivers/gpu/drm/radeon/atombios_crtc.c          | 14 ++++-----
>  drivers/gpu/drm/vmwgfx/vmwgfx_kms.c             |  3 +-
>  17 files changed, 80 insertions(+), 86 deletions(-)
> 
> diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h
> index dc0aafa..4b03ca0 100644
> --- a/include/drm/drm_fourcc.h
> +++ b/include/drm/drm_fourcc.h
> @@ -45,6 +45,14 @@ struct drm_format_info {
>  	u8 vsub;
>  };
>  
> +/**
> + * struct drm_format_name_buf - name of a DRM format
> + * @str: string buffer containing the format name
> + */
> +struct drm_format_name_buf {
> +	char str[32];
> +};
> +
>  const struct drm_format_info *__drm_format_info(u32 format);
>  const struct drm_format_info *drm_format_info(u32 format);
>  uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth);
> @@ -54,6 +62,6 @@ int drm_format_horz_chroma_subsampling(uint32_t format);
>  int drm_format_vert_chroma_subsampling(uint32_t format);
>  int drm_format_plane_width(int width, uint32_t format, int plane);
>  int drm_format_plane_height(int height, uint32_t format, int plane);
> -char *drm_get_format_name(uint32_t format) __malloc;
> +char *drm_get_format_name(uint32_t format, struct drm_format_name_buf *buf);
>  
>  #endif /* __DRM_FOURCC_H__ */
> diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
> index cbb8b77..99b0b60 100644
> --- a/drivers/gpu/drm/drm_fourcc.c
> +++ b/drivers/gpu/drm/drm_fourcc.c
> @@ -79,17 +79,13 @@ uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth)
>  EXPORT_SYMBOL(drm_mode_legacy_fb_format);
>  
>  /**
> - * drm_get_format_name - return a string for drm fourcc format
> + * drm_get_format_name - fill a string with a drm fourcc format's name
>   * @format: format to compute name of
> + * @buf: caller-supplied buffer
> - *
> - * Note that the buffer returned by this function is owned by the caller
> - * and will need to be freed using kfree().
>   */
> -char *drm_get_format_name(uint32_t format)
> +char *drm_get_format_name(uint32_t format, struct drm_format_name_buf *buf)
>  {
> -	char *buf = kmalloc(32, GFP_KERNEL);
> -
> -	snprintf(buf, 32,
> +	snprintf(buf->str, sizeof(buf->str),
>  		 "%c%c%c%c %s-endian (0x%08x)",
>  		 printable_char(format & 0xff),
>  		 printable_char((format >> 8) & 0xff),
> @@ -98,7 +94,7 @@ char *drm_get_format_name(uint32_t format)
>  		 format & DRM_FORMAT_BIG_ENDIAN ? "big" : "little",
>  		 format);
>  
> -	return buf;
> +	return buf->str;
>  }
>  EXPORT_SYMBOL(drm_get_format_name);
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> index 199d3f7..2924cdd 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> @@ -2032,7 +2032,7 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc,
>  	u32 tmp, viewport_w, viewport_h;
>  	int r;
>  	bool bypass_lut = false;
> -	char *format_name;
> +	struct drm_format_name_buf format_name;
>  
>  	/* no fb bound */
>  	if (!atomic && !crtc->primary->fb) {
> @@ -2144,9 +2144,8 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc,
>  		bypass_lut = true;
>  		break;
>  	default:
> -		format_name = drm_get_format_name(target_fb->pixel_format);
> -		DRM_ERROR("Unsupported screen format %s\n", format_name);
> +		DRM_ERROR("Unsupported screen format %s\n",
> +		          drm_get_format_name(target_fb->pixel_format, &format_name));
> -		kfree(format_name);
>  		return -EINVAL;
>  	}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> index ecd000e..f0e3c5c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> @@ -2013,7 +2013,7 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc,
>  	u32 tmp, viewport_w, viewport_h;
>  	int r;
>  	bool bypass_lut = false;
> -	char *format_name;
> +	struct drm_format_name_buf format_name;
>  
>  	/* no fb bound */
>  	if (!atomic && !crtc->primary->fb) {
> @@ -2125,9 +2125,8 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc,
>  		bypass_lut = true;
>  		break;
>  	default:
> -		format_name = drm_get_format_name(target_fb->pixel_format);
> -		DRM_ERROR("Unsupported screen format %s\n", format_name);
> +		DRM_ERROR("Unsupported screen format %s\n",
> +		          drm_get_format_name(target_fb->pixel_format, &format_name));
> -		kfree(format_name);
>  		return -EINVAL;
>  	}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> index 44547f9..5c6b82f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
> @@ -1456,6 +1456,7 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc,
>  	u32 viewport_w, viewport_h;
>  	int r;
>  	bool bypass_lut = false;
> +	struct drm_format_name_buf format_name;
>  
>  	/* no fb bound */
>  	if (!atomic && !crtc->primary->fb) {
> @@ -1559,7 +1560,7 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc,
>  		break;
>  	default:
>  		DRM_ERROR("Unsupported screen format %s\n",
> -			  drm_get_format_name(target_fb->pixel_format));
> +		          drm_get_format_name(target_fb->pixel_format, &format_name));
>  		return -EINVAL;
>  	}
>  
> diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> index 979aedf..5aef19d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> @@ -1910,7 +1910,7 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc,
>  	u32 viewport_w, viewport_h;
>  	int r;
>  	bool bypass_lut = false;
> -	char *format_name;
> +	struct drm_format_name_buf format_name;
>  
>  	/* no fb bound */
>  	if (!atomic && !crtc->primary->fb) {
> @@ -2015,9 +2015,8 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc,
>  		bypass_lut = true;
>  		break;
>  	default:
> -		format_name = drm_get_format_name(target_fb->pixel_format);
> -		DRM_ERROR("Unsupported screen format %s\n", format_name);
> +		DRM_ERROR("Unsupported screen format %s\n",
> +		          drm_get_format_name(target_fb->pixel_format, &format_name));
> -		kfree(format_name);
>  		return -EINVAL;
>  	}
>  
> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index c32fb3c..f29d3c5 100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -835,9 +835,10 @@ static int drm_atomic_plane_check(struct drm_plane *plane,
>  	/* Check whether this plane supports the fb pixel format. */
>  	ret = drm_plane_check_pixel_format(plane, state->fb->pixel_format);
>  	if (ret) {
> -		char *format_name = drm_get_format_name(state->fb->pixel_format);
> -		DRM_DEBUG_ATOMIC("Invalid pixel format %s\n", format_name);
> +		struct drm_format_name_buf format_name;
> +		DRM_DEBUG_ATOMIC("Invalid pixel format %s\n",
> +		                 drm_get_format_name(state->fb->pixel_format,
> +		                                     &format_name));
> -		kfree(format_name);
>  		return ret;
>  	}
>  
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 13441e2..08ac216 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -827,9 +827,10 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
>  			ret = drm_plane_check_pixel_format(crtc->primary,
>  							   fb->pixel_format);
>  			if (ret) {
> -				char *format_name = drm_get_format_name(fb->pixel_format);
> -				DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name);
> +				struct drm_format_name_buf format_name;
> +				DRM_DEBUG_KMS("Invalid pixel format %s\n",
> +				              drm_get_format_name(fb->pixel_format,
> +				                                  &format_name));
> -				kfree(format_name);
>  				goto out;
>  			}
>  		}
> diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c
> index 49fd7db..df6b180 100644
> --- a/drivers/gpu/drm/drm_framebuffer.c
> +++ b/drivers/gpu/drm/drm_framebuffer.c
> @@ -133,9 +133,10 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
>  
>  	info = __drm_format_info(r->pixel_format & ~DRM_FORMAT_BIG_ENDIAN);
>  	if (!info) {
> -		char *format_name = drm_get_format_name(r->pixel_format);
> -		DRM_DEBUG_KMS("bad framebuffer format %s\n", format_name);
> +		struct drm_format_name_buf format_name;
> +		DRM_DEBUG_KMS("bad framebuffer format %s\n",
> +		              drm_get_format_name(r->pixel_format,
> +		                                  &format_name));
> -		kfree(format_name);
>  		return -EINVAL;
>  	}
>  
> diff --git a/drivers/gpu/drm/drm_modeset_helper.c b/drivers/gpu/drm/drm_modeset_helper.c
> index 2544dfe..2f452b3 100644
> --- a/drivers/gpu/drm/drm_modeset_helper.c
> +++ b/drivers/gpu/drm/drm_modeset_helper.c
> @@ -75,10 +75,11 @@ void drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb,
>  
>  	info = drm_format_info(mode_cmd->pixel_format);
>  	if (!info || !info->depth) {
> -		char *format_name = drm_get_format_name(mode_cmd->pixel_format);
> +		struct drm_format_name_buf format_name;
>  
> -		DRM_DEBUG_KMS("non-RGB pixel format %s\n", format_name);
> +		DRM_DEBUG_KMS("non-RGB pixel format %s\n",
> +		              drm_get_format_name(mode_cmd->pixel_format,
> +		                                  &format_name));
> -		kfree(format_name);
>  
>  		fb->depth = 0;
>  		fb->bits_per_pixel = 0;
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index 249c0ae..2ba0c22 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -479,9 +479,10 @@ static int __setplane_internal(struct drm_plane *plane,
>  	/* Check whether this plane supports the fb pixel format. */
>  	ret = drm_plane_check_pixel_format(plane, fb->pixel_format);
>  	if (ret) {
> -		char *format_name = drm_get_format_name(fb->pixel_format);
> -		DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name);
> +		struct drm_format_name_buf format_name;
> +		DRM_DEBUG_KMS("Invalid pixel format %s\n",
> +		              drm_get_format_name(fb->pixel_format,
> +		                                  &format_name));
> -		kfree(format_name);
>  		goto out;
>  	}
>  
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> index 7e7a4d4..afc2b5d 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -608,17 +608,16 @@ static void ade_rdma_set(void __iomem *base, struct drm_framebuffer *fb,
>  			 u32 ch, u32 y, u32 in_h, u32 fmt)
>  {
>  	struct drm_gem_cma_object *obj = drm_fb_cma_get_gem_obj(fb, 0);
> -	char *format_name;
> +	struct drm_format_name_buf format_name;
>  	u32 reg_ctrl, reg_addr, reg_size, reg_stride, reg_space, reg_en;
>  	u32 stride = fb->pitches[0];
>  	u32 addr = (u32)obj->paddr + y * stride;
>  
>  	DRM_DEBUG_DRIVER("rdma%d: (y=%d, height=%d), stride=%d, paddr=0x%x\n",
>  			 ch + 1, y, in_h, stride, (u32)obj->paddr);
> -	format_name = drm_get_format_name(fb->pixel_format);
>  	DRM_DEBUG_DRIVER("addr=0x%x, fb:%dx%d, pixel_format=%d(%s)\n",
> -			 addr, fb->width, fb->height, fmt, format_name);
> +			 addr, fb->width, fb->height, fmt,
> +			 drm_get_format_name(fb->pixel_format, &format_name));
> -	kfree(format_name);
>  
>  	/* get reg offset */
>  	reg_ctrl = RD_CH_CTRL(ch);
> diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> index 20638d2..670423e 100644
> --- a/drivers/gpu/drm/i915/i915_debugfs.c
> +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> @@ -2971,7 +2971,7 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc)
>  	for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
>  		struct drm_plane_state *state;
>  		struct drm_plane *plane = &intel_plane->base;
> -		char *format_name;
> +		struct drm_format_name_buf format_name;
>  
>  		if (!plane->state) {
>  			seq_puts(m, "plane->state is NULL!\n");
> @@ -2981,9 +2981,9 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc)
>  		state = plane->state;
>  
>  		if (state->fb) {
> -			format_name = drm_get_format_name(state->fb->pixel_format);
> +			drm_get_format_name(state->fb->pixel_format, &format_name);
>  		} else {
> -			format_name = kstrdup("N/A", GFP_KERNEL);
> +			sprintf(format_name.str, "N/A");
>  		}
>  
>  		seq_printf(m, "\t--Plane id %d: type=%s, crtc_pos=%4dx%4d, crtc_size=%4dx%4d, src_pos=%d.%04ux%d.%04u, src_size=%d.%04ux%d.%04u, format=%s, rotation=%s\n",
> @@ -2999,10 +2999,8 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc)
>  			   ((state->src_w & 0xffff) * 15625) >> 10,
>  			   (state->src_h >> 16),
>  			   ((state->src_h & 0xffff) * 15625) >> 10,
> -			   format_name,
> +			   format_name.str,
>  			   plane_rotation(state->rotation));
> -
> -		kfree(format_name);
>  	}
>  }
>  
> diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
> index c762ae5..6c76e3d 100644
> --- a/drivers/gpu/drm/i915/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
> @@ -143,7 +143,7 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
>  		crtc_state->base.enable ? crtc_state->pipe_src_h : 0;
>  
>  	if (state->fb && drm_rotation_90_or_270(state->rotation)) {
> -		char *format_name;
> +		struct drm_format_name_buf format_name;
>  
>  		if (!(state->fb->modifier[0] == I915_FORMAT_MOD_Y_TILED ||
>  			state->fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED)) {
> @@ -159,9 +159,9 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
>  		switch (state->fb->pixel_format) {
>  		case DRM_FORMAT_C8:
>  		case DRM_FORMAT_RGB565:
> -			format_name = drm_get_format_name(state->fb->pixel_format);
> -			DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", format_name);
> +			DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n",
> +			              drm_get_format_name(state->fb->pixel_format,
> +			                                  &format_name));
> -			kfree(format_name);
>  			return -EINVAL;
>  
>  		default:
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 6f8f6ec..8209170 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -12871,7 +12871,7 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
>  
>  	DRM_DEBUG_KMS("planes on this crtc\n");
>  	list_for_each_entry(plane, &dev->mode_config.plane_list, head) {
> -		char *format_name;
> +		struct drm_format_name_buf format_name;
>  		intel_plane = to_intel_plane(plane);
>  		if (intel_plane->pipe != crtc->pipe)
>  			continue;
> @@ -12884,12 +12884,11 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
>  			continue;
>  		}
>  
> -		format_name = drm_get_format_name(fb->pixel_format);
> -
>  		DRM_DEBUG_KMS("[PLANE:%d:%s] enabled",
>  			      plane->base.id, plane->name);
>  		DRM_DEBUG_KMS("\tFB:%d, fb = %ux%u format = %s",
> -			      fb->base.id, fb->width, fb->height, format_name);
> +			      fb->base.id, fb->width, fb->height,
> +			      drm_get_format_name(fb->pixel_format, &format_name));
>  		DRM_DEBUG_KMS("\tscaler:%d src %dx%d+%d+%d dst %dx%d+%d+%d\n",
>  			      state->scaler_id,
>  			      state->base.src.x1 >> 16,
> @@ -12899,8 +12898,6 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
>  			      state->base.dst.x1, state->base.dst.y1,
>  			      drm_rect_width(&state->base.dst),
>  			      drm_rect_height(&state->base.dst));
> -
> -		kfree(format_name);
>  	}
>  }
>  
> @@ -15749,7 +15746,7 @@ static int intel_framebuffer_init(struct drm_device *dev,
>  	unsigned int tiling = i915_gem_object_get_tiling(obj);
>  	int ret;
>  	u32 pitch_limit, stride_alignment;
> -	char *format_name;
> +	struct drm_format_name_buf format_name;
>  
>  	WARN_ON(!mutex_is_locked(&dev->struct_mutex));
>  
> @@ -15840,18 +15837,16 @@ static int intel_framebuffer_init(struct drm_device *dev,
>  		break;
>  	case DRM_FORMAT_XRGB1555:
>  		if (INTEL_INFO(dev)->gen > 3) {
> -			format_name = drm_get_format_name(mode_cmd->pixel_format);
> -			DRM_DEBUG("unsupported pixel format: %s\n", format_name);
> +			DRM_DEBUG("unsupported pixel format: %s\n",
> +			          drm_get_format_name(mode_cmd->pixel_format, &format_name));
> -			kfree(format_name);
>  			return -EINVAL;
>  		}
>  		break;
>  	case DRM_FORMAT_ABGR8888:
>  		if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv) &&
>  		    INTEL_INFO(dev)->gen < 9) {
> -			format_name = drm_get_format_name(mode_cmd->pixel_format);
> -			DRM_DEBUG("unsupported pixel format: %s\n", format_name);
> +			DRM_DEBUG("unsupported pixel format: %s\n",
> +			          drm_get_format_name(mode_cmd->pixel_format, &format_name));
> -			kfree(format_name);
>  			return -EINVAL;
>  		}
>  		break;
> @@ -15859,17 +15854,15 @@ static int intel_framebuffer_init(struct drm_device *dev,
>  	case DRM_FORMAT_XRGB2101010:
>  	case DRM_FORMAT_XBGR2101010:
>  		if (INTEL_INFO(dev)->gen < 4) {
> -			format_name = drm_get_format_name(mode_cmd->pixel_format);
> -			DRM_DEBUG("unsupported pixel format: %s\n", format_name);
> +			DRM_DEBUG("unsupported pixel format: %s\n",
> +			          drm_get_format_name(mode_cmd->pixel_format, &format_name));
> -			kfree(format_name);
>  			return -EINVAL;
>  		}
>  		break;
>  	case DRM_FORMAT_ABGR2101010:
>  		if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv)) {
> -			format_name = drm_get_format_name(mode_cmd->pixel_format);
> -			DRM_DEBUG("unsupported pixel format: %s\n", format_name);
> +			DRM_DEBUG("unsupported pixel format: %s\n",
> +			          drm_get_format_name(mode_cmd->pixel_format, &format_name));
> -			kfree(format_name);
>  			return -EINVAL;
>  		}
>  		break;
> @@ -15878,16 +15871,14 @@ static int intel_framebuffer_init(struct drm_device *dev,
>  	case DRM_FORMAT_YVYU:
>  	case DRM_FORMAT_VYUY:
>  		if (INTEL_INFO(dev)->gen < 5) {
> -			format_name = drm_get_format_name(mode_cmd->pixel_format);
> -			DRM_DEBUG("unsupported pixel format: %s\n", format_name);
> +			DRM_DEBUG("unsupported pixel format: %s\n",
> +			          drm_get_format_name(mode_cmd->pixel_format, &format_name));
> -			kfree(format_name);
>  			return -EINVAL;
>  		}
>  		break;
>  	default:
> -		format_name = drm_get_format_name(mode_cmd->pixel_format);
> -		DRM_DEBUG("unsupported pixel format: %s\n", format_name);
> +		DRM_DEBUG("unsupported pixel format: %s\n",
> +		          drm_get_format_name(mode_cmd->pixel_format, &format_name));
> -		kfree(format_name);
>  		return -EINVAL;
>  	}
>  
> diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
> index 74f99ba..05f4ebe 100644
> --- a/drivers/gpu/drm/radeon/atombios_crtc.c
> +++ b/drivers/gpu/drm/radeon/atombios_crtc.c
> @@ -1156,7 +1156,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
>  	u32 tmp, viewport_w, viewport_h;
>  	int r;
>  	bool bypass_lut = false;
> -	char *format_name;
> +	struct drm_format_name_buf format_name;
>  
>  	/* no fb bound */
>  	if (!atomic && !crtc->primary->fb) {
> @@ -1260,9 +1260,8 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
>  		bypass_lut = true;
>  		break;
>  	default:
> -		format_name = drm_get_format_name(target_fb->pixel_format);
> -		DRM_ERROR("Unsupported screen format %s\n", format_name);
> +		DRM_ERROR("Unsupported screen format %s\n",
> +		          drm_get_format_name(target_fb->pixel_format, &format_name));
> -		kfree(format_name);
>  		return -EINVAL;
>  	}
>  
> @@ -1473,7 +1472,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
>  	u32 viewport_w, viewport_h;
>  	int r;
>  	bool bypass_lut = false;
> -	char *format_name;
> +	struct drm_format_name_buf format_name;
>  
>  	/* no fb bound */
>  	if (!atomic && !crtc->primary->fb) {
> @@ -1563,9 +1562,8 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
>  		bypass_lut = true;
>  		break;
>  	default:
> -		format_name = drm_get_format_name(target_fb->pixel_format);
> -		DRM_ERROR("Unsupported screen format %s\n", format_name);
> +		DRM_ERROR("Unsupported screen format %s\n",
> +		          drm_get_format_name(target_fb->pixel_format, &format_name));
> -		kfree(format_name);
>  		return -EINVAL;
>  	}
>  
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> index c965514..e3f68cc 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> @@ -985,8 +985,9 @@ static struct drm_framebuffer *vmw_kms_fb_create(struct drm_device *dev,
>  
>  	info = drm_format_info(mode_cmd2->pixel_format);
>  	if (!info || !info->depth) {
> +		struct drm_format_name_buf format_name;
>  		DRM_ERROR("Unsupported framebuffer format %s\n",
> -			  drm_get_format_name(mode_cmd2->pixel_format));
> +		          drm_get_format_name(mode_cmd2->pixel_format, &format_name));
>  		return ERR_PTR(-EINVAL);
>  	}
>  
> -- 
> Cheers,
>   Eric
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2016-11-07 18:12 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-04 15:32 [PATCH] drm: make drm_get_format_name atomic/irq safe again Rob Clark
2016-11-04 15:45 ` Rob Clark
2016-11-04 16:27 ` Ville Syrjälä
2016-11-04 17:12   ` Rob Clark
2016-11-04 17:32     ` Eric Engestrom
2016-11-04 17:33       ` [PATCH variant 1] " Eric Engestrom
2016-11-04 17:50       ` [PATCH] " Rob Clark
2016-11-04 18:13         ` Ville Syrjälä
2016-11-05  1:23         ` Eric Engestrom
2016-11-05  1:33           ` [PATCH] drm: move allocation out of drm_get_format_name() Eric Engestrom
2016-11-05  6:56             ` Thomas Hellstrom
2016-11-05 12:11             ` Christian König
2016-11-05 16:38               ` Eric Engestrom
2016-11-05 16:49                 ` Rob Clark
2016-11-06  9:47                   ` Christian König
2016-11-06 13:03                     ` Rob Clark
2016-11-07  0:47                       ` Eric Engestrom
2016-11-07  0:48                         ` [PATCH v2] " Eric Engestrom
2016-11-07  7:46                           ` Christian König
2016-11-07  8:10                           ` Jani Nikula
2016-11-07 17:12                             ` Eric Engestrom
2016-11-07 17:38                               ` Jani Nikula
2016-11-08 10:15                                 ` [Intel-gfx] " Daniel Vetter
2016-11-09  0:17                                   ` [PATCH v3] " Eric Engestrom
2016-11-09  1:09                                     ` [Intel-gfx] " Daniel Vetter
2016-11-09  1:13                                       ` Daniel Vetter
2016-11-09 11:42                                         ` Eric Engestrom
2016-11-09 13:13                                           ` [Intel-gfx] " Daniel Vetter
2016-11-09 16:59                                             ` Eric Engestrom
2016-11-10 10:03                                               ` Laurent Pinchart
2016-11-10 10:30                                                 ` [Intel-gfx] " Jani Nikula
2016-11-10 10:59                                                   ` Laurent Pinchart
2016-11-10 11:03                                                     ` Jani Nikula
2016-11-11  9:26                                               ` Daniel Vetter
2016-11-12  1:12                                                 ` [PATCH v4] " Eric Engestrom
2016-11-07 14:45                           ` [PATCH v2] " Rob Clark
2016-11-07 18:12                           ` Sinclair Yeh [this message]
2016-11-05  1:52           ` [PATCH] drm: make drm_get_format_name atomic/irq safe again Rob Clark

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161107181221.GA15287@promb-2n-dhcp72.eng.vmware.com \
    --to=syeh@vmware.com \
    --cc=David1.Zhou@amd.com \
    --cc=Emily.Deng@amd.com \
    --cc=Flora.Cui@amd.com \
    --cc=Jerry.Zhang@amd.com \
    --cc=airlied@linux.ie \
    --cc=alexandre.f.demers@gmail.com \
    --cc=colin.king@canonical.com \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=eric.engestrom@imgtec.com \
    --cc=eric@engestrom.ch \
    --cc=gustavo.padovan@collabora.co.uk \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=kong.kongxinwei@hisilicon.com \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linux-graphics-maintainer@vmware.com \
    --cc=thellstrom@vmware.com \
    --cc=tom.stdenis@amd.com \
    --cc=vitaly.prosyak@amd.com \
    --cc=yongjun_wei@trendmicro.com.cn \
    --cc=z.liuxinliang@hisilicon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).