[bug report] drm/vmwgfx: Cursor update fixes
Thomas Hellstrom
thellstrom at vmware.com
Tue Mar 27 12:16:40 UTC 2018
Hi!
Thanks for the comments, I'll take a closer look.
/Thomas
On 03/27/2018 11:16 AM, Daniel Vetter wrote:
> On Tue, Mar 27, 2018 at 12:05:38PM +0300, Dan Carpenter wrote:
>> Hello Thomas Hellstrom,
>>
>> The patch 25db875401c8: "drm/vmwgfx: Cursor update fixes" from Jan
>> 16, 2018, leads to the following static checker warning:
>>
>> drivers/gpu/drm/vmwgfx/vmwgfx_kms.c:513 vmw_du_cursor_plane_atomic_check()
>> info: return a literal instead of 'ret'
>>
>> drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
>> 493 int vmw_du_cursor_plane_atomic_check(struct drm_plane *plane,
>> 494 struct drm_plane_state *new_state)
>> 495 {
>> 496 int ret = 0;
>> 497 struct vmw_surface *surface = NULL;
>> 498 struct drm_framebuffer *fb = new_state->fb;
>> 499
>> 500 struct drm_rect src = drm_plane_state_src(new_state);
>> 501 struct drm_rect dest = drm_plane_state_dest(new_state);
>> 502
>> 503 /* Turning off */
>> 504 if (!fb)
>> 505 return ret;
>> ^^^^^^^^^^
>> This would be more clear if it were "return 0;"
>>
>> 506
>> 507 ret = drm_plane_helper_check_update(plane, new_state->crtc, fb,
>> 508 &src, &dest,
>> 509 DRM_MODE_ROTATE_0,
>> 510 DRM_PLANE_HELPER_NO_SCALING,
>> 511 DRM_PLANE_HELPER_NO_SCALING,
>> 512 true, true, &new_state->visible);
>> 513 if (!ret)
>> 514 return ret;
>>
>> Same here. With the current code, it almost looks like that the if
>> statement is reversed. As a newbie to this subsystem but with a bit of
>> kernel experience, it would take me a while to figure out if the if
>> statement is deliberate or a bug.
> It is a bug, drm_plane_helper_check_update returns negative errno's on
> failure. Also, this code should use drm_atomic_helper_check_plane_state,
> not the legacy wrapper, since vmwgfx is an atomic driver (but maybe that's
> fixed in -next already).
> -Daniel
>> 515
>> 516 /* A lot of the code assumes this */
>> 517 if (new_state->crtc_w != 64 || new_state->crtc_h != 64) {
>> 518 DRM_ERROR("Invalid cursor dimensions (%d, %d)\n",
>> 519 new_state->crtc_w, new_state->crtc_h);
>> 520 ret = -EINVAL;
>> 521 }
>> 522
>> 523 if (!vmw_framebuffer_to_vfb(fb)->dmabuf)
>> 524 surface = vmw_framebuffer_to_vfbs(fb)->surface;
>> 525
>> 526 if (surface && !surface->snooper.image) {
>> 527 DRM_ERROR("surface not suitable for cursor\n");
>> 528 ret = -EINVAL;
>> 529 }
>> 530
>> 531 return ret;
>> 532 }
>>
>> regards,
>> dan carpenter
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_dri-2Ddevel&d=DwIBAg&c=uilaK90D4TOVoH58JNXRgQ&r=wnSlgOCqfpNS4d02vP68_E9q2BNMCwfD2OZ_6dCFVQQ&m=EmKCi9L_95tppMT-q6ky7JkUBYYdk22nnaoiRUQRZ3c&s=acr_OiqUZeMipWTzfnf3FAppMYvjv-tetZPy2bYXVxg&e=
More information about the dri-devel
mailing list