From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>,
Gustavo Padovan <gustavo@padovan.org>,
Sean Paul <sean@poorly.run>, David Airlie <airlied@linux.ie>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
kernel-janitors@vger.kernel.org
Subject: Re: [PATCH v2] drm/drm_vblank: Change EINVAL by the correct errno
Date: Tue, 16 Oct 2018 17:28:03 +0000 [thread overview]
Message-ID: <20181016172803.GH9144@intel.com> (raw)
In-Reply-To: <20181016163831.GA31561@phenom.ffwll.local>
On Tue, Oct 16, 2018 at 06:38:31PM +0200, Daniel Vetter wrote:
> On Tue, Oct 16, 2018 at 03:36:20PM +0200, Maarten Lankhorst wrote:
> > Op 15-10-18 om 19:05 schreef Rodrigo Siqueira:
> > > 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 V1:
> > > Daniel Vetter and Chris Wilson
> > > - Replace ENOTTY by EOPNOTSUPP
> > > - Return EINVAL if the parameters are wrong
> > >
> > > Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
> > > ---
> > > 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 98e091175921..80f5a3bb427e 100644
> > > --- a/drivers/gpu/drm/drm_vblank.c
> > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > @@ -1533,10 +1533,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;
> > Change to -EIO?
> >
> > If userspace would ever print this out, it would print the following
> > confusing message to userspace:
> > "Operation not supported on transport endpoint"
>
> You're a bit late, EOPNOTSUPP is not established already in upstream for
> this. And -EIO is taken already for "the gpu is dead".
>
> > >
> > > if (vblwait->request.type & _DRM_VBLANK_SIGNAL)
> > > - return -EINVAL;
> > > + return -EOPNOTSUPP;
> > I would keep this -EINVAL, tbh and making it part of the below if statement..
>
> We discussed this, it's different: This here is an ioctl flag that's no
> longer supported, the below is just an invalid request. Hence different
> errno.
>
> I think you missed a bit with your bikeshed :-)
I think I too agree with the -EINVAL here as this flag is never
supported, whereas -EOPNOTSUPP seems to mean "this flag is still
valid, but not supported by your current hardware/driver
configuration".
Also drm_invalid_op() uses -EINVAL for deprecated features as well.
--
Ville Syrjälä
Intel
WARNING: multiple messages have this Message-ID (diff)
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>,
Gustavo Padovan <gustavo@padovan.org>,
Sean Paul <sean@poorly.run>, David Airlie <airlied@linux.ie>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
kernel-janitors@vger.kernel.org
Subject: Re: [PATCH v2] drm/drm_vblank: Change EINVAL by the correct errno
Date: Tue, 16 Oct 2018 20:28:03 +0300 [thread overview]
Message-ID: <20181016172803.GH9144@intel.com> (raw)
In-Reply-To: <20181016163831.GA31561@phenom.ffwll.local>
On Tue, Oct 16, 2018 at 06:38:31PM +0200, Daniel Vetter wrote:
> On Tue, Oct 16, 2018 at 03:36:20PM +0200, Maarten Lankhorst wrote:
> > Op 15-10-18 om 19:05 schreef Rodrigo Siqueira:
> > > 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 V1:
> > > Daniel Vetter and Chris Wilson
> > > - Replace ENOTTY by EOPNOTSUPP
> > > - Return EINVAL if the parameters are wrong
> > >
> > > Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
> > > ---
> > > 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 98e091175921..80f5a3bb427e 100644
> > > --- a/drivers/gpu/drm/drm_vblank.c
> > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > @@ -1533,10 +1533,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;
> > Change to -EIO?
> >
> > If userspace would ever print this out, it would print the following
> > confusing message to userspace:
> > "Operation not supported on transport endpoint"
>
> You're a bit late, EOPNOTSUPP is not established already in upstream for
> this. And -EIO is taken already for "the gpu is dead".
>
> > >
> > > if (vblwait->request.type & _DRM_VBLANK_SIGNAL)
> > > - return -EINVAL;
> > > + return -EOPNOTSUPP;
> > I would keep this -EINVAL, tbh and making it part of the below if statement..
>
> We discussed this, it's different: This here is an ioctl flag that's no
> longer supported, the below is just an invalid request. Hence different
> errno.
>
> I think you missed a bit with your bikeshed :-)
I think I too agree with the -EINVAL here as this flag is never
supported, whereas -EOPNOTSUPP seems to mean "this flag is still
valid, but not supported by your current hardware/driver
configuration".
Also drm_invalid_op() uses -EINVAL for deprecated features as well.
--
Ville Syrjälä
Intel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
WARNING: multiple messages have this Message-ID (diff)
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>,
Gustavo Padovan <gustavo@padovan.org>,
Sean Paul <sean@poorly.run>, David Airlie <airlied@linux.ie>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
kernel-janitors@vger.kernel.org
Subject: Re: [PATCH v2] drm/drm_vblank: Change EINVAL by the correct errno
Date: Tue, 16 Oct 2018 20:28:03 +0300 [thread overview]
Message-ID: <20181016172803.GH9144@intel.com> (raw)
In-Reply-To: <20181016163831.GA31561@phenom.ffwll.local>
On Tue, Oct 16, 2018 at 06:38:31PM +0200, Daniel Vetter wrote:
> On Tue, Oct 16, 2018 at 03:36:20PM +0200, Maarten Lankhorst wrote:
> > Op 15-10-18 om 19:05 schreef Rodrigo Siqueira:
> > > 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 V1:
> > > Daniel Vetter and Chris Wilson
> > > - Replace ENOTTY by EOPNOTSUPP
> > > - Return EINVAL if the parameters are wrong
> > >
> > > Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
> > > ---
> > > 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 98e091175921..80f5a3bb427e 100644
> > > --- a/drivers/gpu/drm/drm_vblank.c
> > > +++ b/drivers/gpu/drm/drm_vblank.c
> > > @@ -1533,10 +1533,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;
> > Change to -EIO?
> >
> > If userspace would ever print this out, it would print the following
> > confusing message to userspace:
> > "Operation not supported on transport endpoint"
>
> You're a bit late, EOPNOTSUPP is not established already in upstream for
> this. And -EIO is taken already for "the gpu is dead".
>
> > >
> > > if (vblwait->request.type & _DRM_VBLANK_SIGNAL)
> > > - return -EINVAL;
> > > + return -EOPNOTSUPP;
> > I would keep this -EINVAL, tbh and making it part of the below if statement..
>
> We discussed this, it's different: This here is an ioctl flag that's no
> longer supported, the below is just an invalid request. Hence different
> errno.
>
> I think you missed a bit with your bikeshed :-)
I think I too agree with the -EINVAL here as this flag is never
supported, whereas -EOPNOTSUPP seems to mean "this flag is still
valid, but not supported by your current hardware/driver
configuration".
Also drm_invalid_op() uses -EINVAL for deprecated features as well.
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2018-10-16 17:28 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-15 17:05 [PATCH v2] drm/drm_vblank: Change EINVAL by the correct errno Rodrigo Siqueira
2018-10-15 17:05 ` Rodrigo Siqueira
2018-10-15 17:05 ` Rodrigo Siqueira
2018-10-16 12:35 ` Daniel Vetter
2018-10-16 12:35 ` Daniel Vetter
2018-10-17 12:43 ` Rodrigo Siqueira
2018-10-17 12:43 ` Rodrigo Siqueira
2018-10-17 12:47 ` Daniel Vetter
2018-10-17 12:47 ` Daniel Vetter
2018-10-17 13:19 ` Rodrigo Siqueira
2018-10-17 13:19 ` Rodrigo Siqueira
2019-01-13 20:23 ` Rodrigo Siqueira
2019-01-13 20:23 ` Rodrigo Siqueira
2019-01-13 20:23 ` Rodrigo Siqueira
2019-01-14 9:51 ` Maarten Lankhorst
2019-01-14 9:51 ` Maarten Lankhorst
2019-01-14 9:51 ` Maarten Lankhorst
2019-01-14 10:29 ` Rodrigo Siqueira
2019-01-14 10:29 ` Rodrigo Siqueira
2019-01-14 10:29 ` Rodrigo Siqueira
2018-10-16 13:36 ` Maarten Lankhorst
2018-10-16 13:36 ` Maarten Lankhorst
2018-10-16 16:38 ` Daniel Vetter
2018-10-16 16:38 ` Daniel Vetter
2018-10-16 17:28 ` Ville Syrjälä [this message]
2018-10-16 17:28 ` Ville Syrjälä
2018-10-16 17:28 ` Ville Syrjälä
2018-10-16 17:53 ` Daniel Vetter
2018-10-16 17:53 ` Daniel Vetter
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=20181016172803.GH9144@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=airlied@linux.ie \
--cc=dri-devel@lists.freedesktop.org \
--cc=gustavo@padovan.org \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=rodrigosiqueiramelo@gmail.com \
--cc=sean@poorly.run \
/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 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.