aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorEric Engestrom <eric@engestrom.ch>2016-08-14 20:02:38 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-08-15 03:25:12 -0400
commit90844f00049e9f42573fd31d7c32e8fd31d3fd07 (patch)
tree60303fd6ee2cb480548f847790090e786f5f70fd /drivers/gpu
parentfc93ff608b15ae32cde3006b7af860b59cac20ec (diff)
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>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_v10_0.c6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_v11_0.c6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_v8_0.c6
-rw-r--r--drivers/gpu/drm/drm_atomic.c5
-rw-r--r--drivers/gpu/drm/drm_crtc.c21
-rw-r--r--drivers/gpu/drm/drm_fourcc.c17
-rw-r--r--drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c6
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c11
-rw-r--r--drivers/gpu/drm/i915/intel_atomic_plane.c6
-rw-r--r--drivers/gpu/drm/i915/intel_display.c39
-rw-r--r--drivers/gpu/drm/radeon/atombios_crtc.c12
11 files changed, 88 insertions, 47 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
index c1b04e9aab57..0bf895920fbc 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
@@ -2071,6 +2071,7 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc,
2071 u32 tmp, viewport_w, viewport_h; 2071 u32 tmp, viewport_w, viewport_h;
2072 int r; 2072 int r;
2073 bool bypass_lut = false; 2073 bool bypass_lut = false;
2074 const char *format_name;
2074 2075
2075 /* no fb bound */ 2076 /* no fb bound */
2076 if (!atomic && !crtc->primary->fb) { 2077 if (!atomic && !crtc->primary->fb) {
@@ -2182,8 +2183,9 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc,
2182 bypass_lut = true; 2183 bypass_lut = true;
2183 break; 2184 break;
2184 default: 2185 default:
2185 DRM_ERROR("Unsupported screen format %s\n", 2186 format_name = drm_get_format_name(target_fb->pixel_format);
2186 drm_get_format_name(target_fb->pixel_format)); 2187 DRM_ERROR("Unsupported screen format %s\n", format_name);
2188 kfree(format_name);
2187 return -EINVAL; 2189 return -EINVAL;
2188 } 2190 }
2189 2191
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index d4bf133908b1..1558a974ad00 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -2046,6 +2046,7 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc,
2046 u32 tmp, viewport_w, viewport_h; 2046 u32 tmp, viewport_w, viewport_h;
2047 int r; 2047 int r;
2048 bool bypass_lut = false; 2048 bool bypass_lut = false;
2049 const char *format_name;
2049 2050
2050 /* no fb bound */ 2051 /* no fb bound */
2051 if (!atomic && !crtc->primary->fb) { 2052 if (!atomic && !crtc->primary->fb) {
@@ -2157,8 +2158,9 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc,
2157 bypass_lut = true; 2158 bypass_lut = true;
2158 break; 2159 break;
2159 default: 2160 default:
2160 DRM_ERROR("Unsupported screen format %s\n", 2161 format_name = drm_get_format_name(target_fb->pixel_format);
2161 drm_get_format_name(target_fb->pixel_format)); 2162 DRM_ERROR("Unsupported screen format %s\n", format_name);
2163 kfree(format_name);
2162 return -EINVAL; 2164 return -EINVAL;
2163 } 2165 }
2164 2166
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
index 4fdfab1e9200..71a037546dae 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
@@ -1952,6 +1952,7 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc,
1952 u32 viewport_w, viewport_h; 1952 u32 viewport_w, viewport_h;
1953 int r; 1953 int r;
1954 bool bypass_lut = false; 1954 bool bypass_lut = false;
1955 const char *format_name;
1955 1956
1956 /* no fb bound */ 1957 /* no fb bound */
1957 if (!atomic && !crtc->primary->fb) { 1958 if (!atomic && !crtc->primary->fb) {
@@ -2056,8 +2057,9 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc,
2056 bypass_lut = true; 2057 bypass_lut = true;
2057 break; 2058 break;
2058 default: 2059 default:
2059 DRM_ERROR("Unsupported screen format %s\n", 2060 format_name = drm_get_format_name(target_fb->pixel_format);
2060 drm_get_format_name(target_fb->pixel_format)); 2061 DRM_ERROR("Unsupported screen format %s\n", format_name);
2062 kfree(format_name);
2061 return -EINVAL; 2063 return -EINVAL;
2062 } 2064 }
2063 2065
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index fa3930757972..087391f08a69 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -837,8 +837,9 @@ static int drm_atomic_plane_check(struct drm_plane *plane,
837 /* Check whether this plane supports the fb pixel format. */ 837 /* Check whether this plane supports the fb pixel format. */
838 ret = drm_plane_check_pixel_format(plane, state->fb->pixel_format); 838 ret = drm_plane_check_pixel_format(plane, state->fb->pixel_format);
839 if (ret) { 839 if (ret) {
840 DRM_DEBUG_ATOMIC("Invalid pixel format %s\n", 840 const char *format_name = drm_get_format_name(state->fb->pixel_format);
841 drm_get_format_name(state->fb->pixel_format)); 841 DRM_DEBUG_ATOMIC("Invalid pixel format %s\n", format_name);
842 kfree(format_name);
842 return ret; 843 return ret;
843 } 844 }
844 845
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index e92bb9d3f90f..f4e3ebebe79a 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -2592,8 +2592,9 @@ static int __setplane_internal(struct drm_plane *plane,
2592 /* Check whether this plane supports the fb pixel format. */ 2592 /* Check whether this plane supports the fb pixel format. */
2593 ret = drm_plane_check_pixel_format(plane, fb->pixel_format); 2593 ret = drm_plane_check_pixel_format(plane, fb->pixel_format);
2594 if (ret) { 2594 if (ret) {
2595 DRM_DEBUG_KMS("Invalid pixel format %s\n", 2595 const char *format_name = drm_get_format_name(fb->pixel_format);
2596 drm_get_format_name(fb->pixel_format)); 2596 DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name);
2597 kfree(format_name);
2597 goto out; 2598 goto out;
2598 } 2599 }
2599 2600
@@ -2902,8 +2903,9 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
2902 ret = drm_plane_check_pixel_format(crtc->primary, 2903 ret = drm_plane_check_pixel_format(crtc->primary,
2903 fb->pixel_format); 2904 fb->pixel_format);
2904 if (ret) { 2905 if (ret) {
2905 DRM_DEBUG_KMS("Invalid pixel format %s\n", 2906 const char *format_name = drm_get_format_name(fb->pixel_format);
2906 drm_get_format_name(fb->pixel_format)); 2907 DRM_DEBUG_KMS("Invalid pixel format %s\n", format_name);
2908 kfree(format_name);
2907 goto out; 2909 goto out;
2908 } 2910 }
2909 } 2911 }
@@ -3279,6 +3281,7 @@ int drm_mode_addfb(struct drm_device *dev,
3279static int format_check(const struct drm_mode_fb_cmd2 *r) 3281static int format_check(const struct drm_mode_fb_cmd2 *r)
3280{ 3282{
3281 uint32_t format = r->pixel_format & ~DRM_FORMAT_BIG_ENDIAN; 3283 uint32_t format = r->pixel_format & ~DRM_FORMAT_BIG_ENDIAN;
3284 const char *format_name;
3282 3285
3283 switch (format) { 3286 switch (format) {
3284 case DRM_FORMAT_C8: 3287 case DRM_FORMAT_C8:
@@ -3343,8 +3346,9 @@ static int format_check(const struct drm_mode_fb_cmd2 *r)
3343 case DRM_FORMAT_YVU444: 3346 case DRM_FORMAT_YVU444:
3344 return 0; 3347 return 0;
3345 default: 3348 default:
3346 DRM_DEBUG_KMS("invalid pixel format %s\n", 3349 format_name = drm_get_format_name(r->pixel_format);
3347 drm_get_format_name(r->pixel_format)); 3350 DRM_DEBUG_KMS("invalid pixel format %s\n", format_name);
3351 kfree(format_name);
3348 return -EINVAL; 3352 return -EINVAL;
3349 } 3353 }
3350} 3354}
@@ -3355,8 +3359,9 @@ static int framebuffer_check(const struct drm_mode_fb_cmd2 *r)
3355 3359
3356 ret = format_check(r); 3360 ret = format_check(r);
3357 if (ret) { 3361 if (ret) {
3358 DRM_DEBUG_KMS("bad framebuffer format %s\n", 3362 const char *format_name = drm_get_format_name(r->pixel_format);
3359 drm_get_format_name(r->pixel_format)); 3363 DRM_DEBUG_KMS("bad framebuffer format %s\n", format_name);
3364 kfree(format_name);
3360 return ret; 3365 return ret;
3361 } 3366 }
3362 3367
diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
index 0645c85d5f95..d8f65c4fadf7 100644
--- a/drivers/gpu/drm/drm_fourcc.c
+++ b/drivers/gpu/drm/drm_fourcc.c
@@ -39,16 +39,14 @@ static char printable_char(int c)
39 * drm_get_format_name - return a string for drm fourcc format 39 * drm_get_format_name - return a string for drm fourcc format
40 * @format: format to compute name of 40 * @format: format to compute name of
41 * 41 *
42 * Note that the buffer used by this function is globally shared and owned by 42 * Note that the buffer returned by this function is owned by the caller
43 * the function itself. 43 * and will need to be freed using kfree().
44 *
45 * FIXME: This isn't really multithreading safe.
46 */ 44 */
47const char *drm_get_format_name(uint32_t format) 45const char *drm_get_format_name(uint32_t format)
48{ 46{
49 static char buf[32]; 47 char *buf = kmalloc(32, GFP_KERNEL);
50 48
51 snprintf(buf, sizeof(buf), 49 snprintf(buf, 32,
52 "%c%c%c%c %s-endian (0x%08x)", 50 "%c%c%c%c %s-endian (0x%08x)",
53 printable_char(format & 0xff), 51 printable_char(format & 0xff),
54 printable_char((format >> 8) & 0xff), 52 printable_char((format >> 8) & 0xff),
@@ -73,6 +71,8 @@ EXPORT_SYMBOL(drm_get_format_name);
73void drm_fb_get_bpp_depth(uint32_t format, unsigned int *depth, 71void drm_fb_get_bpp_depth(uint32_t format, unsigned int *depth,
74 int *bpp) 72 int *bpp)
75{ 73{
74 const char *format_name;
75
76 switch (format) { 76 switch (format) {
77 case DRM_FORMAT_C8: 77 case DRM_FORMAT_C8:
78 case DRM_FORMAT_RGB332: 78 case DRM_FORMAT_RGB332:
@@ -127,8 +127,9 @@ void drm_fb_get_bpp_depth(uint32_t format, unsigned int *depth,
127 *bpp = 32; 127 *bpp = 32;
128 break; 128 break;
129 default: 129 default:
130 DRM_DEBUG_KMS("unsupported pixel format %s\n", 130 format_name = drm_get_format_name(format);
131 drm_get_format_name(format)); 131 DRM_DEBUG_KMS("unsupported pixel format %s\n", format_name);
132 kfree(format_name);
132 *depth = 0; 133 *depth = 0;
133 *bpp = 0; 134 *bpp = 0;
134 break; 135 break;
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index c3707d47cd89..ac7fa02b341f 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -608,15 +608,17 @@ static void ade_rdma_set(void __iomem *base, struct drm_framebuffer *fb,
608 u32 ch, u32 y, u32 in_h, u32 fmt) 608 u32 ch, u32 y, u32 in_h, u32 fmt)
609{ 609{
610 struct drm_gem_cma_object *obj = drm_fb_cma_get_gem_obj(fb, 0); 610 struct drm_gem_cma_object *obj = drm_fb_cma_get_gem_obj(fb, 0);
611 const char *format_name;
611 u32 reg_ctrl, reg_addr, reg_size, reg_stride, reg_space, reg_en; 612 u32 reg_ctrl, reg_addr, reg_size, reg_stride, reg_space, reg_en;
612 u32 stride = fb->pitches[0]; 613 u32 stride = fb->pitches[0];
613 u32 addr = (u32)obj->paddr + y * stride; 614 u32 addr = (u32)obj->paddr + y * stride;
614 615
615 DRM_DEBUG_DRIVER("rdma%d: (y=%d, height=%d), stride=%d, paddr=0x%x\n", 616 DRM_DEBUG_DRIVER("rdma%d: (y=%d, height=%d), stride=%d, paddr=0x%x\n",
616 ch + 1, y, in_h, stride, (u32)obj->paddr); 617 ch + 1, y, in_h, stride, (u32)obj->paddr);
618 format_name = drm_get_format_name(fb->pixel_format);
617 DRM_DEBUG_DRIVER("addr=0x%x, fb:%dx%d, pixel_format=%d(%s)\n", 619 DRM_DEBUG_DRIVER("addr=0x%x, fb:%dx%d, pixel_format=%d(%s)\n",
618 addr, fb->width, fb->height, fmt, 620 addr, fb->width, fb->height, fmt, format_name);
619 drm_get_format_name(fb->pixel_format)); 621 kfree(format_name);
620 622
621 /* get reg offset */ 623 /* get reg offset */
622 reg_ctrl = RD_CH_CTRL(ch); 624 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 f62285c1ed7f..120869e7622d 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -3113,6 +3113,7 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc)
3113 for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) { 3113 for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
3114 struct drm_plane_state *state; 3114 struct drm_plane_state *state;
3115 struct drm_plane *plane = &intel_plane->base; 3115 struct drm_plane *plane = &intel_plane->base;
3116 const char *format_name;
3116 3117
3117 if (!plane->state) { 3118 if (!plane->state) {
3118 seq_puts(m, "plane->state is NULL!\n"); 3119 seq_puts(m, "plane->state is NULL!\n");
@@ -3121,6 +3122,12 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc)
3121 3122
3122 state = plane->state; 3123 state = plane->state;
3123 3124
3125 if (state->fb) {
3126 format_name = drm_get_format_name(state->fb->pixel_format);
3127 } else {
3128 format_name = kstrdup("N/A", GFP_KERNEL);
3129 }
3130
3124 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", 3131 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",
3125 plane->base.id, 3132 plane->base.id,
3126 plane_type(intel_plane->base.type), 3133 plane_type(intel_plane->base.type),
@@ -3134,8 +3141,10 @@ static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc)
3134 ((state->src_w & 0xffff) * 15625) >> 10, 3141 ((state->src_w & 0xffff) * 15625) >> 10,
3135 (state->src_h >> 16), 3142 (state->src_h >> 16),
3136 ((state->src_h & 0xffff) * 15625) >> 10, 3143 ((state->src_h & 0xffff) * 15625) >> 10,
3137 state->fb ? drm_get_format_name(state->fb->pixel_format) : "N/A", 3144 format_name,
3138 plane_rotation(state->rotation)); 3145 plane_rotation(state->rotation));
3146
3147 kfree(format_name);
3139 } 3148 }
3140} 3149}
3141 3150
diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c b/drivers/gpu/drm/i915/intel_atomic_plane.c
index e06d1f5334cf..98288d87c2ce 100644
--- a/drivers/gpu/drm/i915/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
@@ -143,6 +143,7 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
143 crtc_state->base.enable ? crtc_state->pipe_src_h : 0; 143 crtc_state->base.enable ? crtc_state->pipe_src_h : 0;
144 144
145 if (state->fb && intel_rotation_90_or_270(state->rotation)) { 145 if (state->fb && intel_rotation_90_or_270(state->rotation)) {
146 const char *format_name;
146 if (!(state->fb->modifier[0] == I915_FORMAT_MOD_Y_TILED || 147 if (!(state->fb->modifier[0] == I915_FORMAT_MOD_Y_TILED ||
147 state->fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED)) { 148 state->fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED)) {
148 DRM_DEBUG_KMS("Y/Yf tiling required for 90/270!\n"); 149 DRM_DEBUG_KMS("Y/Yf tiling required for 90/270!\n");
@@ -157,8 +158,9 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
157 switch (state->fb->pixel_format) { 158 switch (state->fb->pixel_format) {
158 case DRM_FORMAT_C8: 159 case DRM_FORMAT_C8:
159 case DRM_FORMAT_RGB565: 160 case DRM_FORMAT_RGB565:
160 DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", 161 format_name = drm_get_format_name(state->fb->pixel_format);
161 drm_get_format_name(state->fb->pixel_format)); 162 DRM_DEBUG_KMS("Unsupported pixel format %s for 90/270!\n", format_name);
163 kfree(format_name);
162 return -EINVAL; 164 return -EINVAL;
163 165
164 default: 166 default:
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index c6f27ab99e8f..acc1ba36c5fa 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -12258,6 +12258,7 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
12258 12258
12259 DRM_DEBUG_KMS("planes on this crtc\n"); 12259 DRM_DEBUG_KMS("planes on this crtc\n");
12260 list_for_each_entry(plane, &dev->mode_config.plane_list, head) { 12260 list_for_each_entry(plane, &dev->mode_config.plane_list, head) {
12261 const char *format_name;
12261 intel_plane = to_intel_plane(plane); 12262 intel_plane = to_intel_plane(plane);
12262 if (intel_plane->pipe != crtc->pipe) 12263 if (intel_plane->pipe != crtc->pipe)
12263 continue; 12264 continue;
@@ -12270,11 +12271,12 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
12270 continue; 12271 continue;
12271 } 12272 }
12272 12273
12274 format_name = drm_get_format_name(fb->pixel_format);
12275
12273 DRM_DEBUG_KMS("[PLANE:%d:%s] enabled", 12276 DRM_DEBUG_KMS("[PLANE:%d:%s] enabled",
12274 plane->base.id, plane->name); 12277 plane->base.id, plane->name);
12275 DRM_DEBUG_KMS("\tFB:%d, fb = %ux%u format = %s", 12278 DRM_DEBUG_KMS("\tFB:%d, fb = %ux%u format = %s",
12276 fb->base.id, fb->width, fb->height, 12279 fb->base.id, fb->width, fb->height, format_name);
12277 drm_get_format_name(fb->pixel_format));
12278 DRM_DEBUG_KMS("\tscaler:%d src %dx%d+%d+%d dst %dx%d+%d+%d\n", 12280 DRM_DEBUG_KMS("\tscaler:%d src %dx%d+%d+%d dst %dx%d+%d+%d\n",
12279 state->scaler_id, 12281 state->scaler_id,
12280 state->base.src.x1 >> 16, 12282 state->base.src.x1 >> 16,
@@ -12284,6 +12286,8 @@ static void intel_dump_pipe_config(struct intel_crtc *crtc,
12284 state->base.dst.x1, state->base.dst.y1, 12286 state->base.dst.x1, state->base.dst.y1,
12285 drm_rect_width(&state->base.dst), 12287 drm_rect_width(&state->base.dst),
12286 drm_rect_height(&state->base.dst)); 12288 drm_rect_height(&state->base.dst));
12289
12290 kfree(format_name);
12287 } 12291 }
12288} 12292}
12289 12293
@@ -14911,6 +14915,7 @@ static int intel_framebuffer_init(struct drm_device *dev,
14911 unsigned int aligned_height; 14915 unsigned int aligned_height;
14912 int ret; 14916 int ret;
14913 u32 pitch_limit, stride_alignment; 14917 u32 pitch_limit, stride_alignment;
14918 const char *format_name;
14914 14919
14915 WARN_ON(!mutex_is_locked(&dev->struct_mutex)); 14920 WARN_ON(!mutex_is_locked(&dev->struct_mutex));
14916 14921
@@ -14985,16 +14990,18 @@ static int intel_framebuffer_init(struct drm_device *dev,
14985 break; 14990 break;
14986 case DRM_FORMAT_XRGB1555: 14991 case DRM_FORMAT_XRGB1555:
14987 if (INTEL_INFO(dev)->gen > 3) { 14992 if (INTEL_INFO(dev)->gen > 3) {
14988 DRM_DEBUG("unsupported pixel format: %s\n", 14993 format_name = drm_get_format_name(mode_cmd->pixel_format);
14989 drm_get_format_name(mode_cmd->pixel_format)); 14994 DRM_DEBUG("unsupported pixel format: %s\n", format_name);
14995 kfree(format_name);
14990 return -EINVAL; 14996 return -EINVAL;
14991 } 14997 }
14992 break; 14998 break;
14993 case DRM_FORMAT_ABGR8888: 14999 case DRM_FORMAT_ABGR8888:
14994 if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) && 15000 if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev) &&
14995 INTEL_INFO(dev)->gen < 9) { 15001 INTEL_INFO(dev)->gen < 9) {
14996 DRM_DEBUG("unsupported pixel format: %s\n", 15002 format_name = drm_get_format_name(mode_cmd->pixel_format);
14997 drm_get_format_name(mode_cmd->pixel_format)); 15003 DRM_DEBUG("unsupported pixel format: %s\n", format_name);
15004 kfree(format_name);
14998 return -EINVAL; 15005 return -EINVAL;
14999 } 15006 }
15000 break; 15007 break;
@@ -15002,15 +15009,17 @@ static int intel_framebuffer_init(struct drm_device *dev,
15002 case DRM_FORMAT_XRGB2101010: 15009 case DRM_FORMAT_XRGB2101010:
15003 case DRM_FORMAT_XBGR2101010: 15010 case DRM_FORMAT_XBGR2101010:
15004 if (INTEL_INFO(dev)->gen < 4) { 15011 if (INTEL_INFO(dev)->gen < 4) {
15005 DRM_DEBUG("unsupported pixel format: %s\n", 15012 format_name = drm_get_format_name(mode_cmd->pixel_format);
15006 drm_get_format_name(mode_cmd->pixel_format)); 15013 DRM_DEBUG("unsupported pixel format: %s\n", format_name);
15014 kfree(format_name);
15007 return -EINVAL; 15015 return -EINVAL;
15008 } 15016 }
15009 break; 15017 break;
15010 case DRM_FORMAT_ABGR2101010: 15018 case DRM_FORMAT_ABGR2101010:
15011 if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) { 15019 if (!IS_VALLEYVIEW(dev) && !IS_CHERRYVIEW(dev)) {
15012 DRM_DEBUG("unsupported pixel format: %s\n", 15020 format_name = drm_get_format_name(mode_cmd->pixel_format);
15013 drm_get_format_name(mode_cmd->pixel_format)); 15021 DRM_DEBUG("unsupported pixel format: %s\n", format_name);
15022 kfree(format_name);
15014 return -EINVAL; 15023 return -EINVAL;
15015 } 15024 }
15016 break; 15025 break;
@@ -15019,14 +15028,16 @@ static int intel_framebuffer_init(struct drm_device *dev,
15019 case DRM_FORMAT_YVYU: 15028 case DRM_FORMAT_YVYU:
15020 case DRM_FORMAT_VYUY: 15029 case DRM_FORMAT_VYUY:
15021 if (INTEL_INFO(dev)->gen < 5) { 15030 if (INTEL_INFO(dev)->gen < 5) {
15022 DRM_DEBUG("unsupported pixel format: %s\n", 15031 format_name = drm_get_format_name(mode_cmd->pixel_format);
15023 drm_get_format_name(mode_cmd->pixel_format)); 15032 DRM_DEBUG("unsupported pixel format: %s\n", format_name);
15033 kfree(format_name);
15024 return -EINVAL; 15034 return -EINVAL;
15025 } 15035 }
15026 break; 15036 break;
15027 default: 15037 default:
15028 DRM_DEBUG("unsupported pixel format: %s\n", 15038 format_name = drm_get_format_name(mode_cmd->pixel_format);
15029 drm_get_format_name(mode_cmd->pixel_format)); 15039 DRM_DEBUG("unsupported pixel format: %s\n", format_name);
15040 kfree(format_name);
15030 return -EINVAL; 15041 return -EINVAL;
15031 } 15042 }
15032 15043
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
index a97abc8af657..981ca3f5842e 100644
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -1154,6 +1154,7 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
1154 u32 tmp, viewport_w, viewport_h; 1154 u32 tmp, viewport_w, viewport_h;
1155 int r; 1155 int r;
1156 bool bypass_lut = false; 1156 bool bypass_lut = false;
1157 const char *format_name;
1157 1158
1158 /* no fb bound */ 1159 /* no fb bound */
1159 if (!atomic && !crtc->primary->fb) { 1160 if (!atomic && !crtc->primary->fb) {
@@ -1257,8 +1258,9 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
1257 bypass_lut = true; 1258 bypass_lut = true;
1258 break; 1259 break;
1259 default: 1260 default:
1260 DRM_ERROR("Unsupported screen format %s\n", 1261 format_name = drm_get_format_name(target_fb->pixel_format);
1261 drm_get_format_name(target_fb->pixel_format)); 1262 DRM_ERROR("Unsupported screen format %s\n", format_name);
1263 kfree(format_name);
1262 return -EINVAL; 1264 return -EINVAL;
1263 } 1265 }
1264 1266
@@ -1469,6 +1471,7 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
1469 u32 viewport_w, viewport_h; 1471 u32 viewport_w, viewport_h;
1470 int r; 1472 int r;
1471 bool bypass_lut = false; 1473 bool bypass_lut = false;
1474 const char *format_name;
1472 1475
1473 /* no fb bound */ 1476 /* no fb bound */
1474 if (!atomic && !crtc->primary->fb) { 1477 if (!atomic && !crtc->primary->fb) {
@@ -1558,8 +1561,9 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
1558 bypass_lut = true; 1561 bypass_lut = true;
1559 break; 1562 break;
1560 default: 1563 default:
1561 DRM_ERROR("Unsupported screen format %s\n", 1564 format_name = drm_get_format_name(target_fb->pixel_format);
1562 drm_get_format_name(target_fb->pixel_format)); 1565 DRM_ERROR("Unsupported screen format %s\n", format_name);
1566 kfree(format_name);
1563 return -EINVAL; 1567 return -EINVAL;
1564 } 1568 }
1565 1569