Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: add debug logs for drm_mode_atomic_ioctl errors

Be nice to user-space and log what happened when returning EINVAL in
drm_mode_atomic_ioctl.

v2:

- Migrate to drm_dbg_atomic (Sam)
- Add debug log for arg->reserved (Ville)
- Drop redundant "atomic" word in log messages (Ville)

Signed-off-by: Simon Ser <contact@emersion.fr>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/AVFi5ZzKwRVLtY8AQyxvqgIbcUfVgNebOtGVwSNMKvs@cp4-web-038.plabs.ch

+18 -5
+18 -5
drivers/gpu/drm/drm_atomic_uapi.c
··· 1330 1330 * though this may be a bit overkill, since legacy userspace 1331 1331 * wouldn't know how to call this ioctl) 1332 1332 */ 1333 - if (!file_priv->atomic) 1333 + if (!file_priv->atomic) { 1334 + drm_dbg_atomic(dev, 1335 + "commit failed: atomic cap not enabled\n"); 1334 1336 return -EINVAL; 1337 + } 1335 1338 1336 - if (arg->flags & ~DRM_MODE_ATOMIC_FLAGS) 1339 + if (arg->flags & ~DRM_MODE_ATOMIC_FLAGS) { 1340 + drm_dbg_atomic(dev, "commit failed: invalid flag\n"); 1337 1341 return -EINVAL; 1342 + } 1338 1343 1339 - if (arg->reserved) 1344 + if (arg->reserved) { 1345 + drm_dbg_atomic(dev, "commit failed: reserved field set\n"); 1340 1346 return -EINVAL; 1347 + } 1341 1348 1342 - if (arg->flags & DRM_MODE_PAGE_FLIP_ASYNC) 1349 + if (arg->flags & DRM_MODE_PAGE_FLIP_ASYNC) { 1350 + drm_dbg_atomic(dev, 1351 + "commit failed: invalid flag DRM_MODE_PAGE_FLIP_ASYNC\n"); 1343 1352 return -EINVAL; 1353 + } 1344 1354 1345 1355 /* can't test and expect an event at the same time. */ 1346 1356 if ((arg->flags & DRM_MODE_ATOMIC_TEST_ONLY) && 1347 - (arg->flags & DRM_MODE_PAGE_FLIP_EVENT)) 1357 + (arg->flags & DRM_MODE_PAGE_FLIP_EVENT)) { 1358 + drm_dbg_atomic(dev, 1359 + "commit failed: page-flip event requested with test-only commit\n"); 1348 1360 return -EINVAL; 1361 + } 1349 1362 1350 1363 state = drm_atomic_state_alloc(dev); 1351 1364 if (!state)