drm: Differentiate the lack of an interface from invalid parameter
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 13 Sep 2018 19:20:50 +0000 (20:20 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 14 Sep 2018 16:29:47 +0000 (17:29 +0100)
If the ioctl is not supported on a particular piece of HW/driver
combination, report ENOTSUP (aka EOPNOTSUPP) 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.

v3: ENOTSUPP is an internal errno! It's value (524) does not correspond
to a POSIX errno, the one we want is ENOTSUP. However,
uapi/asm-generic/errno.h doesn't include ENOTSUP but man errno says

"ENOTSUP and EOPNOTSUPP have the same value on Linux,
but according to POSIX.1 these error values should be
distinct."

so use EOPNOTSUPP as its equivalent.

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>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> #v2
Link: https://patchwork.freedesktop.org/patch/msgid/20180913192050.24812-1-chris@chris-wilson.co.uk
23 files changed:
drivers/gpu/drm/drm_atomic_uapi.c
drivers/gpu/drm/drm_bufs.c
drivers/gpu/drm/drm_client.c
drivers/gpu/drm/drm_color_mgmt.c
drivers/gpu/drm/drm_connector.c
drivers/gpu/drm/drm_context.c
drivers/gpu/drm/drm_crtc.c
drivers/gpu/drm/drm_encoder.c
drivers/gpu/drm/drm_framebuffer.c
drivers/gpu/drm/drm_gem.c
drivers/gpu/drm/drm_ioctl.c
drivers/gpu/drm/drm_irq.c
drivers/gpu/drm/drm_lease.c
drivers/gpu/drm/drm_lock.c
drivers/gpu/drm/drm_mode_config.c
drivers/gpu/drm/drm_mode_object.c
drivers/gpu/drm/drm_pci.c
drivers/gpu/drm/drm_plane.c
drivers/gpu/drm/drm_prime.c
drivers/gpu/drm/drm_property.c
drivers/gpu/drm/drm_scatter.c
drivers/gpu/drm/drm_syncobj.c
drivers/gpu/drm/drm_vblank.c

index 26690a664ec617ab71d3669c05f19bbec32b424b..d5b7f315098c23b2ddc0c0ab74e410396e0ad917 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        /* disallow for userspace that has not enabled atomic cap (even
         * though this may be a bit overkill, since legacy userspace
index ba8cfe65c65bd424297e2610ee0975e8b693862b..7412acaf3cde5051cafb90ccc806a272c5fbc9b1 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
-               return -EINVAL;
+               return -EOPNOTSUPP;
 
 #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 -EOPNOTSUPP;
 
        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
-               return -EINVAL;
+               return -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
-               return -EINVAL;
+               return -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
-               return -EINVAL;
+               return -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
-               return -EINVAL;
+               return -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (dev->driver->dma_ioctl)
                return dev->driver->dma_ioctl(dev, data, file_priv);
index baff50a4c2349dfec2ae8df1f14c0b5714f29020..17d9a64e885eaa5291c4ffc72602514f4a3d4825 100644 (file)
@@ -82,7 +82,7 @@ int drm_client_new(struct drm_device *dev, struct drm_client_dev *client,
 
        if (!drm_core_check_feature(dev, DRIVER_MODESET) ||
            !dev->driver->dumb_create || !dev->driver->gem_prime_vmap)
-               return -ENOTSUPP;
+               return -EOPNOTSUPP;
 
        if (funcs && !try_module_get(funcs->owner))
                return -ENODEV;
index b97e2de2c0298b968a580064292a3fbdd6b656a6..581cc378822309e4220a1f49ba8073240ec8ca1e 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        crtc = drm_crtc_find(dev, file_priv, crtc_lut->crtc_id);
        if (!crtc)
index 526619f963e542dea513283b77ad78a6a0c60785..1e40e5decbe91a4f709305d5259b5b7c0425e617 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        memset(&u_mode, 0, sizeof(struct drm_mode_modeinfo));
 
index f973d287696a6febd621f8bf1ff32d5fc64bdca2..506663c69b0a1e443a7dccb4a62dae117cc105de 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        /* 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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        DRM_DEBUG("%d\n", ctx->handle);
        if (ctx->handle != DRM_KERNEL_CONTEXT) {
index 2f6c877299e42d0b1f6adf8b5c97daef67a710e0..5f488aa80bcd521e5f7f0154291acca4bdadcd13 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        /*
         * Universal plane src offsets are only 16.16, prevent havoc for
index 273e1c59c54a0e98d8a0738dfae58e8588f1668e..b694fb57eaa4082cff9afc6cecffd63e8a852875 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        encoder = drm_encoder_find(dev, file_priv, enc_resp->encoder_id);
        if (!encoder)
index 6eaacd4eb8cc62f6c33c5bcbf440492f2766011a..1ee3d6b44280a9b6f9b081185326e214ba732320 100644 (file)
@@ -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 -EOPNOTSUPP;
+
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
        }
 #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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        fb = drm_framebuffer_lookup(dev, file_priv, r->fb_id);
        if (!fb)
index bf90625df3c5bf4f34f1a1d187064f46c3599aa1..512078ebd97b92f143d63f2af16fbe79ea6c7554 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        mutex_lock(&dev->object_name_lock);
        obj = idr_find(&dev->object_name_idr, (int) args->name);
index 6b4a633b4240953f7ba7aa57692f9f954d2fd38c..60dfbfae6a02b82fa24ad0abf3e5fa3863d5b716 100644 (file)
@@ -248,7 +248,7 @@ static int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_
 
        /* Other caps only work with KMS drivers */
        if (!drm_core_check_feature(dev, DRIVER_MODESET))
-               return -ENOTSUPP;
+               return -EOPNOTSUPP;
 
        switch (req->capability) {
        case DRM_CAP_DUMB_BUFFER:
@@ -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 -EOPNOTSUPP;
                if (req->value > 1)
                        return -EINVAL;
                file_priv->atomic = req->value;
index 3b04c25100aebd19ed38dbb486d30fa8929b7a1f..45a07652fa00e886bc11ae6dcf5766439ee0901a 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        irq_enabled = dev->irq_enabled;
        dev->irq_enabled = false;
index b54fb78a283c642e8541370482c627ea9567dc8e..5894b4e144d794c91c86ae459f31a9d4d4b72750 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        /* 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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        mutex_lock(&dev->mode_config.idr_mutex);
 
index 96bb6badb818d194f43997d1b427481fe1433ab4..67a1a2ca717457ff01b42a0e8114c3f9d531e8da 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        ++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 -EOPNOTSUPP;
 
        if (lock->context == DRM_KERNEL_CONTEXT) {
                DRM_ERROR("Process %d using kernel context %d\n",
index 21e353bd3948ece25235c844da7fd4e3689abe35..ee80788f2c40deb56045fa363e710450f25ef63d 100644 (file)
@@ -97,8 +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 -EOPNOTSUPP;
 
        mutex_lock(&file_priv->fbs_lock);
        count = 0;
index fcb0ab0abb75572a165341d00de8f83b01393aa9..be8b754eaf60c93b3a1d86cc2efc0929b9fef16e 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        arg_obj = drm_mode_object_find(dev, file_priv, arg->obj_id, arg->obj_type);
        if (!arg_obj)
index 896e42a34895da226585977d512a89f0677234da..48f615d38931a946914b2a1ac1268acdb3bf95ff 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        /* 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 -EOPNOTSUPP;
 
        return drm_pci_irq_by_busid(dev, p);
 }
index 4a72c6829d735a78a127143067cc4ac1dd7642af..1fa98bd120030e91b1701fbe52688729ada6b95a 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        /*
         * 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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (page_flip->flags & ~DRM_MODE_PAGE_FLIP_FLAGS)
                return -EINVAL;
index 186db2e4c57a11d60dbb4b3b7912e1de7fc03626..3f0205fc0a1a0efdfdbf7c637ac5a9b7b0f2227a 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (!dev->driver->prime_fd_to_handle)
                return -ENOSYS;
index cdb10f885a4febea85fc5272e22f1378d770da8b..79c77c3cad86eeb2a60cce7f21c5e99781f2ecd5 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        blob = drm_property_lookup_blob(dev, out_resp->blob_id);
        if (!blob)
index 275bca44f38c2fa118fb2ac78530ef08e0f523f0..bb829a115fc6f34caa7f70b07d1b8055de79a9cf 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        if (!drm_core_check_feature(dev, DRIVER_SG))
-               return -EINVAL;
+               return -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (!drm_core_check_feature(dev, DRIVER_SG))
-               return -EINVAL;
+               return -EOPNOTSUPP;
 
        entry = dev->sg;
        dev->sg = NULL;
index e9ce623d049e8ef3fd524c17abb125a92e3b423f..497729202bfebea30e7f581204428e4116a35d69 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        /* 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 -EOPNOTSUPP;
 
        /* 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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (args->pad != 0)
                return -EINVAL;
index ec2dcfdac8efb0f8d8f772df3e5a82f51e74292d..98e0911759217578a0cfaf9e299026a2eca4237b 100644 (file)
@@ -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 -EOPNOTSUPP;
 
        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 -EOPNOTSUPP;
 
        if (!dev->irq_enabled)
                return -EINVAL;