All of lore.kernel.org
 help / color / mirror / Atom feed
* [RESEND PATCH V3] drm/drm_vblank: Change EINVAL by the correct errno
@ 2019-06-13  2:10 ` Rodrigo Siqueira
  0 siblings, 0 replies; 21+ messages in thread
From: Rodrigo Siqueira @ 2019-06-13  2:10 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Sean Paul, David Airlie, Daniel Vetter
  Cc: dri-devel, linux-kernel, kernel-janitors, intel-gfx

[-- Attachment #1: Type: text/plain, Size: 2558 bytes --]

For historical reason, the function drm_wait_vblank_ioctl always return
-EINVAL if something gets wrong. This scenario limits the flexibility
for the userspace make detailed verification of the problem and take
some action. In particular, the validation of “if (!dev->irq_enabled)”
in the drm_wait_vblank_ioctl is responsible for checking if the driver
support vblank or not. If the driver does not support VBlank, the
function drm_wait_vblank_ioctl returns EINVAL which does not represent
the real issue; this patch changes this behavior by return EOPNOTSUPP.
Additionally, some operations are unsupported by this function, and
returns EINVAL; this patch also changes the return value to EOPNOTSUPP
in this case. Lastly, the function drm_wait_vblank_ioctl is invoked by
libdrm, which is used by many compositors; because of this, it is
important to check if this change breaks any compositor. In this sense,
the following projects were examined:

* Drm-hwcomposer
* Kwin
* Sway
* Wlroots
* Wayland-core
* Weston
* Xorg (67 different drivers)

For each repository the verification happened in three steps:

* Update the main branch
* Look for any occurrence "drmWaitVBlank" with the command:
  git grep -n "drmWaitVBlank"
* Look in the git history of the project with the command:
  git log -SdrmWaitVBlank

Finally, none of the above projects validate the use of EINVAL which
make safe, at least for these projects, to change the return values.

Change since V2:
 Daniel Vetter and Chris Wilson
 - Replace ENOTTY by EOPNOTSUPP
 - Return EINVAL if the parameters are wrong

Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
---
Update:
  Now IGT has a way to validate if a driver has vblank support or not.
  See: https://gitlab.freedesktop.org/drm/igt-gpu-tools/commit/2d244aed69165753f3adbbd6468db073dc1acf9A

 drivers/gpu/drm/drm_vblank.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 0d704bddb1a6..d76a783a7d4b 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -1578,10 +1578,10 @@ int drm_wait_vblank_ioctl(struct drm_device *dev, void *data,
 	unsigned int flags, pipe, high_pipe;
 
 	if (!dev->irq_enabled)
-		return -EINVAL;
+		return -EOPNOTSUPP;
 
 	if (vblwait->request.type & _DRM_VBLANK_SIGNAL)
-		return -EINVAL;
+		return -EOPNOTSUPP;
 
 	if (vblwait->request.type &
 	    ~(_DRM_VBLANK_TYPES_MASK | _DRM_VBLANK_FLAGS_MASK |
-- 
2.21.0

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2019-06-14 17:20 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-13  2:10 [RESEND PATCH V3] drm/drm_vblank: Change EINVAL by the correct errno Rodrigo Siqueira
2019-06-13  2:10 ` Rodrigo Siqueira
2019-06-13  2:10 ` Rodrigo Siqueira
2019-06-13  3:43 ` ✓ Fi.CI.BAT: success for drm/drm_vblank: Change EINVAL by the correct errno (rev2) Patchwork
2019-06-13  5:04 ` Drop use of DRM_WAIT_ON() [Was: drm/drm_vblank: Change EINVAL by the correct errno] Sam Ravnborg
2019-06-13  5:04   ` Sam Ravnborg
2019-06-13  5:04   ` Sam Ravnborg
2019-06-13 18:44   ` Sam Ravnborg
2019-06-13 18:44     ` Sam Ravnborg
2019-06-13 18:55   ` Rodrigo Siqueira
2019-06-13 18:55     ` Rodrigo Siqueira
2019-06-13 18:55     ` Rodrigo Siqueira
2019-06-14 17:20   ` Ville Syrjälä
2019-06-14 17:20     ` Ville Syrjälä
2019-06-14 17:20     ` Ville Syrjälä
2019-06-13  5:17 ` ✗ Fi.CI.CHECKPATCH: warning for drm/drm_vblank: Change EINVAL by the correct errno (rev3) Patchwork
2019-06-13  5:39 ` ✗ Fi.CI.BAT: failure " Patchwork
2019-06-13  8:21 ` [RESEND PATCH V3] drm/drm_vblank: Change EINVAL by the correct errno Daniel Vetter
2019-06-13  8:21   ` Daniel Vetter
2019-06-13  8:21   ` Daniel Vetter
2019-06-14 16:54 ` ✗ Fi.CI.IGT: failure for drm/drm_vblank: Change EINVAL by the correct errno (rev2) Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.