All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v3] drm: Differentiate the lack of an interface from invalid parameter
Date: Thu, 13 Sep 2018 15:30:11 +0200	[thread overview]
Message-ID: <20180913133011.GC11082@phenom.ffwll.local> (raw)
In-Reply-To: <20180912092942.15231-1-chris@chris-wilson.co.uk>

On Wed, Sep 12, 2018 at 10:29:42AM +0100, Chris Wilson wrote:
> If the ioctl is not supported on a particular piece of HW/driver
> combination, report ENOTSUPP so that it can be easily distinguished from
> both the lack of the ioctl and from a regular invalid parameter.
> 
> v2: Across all the kms ioctls we had a mixture of reporting EINVAL,
> ENODEV and a few ENOTSUPP (most where EINVAL) for a failed
> drm_core_check_feature(). Update everybody to report ENOTSUPP.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>

I think there's a few somewhat questionable ones among the legacy
functions (not sure we should throw an ENOTSUPP when it's only called by
driver code, not userspace, WARN_ON feels more appropriate).

But I only spotted that for legacy functionality, nothing we'll ever care
about. Ang sprinkling this all over definitely increases the odds that
it'll be adopted successfully.

As-is:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
>  drivers/gpu/drm/drm_atomic_uapi.c |  2 +-
>  drivers/gpu/drm/drm_bufs.c        | 32 +++++++++++++++----------------
>  drivers/gpu/drm/drm_color_mgmt.c  |  4 ++--
>  drivers/gpu/drm/drm_connector.c   |  2 +-
>  drivers/gpu/drm/drm_context.c     | 16 ++++++++--------
>  drivers/gpu/drm/drm_crtc.c        |  4 ++--
>  drivers/gpu/drm/drm_encoder.c     |  2 +-
>  drivers/gpu/drm/drm_framebuffer.c | 13 ++++++++-----
>  drivers/gpu/drm/drm_gem.c         |  6 +++---
>  drivers/gpu/drm/drm_ioctl.c       |  2 +-
>  drivers/gpu/drm/drm_irq.c         |  4 ++--
>  drivers/gpu/drm/drm_lease.c       |  8 ++++----
>  drivers/gpu/drm/drm_lock.c        |  4 ++--
>  drivers/gpu/drm/drm_mode_config.c |  2 +-
>  drivers/gpu/drm/drm_mode_object.c |  4 ++--
>  drivers/gpu/drm/drm_pci.c         |  4 ++--
>  drivers/gpu/drm/drm_plane.c       | 10 +++++-----
>  drivers/gpu/drm/drm_prime.c       |  4 ++--
>  drivers/gpu/drm/drm_property.c    |  8 ++++----
>  drivers/gpu/drm/drm_scatter.c     |  8 ++++----
>  drivers/gpu/drm/drm_syncobj.c     | 14 +++++++-------
>  drivers/gpu/drm/drm_vblank.c      |  4 ++--
>  22 files changed, 80 insertions(+), 77 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
> index 26690a664ec6..dc4502464126 100644
> --- a/drivers/gpu/drm/drm_atomic_uapi.c
> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
> @@ -1251,7 +1251,7 @@ int drm_mode_atomic_ioctl(struct drm_device *dev,
>  
>  	/* disallow for drivers not supporting atomic: */
>  	if (!drm_core_check_feature(dev, DRIVER_ATOMIC))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	/* disallow for userspace that has not enabled atomic cap (even
>  	 * though this may be a bit overkill, since legacy userspace
> diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
> index ba8cfe65c65b..a07e7a781d64 100644
> --- a/drivers/gpu/drm/drm_bufs.c
> +++ b/drivers/gpu/drm/drm_bufs.c
> @@ -398,7 +398,7 @@ int drm_legacy_addmap_ioctl(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	err = drm_addmap_core(dev, map->offset, map->size, map->type,
>  			      map->flags, &maplist);
> @@ -444,7 +444,7 @@ int drm_legacy_getmap_ioctl(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	idx = map->offset;
>  	if (idx < 0)
> @@ -596,7 +596,7 @@ int drm_legacy_rmmap_ioctl(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	mutex_lock(&dev->struct_mutex);
>  	list_for_each_entry(r_list, &dev->maplist, head) {
> @@ -860,7 +860,7 @@ int drm_legacy_addbufs_pci(struct drm_device *dev,
>  	struct drm_buf **temp_buflist;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_PCI_DMA))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dma)
>  		return -EINVAL;
> @@ -1064,7 +1064,7 @@ static int drm_legacy_addbufs_sg(struct drm_device *dev,
>  	struct drm_buf **temp_buflist;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SG))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dma)
>  		return -EINVAL;
> @@ -1221,10 +1221,10 @@ int drm_legacy_addbufs(struct drm_device *dev, void *data,
>  	int ret;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  #if IS_ENABLED(CONFIG_AGP)
>  	if (request->flags & _DRM_AGP_BUFFER)
> @@ -1267,10 +1267,10 @@ int __drm_legacy_infobufs(struct drm_device *dev,
>  	int count;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dma)
>  		return -EINVAL;
> @@ -1352,10 +1352,10 @@ int drm_legacy_markbufs(struct drm_device *dev, void *data,
>  	struct drm_buf_entry *entry;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dma)
>  		return -EINVAL;
> @@ -1400,10 +1400,10 @@ int drm_legacy_freebufs(struct drm_device *dev, void *data,
>  	struct drm_buf *buf;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dma)
>  		return -EINVAL;
> @@ -1455,10 +1455,10 @@ int __drm_legacy_mapbufs(struct drm_device *dev, void *data, int *p,
>  	int i;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dma)
>  		return -EINVAL;
> @@ -1545,7 +1545,7 @@ int drm_legacy_dma_ioctl(struct drm_device *dev, void *data,
>  		  struct drm_file *file_priv)
>  {
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (dev->driver->dma_ioctl)
>  		return dev->driver->dma_ioctl(dev, data, file_priv);
> diff --git a/drivers/gpu/drm/drm_color_mgmt.c b/drivers/gpu/drm/drm_color_mgmt.c
> index b97e2de2c029..a7a74f2e3d89 100644
> --- a/drivers/gpu/drm/drm_color_mgmt.c
> +++ b/drivers/gpu/drm/drm_color_mgmt.c
> @@ -242,7 +242,7 @@ int drm_mode_gamma_set_ioctl(struct drm_device *dev,
>  	int ret = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	crtc = drm_crtc_find(dev, file_priv, crtc_lut->crtc_id);
>  	if (!crtc)
> @@ -320,7 +320,7 @@ int drm_mode_gamma_get_ioctl(struct drm_device *dev,
>  	int ret = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	crtc = drm_crtc_find(dev, file_priv, crtc_lut->crtc_id);
>  	if (!crtc)
> diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
> index 526619f963e5..abf912d1eb90 100644
> --- a/drivers/gpu/drm/drm_connector.c
> +++ b/drivers/gpu/drm/drm_connector.c
> @@ -1725,7 +1725,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
>  	LIST_HEAD(export_list);
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	memset(&u_mode, 0, sizeof(struct drm_mode_modeinfo));
>  
> diff --git a/drivers/gpu/drm/drm_context.c b/drivers/gpu/drm/drm_context.c
> index f973d287696a..f33fc1fdbaa9 100644
> --- a/drivers/gpu/drm/drm_context.c
> +++ b/drivers/gpu/drm/drm_context.c
> @@ -178,7 +178,7 @@ int drm_legacy_getsareactx(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	mutex_lock(&dev->struct_mutex);
>  
> @@ -226,7 +226,7 @@ int drm_legacy_setsareactx(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	mutex_lock(&dev->struct_mutex);
>  	list_for_each_entry(r_list, &dev->maplist, head) {
> @@ -330,7 +330,7 @@ int drm_legacy_resctx(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (res->count >= DRM_RESERVED_CONTEXTS) {
>  		memset(&ctx, 0, sizeof(ctx));
> @@ -364,7 +364,7 @@ int drm_legacy_addctx(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	ctx->handle = drm_legacy_ctxbitmap_next(dev);
>  	if (ctx->handle == DRM_KERNEL_CONTEXT) {
> @@ -411,7 +411,7 @@ int drm_legacy_getctx(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	/* This is 0, because we don't handle any context flags */
>  	ctx->flags = 0;
> @@ -437,7 +437,7 @@ int drm_legacy_switchctx(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	DRM_DEBUG("%d\n", ctx->handle);
>  	return drm_context_switch(dev, dev->last_context, ctx->handle);
> @@ -461,7 +461,7 @@ int drm_legacy_newctx(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	DRM_DEBUG("%d\n", ctx->handle);
>  	drm_context_switch_complete(dev, file_priv, ctx->handle);
> @@ -487,7 +487,7 @@ int drm_legacy_rmctx(struct drm_device *dev, void *data,
>  
>  	if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
>  	    !drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	DRM_DEBUG("%d\n", ctx->handle);
>  	if (ctx->handle != DRM_KERNEL_CONTEXT) {
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 2f6c877299e4..9648c4bc6abf 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -405,7 +405,7 @@ int drm_mode_getcrtc(struct drm_device *dev,
>  	struct drm_plane *plane;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	crtc = drm_crtc_find(dev, file_priv, crtc_resp->crtc_id);
>  	if (!crtc)
> @@ -580,7 +580,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
>  	int i;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	/*
>  	 * Universal plane src offsets are only 16.16, prevent havoc for
> diff --git a/drivers/gpu/drm/drm_encoder.c b/drivers/gpu/drm/drm_encoder.c
> index 273e1c59c54a..16f584e8033a 100644
> --- a/drivers/gpu/drm/drm_encoder.c
> +++ b/drivers/gpu/drm/drm_encoder.c
> @@ -222,7 +222,7 @@ int drm_mode_getencoder(struct drm_device *dev, void *data,
>  	struct drm_crtc *crtc;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	encoder = drm_encoder_find(dev, file_priv, enc_resp->encoder_id);
>  	if (!encoder)
> diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c
> index 6eaacd4eb8cc..3e3101735d1d 100644
> --- a/drivers/gpu/drm/drm_framebuffer.c
> +++ b/drivers/gpu/drm/drm_framebuffer.c
> @@ -113,6 +113,9 @@ int drm_mode_addfb(struct drm_device *dev, struct drm_mode_fb_cmd *or,
>  	struct drm_mode_fb_cmd2 r = {};
>  	int ret;
>  
> +	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> +		return -ENOTSUPP;
> +
>  	r.pixel_format = drm_mode_legacy_fb_format(or->bpp, or->depth);
>  	if (r.pixel_format == DRM_FORMAT_INVALID) {
>  		DRM_DEBUG("bad {bpp:%d, depth:%d}\n", or->bpp, or->depth);
> @@ -352,7 +355,7 @@ int drm_mode_addfb2(struct drm_device *dev,
>  	struct drm_framebuffer *fb;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	fb = drm_internal_framebuffer_create(dev, r, file_priv);
>  	if (IS_ERR(fb))
> @@ -387,7 +390,7 @@ int drm_mode_addfb2_ioctl(struct drm_device *dev,
>  		 * ADDFB.
>  		 */
>  		DRM_DEBUG_KMS("addfb2 broken on bigendian");
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  	}
>  #endif
>  	return drm_mode_addfb2(dev, data, file_priv);
> @@ -432,7 +435,7 @@ int drm_mode_rmfb(struct drm_device *dev, u32 fb_id,
>  	int found = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	fb = drm_framebuffer_lookup(dev, file_priv, fb_id);
>  	if (!fb)
> @@ -509,7 +512,7 @@ int drm_mode_getfb(struct drm_device *dev,
>  	int ret;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	fb = drm_framebuffer_lookup(dev, file_priv, r->fb_id);
>  	if (!fb)
> @@ -582,7 +585,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
>  	int ret;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	fb = drm_framebuffer_lookup(dev, file_priv, r->fb_id);
>  	if (!fb)
> diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
> index bf90625df3c5..aa5967c8ef53 100644
> --- a/drivers/gpu/drm/drm_gem.c
> +++ b/drivers/gpu/drm/drm_gem.c
> @@ -667,7 +667,7 @@ drm_gem_close_ioctl(struct drm_device *dev, void *data,
>  	int ret;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_GEM))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	ret = drm_gem_handle_delete(file_priv, args->handle);
>  
> @@ -694,7 +694,7 @@ drm_gem_flink_ioctl(struct drm_device *dev, void *data,
>  	int ret;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_GEM))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	obj = drm_gem_object_lookup(file_priv, args->handle);
>  	if (obj == NULL)
> @@ -745,7 +745,7 @@ drm_gem_open_ioctl(struct drm_device *dev, void *data,
>  	u32 handle;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_GEM))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	mutex_lock(&dev->object_name_lock);
>  	obj = idr_find(&dev->object_name_idr, (int) args->name);
> diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
> index 6b4a633b4240..eafea8ae2243 100644
> --- a/drivers/gpu/drm/drm_ioctl.c
> +++ b/drivers/gpu/drm/drm_ioctl.c
> @@ -319,7 +319,7 @@ drm_setclientcap(struct drm_device *dev, void *data, struct drm_file *file_priv)
>  		break;
>  	case DRM_CLIENT_CAP_ATOMIC:
>  		if (!drm_core_check_feature(dev, DRIVER_ATOMIC))
> -			return -EINVAL;
> +			return -ENOTSUPP;
>  		if (req->value > 1)
>  			return -EINVAL;
>  		file_priv->atomic = req->value;
> diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
> index 3b04c25100ae..83c34950c88f 100644
> --- a/drivers/gpu/drm/drm_irq.c
> +++ b/drivers/gpu/drm/drm_irq.c
> @@ -104,7 +104,7 @@ int drm_irq_install(struct drm_device *dev, int irq)
>  	unsigned long sh_flags = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (irq == 0)
>  		return -EINVAL;
> @@ -175,7 +175,7 @@ int drm_irq_uninstall(struct drm_device *dev)
>  	int i;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	irq_enabled = dev->irq_enabled;
>  	dev->irq_enabled = false;
> diff --git a/drivers/gpu/drm/drm_lease.c b/drivers/gpu/drm/drm_lease.c
> index b54fb78a283c..642174f528e4 100644
> --- a/drivers/gpu/drm/drm_lease.c
> +++ b/drivers/gpu/drm/drm_lease.c
> @@ -506,7 +506,7 @@ int drm_mode_create_lease_ioctl(struct drm_device *dev,
>  
>  	/* Can't lease without MODESET */
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	/* Do not allow sub-leases */
>  	if (lessor->lessor)
> @@ -615,7 +615,7 @@ int drm_mode_list_lessees_ioctl(struct drm_device *dev,
>  
>  	/* Can't lease without MODESET */
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	DRM_DEBUG_LEASE("List lessees for %d\n", lessor->lessee_id);
>  
> @@ -671,7 +671,7 @@ int drm_mode_get_lease_ioctl(struct drm_device *dev,
>  
>  	/* Can't lease without MODESET */
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	DRM_DEBUG_LEASE("get lease for %d\n", lessee->lessee_id);
>  
> @@ -726,7 +726,7 @@ int drm_mode_revoke_lease_ioctl(struct drm_device *dev,
>  
>  	/* Can't lease without MODESET */
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	mutex_lock(&dev->mode_config.idr_mutex);
>  
> diff --git a/drivers/gpu/drm/drm_lock.c b/drivers/gpu/drm/drm_lock.c
> index 96bb6badb818..ee58697c4ad9 100644
> --- a/drivers/gpu/drm/drm_lock.c
> +++ b/drivers/gpu/drm/drm_lock.c
> @@ -166,7 +166,7 @@ int drm_legacy_lock(struct drm_device *dev, void *data,
>  	int ret = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	++file_priv->lock_count;
>  
> @@ -256,7 +256,7 @@ int drm_legacy_unlock(struct drm_device *dev, void *data, struct drm_file *file_
>  	struct drm_master *master = file_priv->master;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (lock->context == DRM_KERNEL_CONTEXT) {
>  		DRM_ERROR("Process %d using kernel context %d\n",
> diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
> index 21e353bd3948..9ba8f0b91cfb 100644
> --- a/drivers/gpu/drm/drm_mode_config.c
> +++ b/drivers/gpu/drm/drm_mode_config.c
> @@ -97,7 +97,7 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
>  	struct drm_connector_list_iter conn_iter;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  
>  	mutex_lock(&file_priv->fbs_lock);
> diff --git a/drivers/gpu/drm/drm_mode_object.c b/drivers/gpu/drm/drm_mode_object.c
> index fcb0ab0abb75..ad5a64eb671d 100644
> --- a/drivers/gpu/drm/drm_mode_object.c
> +++ b/drivers/gpu/drm/drm_mode_object.c
> @@ -381,7 +381,7 @@ int drm_mode_obj_get_properties_ioctl(struct drm_device *dev, void *data,
>  	int ret = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	drm_modeset_lock_all(dev);
>  
> @@ -504,7 +504,7 @@ int drm_mode_obj_set_property_ioctl(struct drm_device *dev, void *data,
>  	int ret = -EINVAL;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	arg_obj = drm_mode_object_find(dev, file_priv, arg->obj_id, arg->obj_type);
>  	if (!arg_obj)
> diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
> index 896e42a34895..209f1e649c02 100644
> --- a/drivers/gpu/drm/drm_pci.c
> +++ b/drivers/gpu/drm/drm_pci.c
> @@ -182,14 +182,14 @@ int drm_irq_by_busid(struct drm_device *dev, void *data,
>  	struct drm_irq_busid *p = data;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	/* UMS was only ever support on PCI devices. */
>  	if (WARN_ON(!dev->pdev))
>  		return -EINVAL;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	return drm_pci_irq_by_busid(dev, p);
>  }
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index 4a72c6829d73..f9737b7c5e89 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -477,7 +477,7 @@ int drm_mode_getplane_res(struct drm_device *dev, void *data,
>  	int count = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	plane_ptr = u64_to_user_ptr(plane_resp->plane_id_ptr);
>  
> @@ -514,7 +514,7 @@ int drm_mode_getplane(struct drm_device *dev, void *data,
>  	uint32_t __user *format_ptr;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	plane = drm_plane_find(dev, file_priv, plane_resp->plane_id);
>  	if (!plane)
> @@ -781,7 +781,7 @@ int drm_mode_setplane(struct drm_device *dev, void *data,
>  	int ret;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	/*
>  	 * First, find the plane, crtc, and fb objects.  If not available,
> @@ -919,7 +919,7 @@ static int drm_mode_cursor_common(struct drm_device *dev,
>  	int ret = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!req->flags || (~DRM_MODE_CURSOR_FLAGS & req->flags))
>  		return -EINVAL;
> @@ -1023,7 +1023,7 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
>  	int ret = -EINVAL;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (page_flip->flags & ~DRM_MODE_PAGE_FLIP_FLAGS)
>  		return -EINVAL;
> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
> index 186db2e4c57a..76253e15b41f 100644
> --- a/drivers/gpu/drm/drm_prime.c
> +++ b/drivers/gpu/drm/drm_prime.c
> @@ -844,7 +844,7 @@ int drm_prime_handle_to_fd_ioctl(struct drm_device *dev, void *data,
>  	struct drm_prime_handle *args = data;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_PRIME))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dev->driver->prime_handle_to_fd)
>  		return -ENOSYS;
> @@ -863,7 +863,7 @@ int drm_prime_fd_to_handle_ioctl(struct drm_device *dev, void *data,
>  	struct drm_prime_handle *args = data;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_PRIME))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dev->driver->prime_fd_to_handle)
>  		return -ENOSYS;
> diff --git a/drivers/gpu/drm/drm_property.c b/drivers/gpu/drm/drm_property.c
> index cdb10f885a4f..2411a31e6891 100644
> --- a/drivers/gpu/drm/drm_property.c
> +++ b/drivers/gpu/drm/drm_property.c
> @@ -464,7 +464,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
>  	uint64_t __user *values_ptr;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	property = drm_property_find(dev, file_priv, out_resp->prop_id);
>  	if (!property)
> @@ -757,7 +757,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
>  	int ret = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	blob = drm_property_lookup_blob(dev, out_resp->blob_id);
>  	if (!blob)
> @@ -786,7 +786,7 @@ int drm_mode_createblob_ioctl(struct drm_device *dev,
>  	int ret = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	blob = drm_property_create_blob(dev, out_resp->length, NULL);
>  	if (IS_ERR(blob))
> @@ -823,7 +823,7 @@ int drm_mode_destroyblob_ioctl(struct drm_device *dev,
>  	int ret = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	blob = drm_property_lookup_blob(dev, out_resp->blob_id);
>  	if (!blob)
> diff --git a/drivers/gpu/drm/drm_scatter.c b/drivers/gpu/drm/drm_scatter.c
> index 275bca44f38c..ceaa04b530c1 100644
> --- a/drivers/gpu/drm/drm_scatter.c
> +++ b/drivers/gpu/drm/drm_scatter.c
> @@ -89,10 +89,10 @@ int drm_legacy_sg_alloc(struct drm_device *dev, void *data,
>  	DRM_DEBUG("\n");
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SG))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (dev->sg)
>  		return -EINVAL;
> @@ -202,10 +202,10 @@ int drm_legacy_sg_free(struct drm_device *dev, void *data,
>  	struct drm_sg_mem *entry;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_LEGACY))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SG))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	entry = dev->sg;
>  	dev->sg = NULL;
> diff --git a/drivers/gpu/drm/drm_syncobj.c b/drivers/gpu/drm/drm_syncobj.c
> index e9ce623d049e..b6590591c25d 100644
> --- a/drivers/gpu/drm/drm_syncobj.c
> +++ b/drivers/gpu/drm/drm_syncobj.c
> @@ -573,7 +573,7 @@ drm_syncobj_create_ioctl(struct drm_device *dev, void *data,
>  	struct drm_syncobj_create *args = data;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	/* no valid flags yet */
>  	if (args->flags & ~DRM_SYNCOBJ_CREATE_SIGNALED)
> @@ -590,7 +590,7 @@ drm_syncobj_destroy_ioctl(struct drm_device *dev, void *data,
>  	struct drm_syncobj_destroy *args = data;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	/* make sure padding is empty */
>  	if (args->pad)
> @@ -605,7 +605,7 @@ drm_syncobj_handle_to_fd_ioctl(struct drm_device *dev, void *data,
>  	struct drm_syncobj_handle *args = data;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	if (args->pad)
>  		return -EINVAL;
> @@ -629,7 +629,7 @@ drm_syncobj_fd_to_handle_ioctl(struct drm_device *dev, void *data,
>  	struct drm_syncobj_handle *args = data;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	if (args->pad)
>  		return -EINVAL;
> @@ -921,7 +921,7 @@ drm_syncobj_wait_ioctl(struct drm_device *dev, void *data,
>  	int ret = 0;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	if (args->flags & ~(DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL |
>  			    DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT))
> @@ -955,7 +955,7 @@ drm_syncobj_reset_ioctl(struct drm_device *dev, void *data,
>  	int ret;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	if (args->pad != 0)
>  		return -EINVAL;
> @@ -988,7 +988,7 @@ drm_syncobj_signal_ioctl(struct drm_device *dev, void *data,
>  	int ret;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_SYNCOBJ))
> -		return -ENODEV;
> +		return -ENOTSUPP;
>  
>  	if (args->pad != 0)
>  		return -EINVAL;
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index ec2dcfdac8ef..176004d05934 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -1771,7 +1771,7 @@ int drm_crtc_get_sequence_ioctl(struct drm_device *dev, void *data,
>  	int ret;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dev->irq_enabled)
>  		return -EINVAL;
> @@ -1829,7 +1829,7 @@ int drm_crtc_queue_sequence_ioctl(struct drm_device *dev, void *data,
>  	unsigned long spin_flags;
>  
>  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
> -		return -EINVAL;
> +		return -ENOTSUPP;
>  
>  	if (!dev->irq_enabled)
>  		return -EINVAL;
> -- 
> 2.19.0
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2018-09-13 13:30 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-12  8:27 [PATCH] drm: Differentiate the lack of an interface from invalid parameter Chris Wilson
2018-09-12  8:39 ` Daniel Vetter
2018-09-12  8:50   ` Chris Wilson
2018-09-12  9:02     ` Daniel Vetter
2018-09-12  9:12       ` Chris Wilson
2018-09-12 16:26         ` Christian König
2018-09-12  8:58 ` ✓ Fi.CI.BAT: success for " Patchwork
2018-09-12  9:26 ` [PATCH v2] " Chris Wilson
2018-09-12  9:29 ` [PATCH v3] " Chris Wilson
2018-09-13 13:30   ` Daniel Vetter [this message]
2018-09-13 19:20     ` Chris Wilson
2018-09-14 16:58       ` Chris Wilson
2018-09-12  9:58 ` ✓ Fi.CI.BAT: success for drm: Differentiate the lack of an interface from invalid parameter (rev3) Patchwork
2018-09-12 12:23 ` ✓ Fi.CI.IGT: " Patchwork
2018-09-13 19:50 ` ✓ Fi.CI.BAT: success for drm: Differentiate the lack of an interface from invalid parameter (rev4) Patchwork
2018-09-13 21:37 ` ✓ Fi.CI.IGT: " Patchwork

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=20180913133011.GC11082@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=chris@chris-wilson.co.uk \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /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.