| .. | .. |
|---|
| 31 | 31 | #include <linux/ratelimit.h> |
|---|
| 32 | 32 | #include <linux/export.h> |
|---|
| 33 | 33 | |
|---|
| 34 | | -#include <drm/drmP.h> |
|---|
| 35 | | -#include "drm_legacy.h" |
|---|
| 36 | | -#include "drm_internal.h" |
|---|
| 34 | +#include <drm/drm_agpsupport.h> |
|---|
| 35 | +#include <drm/drm_file.h> |
|---|
| 36 | +#include <drm/drm_print.h> |
|---|
| 37 | + |
|---|
| 37 | 38 | #include "drm_crtc_internal.h" |
|---|
| 39 | +#include "drm_internal.h" |
|---|
| 40 | +#include "drm_legacy.h" |
|---|
| 38 | 41 | |
|---|
| 39 | 42 | #define DRM_IOCTL_VERSION32 DRM_IOWR(0x00, drm_version32_t) |
|---|
| 40 | 43 | #define DRM_IOCTL_GET_UNIQUE32 DRM_IOWR(0x01, drm_unique32_t) |
|---|
| .. | .. |
|---|
| 107 | 110 | .desc = compat_ptr(v32.desc), |
|---|
| 108 | 111 | }; |
|---|
| 109 | 112 | err = drm_ioctl_kernel(file, drm_version, &v, |
|---|
| 110 | | - DRM_UNLOCKED|DRM_RENDER_ALLOW); |
|---|
| 113 | + DRM_RENDER_ALLOW); |
|---|
| 111 | 114 | if (err) |
|---|
| 112 | 115 | return err; |
|---|
| 113 | 116 | |
|---|
| .. | .. |
|---|
| 144 | 147 | .unique = compat_ptr(uq32.unique), |
|---|
| 145 | 148 | }; |
|---|
| 146 | 149 | |
|---|
| 147 | | - err = drm_ioctl_kernel(file, drm_getunique, &uq, DRM_UNLOCKED); |
|---|
| 150 | + err = drm_ioctl_kernel(file, drm_getunique, &uq, 0); |
|---|
| 148 | 151 | if (err) |
|---|
| 149 | 152 | return err; |
|---|
| 150 | 153 | |
|---|
| .. | .. |
|---|
| 161 | 164 | return -EINVAL; |
|---|
| 162 | 165 | } |
|---|
| 163 | 166 | |
|---|
| 167 | +#if IS_ENABLED(CONFIG_DRM_LEGACY) |
|---|
| 164 | 168 | typedef struct drm_map32 { |
|---|
| 165 | 169 | u32 offset; /* Requested physical address (0 for SAREA) */ |
|---|
| 166 | 170 | u32 size; /* Requested physical size (bytes) */ |
|---|
| .. | .. |
|---|
| 182 | 186 | return -EFAULT; |
|---|
| 183 | 187 | |
|---|
| 184 | 188 | map.offset = m32.offset; |
|---|
| 185 | | - err = drm_ioctl_kernel(file, drm_legacy_getmap_ioctl, &map, DRM_UNLOCKED); |
|---|
| 189 | + err = drm_ioctl_kernel(file, drm_legacy_getmap_ioctl, &map, 0); |
|---|
| 186 | 190 | if (err) |
|---|
| 187 | 191 | return err; |
|---|
| 188 | 192 | |
|---|
| .. | .. |
|---|
| 244 | 248 | map.handle = compat_ptr(handle); |
|---|
| 245 | 249 | return drm_ioctl_kernel(file, drm_legacy_rmmap_ioctl, &map, DRM_AUTH); |
|---|
| 246 | 250 | } |
|---|
| 251 | +#endif |
|---|
| 247 | 252 | |
|---|
| 248 | 253 | typedef struct drm_client32 { |
|---|
| 249 | 254 | int idx; /* Which client desired? */ |
|---|
| .. | .. |
|---|
| 269 | 274 | |
|---|
| 270 | 275 | client.idx = c32.idx; |
|---|
| 271 | 276 | |
|---|
| 272 | | - err = drm_ioctl_kernel(file, drm_getclient, &client, DRM_UNLOCKED); |
|---|
| 277 | + err = drm_ioctl_kernel(file, drm_getclient, &client, 0); |
|---|
| 273 | 278 | if (err) |
|---|
| 274 | 279 | return err; |
|---|
| 275 | 280 | |
|---|
| .. | .. |
|---|
| 299 | 304 | drm_stats32_t __user *argp = (void __user *)arg; |
|---|
| 300 | 305 | int err; |
|---|
| 301 | 306 | |
|---|
| 302 | | - err = drm_ioctl_kernel(file, drm_noop, NULL, DRM_UNLOCKED); |
|---|
| 307 | + err = drm_ioctl_kernel(file, drm_noop, NULL, 0); |
|---|
| 303 | 308 | if (err) |
|---|
| 304 | 309 | return err; |
|---|
| 305 | 310 | |
|---|
| .. | .. |
|---|
| 308 | 313 | return 0; |
|---|
| 309 | 314 | } |
|---|
| 310 | 315 | |
|---|
| 316 | +#if IS_ENABLED(CONFIG_DRM_LEGACY) |
|---|
| 311 | 317 | typedef struct drm_buf_desc32 { |
|---|
| 312 | 318 | int count; /* Number of buffers of this size */ |
|---|
| 313 | 319 | int size; /* Size in bytes */ |
|---|
| .. | .. |
|---|
| 389 | 395 | struct drm_file *file_priv) |
|---|
| 390 | 396 | { |
|---|
| 391 | 397 | drm_buf_info32_t *request = data; |
|---|
| 398 | + |
|---|
| 392 | 399 | return __drm_legacy_infobufs(dev, data, &request->count, copy_one_buf32); |
|---|
| 393 | 400 | } |
|---|
| 394 | 401 | |
|---|
| .. | .. |
|---|
| 614 | 621 | |
|---|
| 615 | 622 | return 0; |
|---|
| 616 | 623 | } |
|---|
| 624 | +#endif |
|---|
| 617 | 625 | |
|---|
| 618 | 626 | #if IS_ENABLED(CONFIG_AGP) |
|---|
| 619 | 627 | typedef struct drm_agp_mode32 { |
|---|
| .. | .. |
|---|
| 758 | 766 | } |
|---|
| 759 | 767 | #endif /* CONFIG_AGP */ |
|---|
| 760 | 768 | |
|---|
| 769 | +#if IS_ENABLED(CONFIG_DRM_LEGACY) |
|---|
| 761 | 770 | typedef struct drm_scatter_gather32 { |
|---|
| 762 | 771 | u32 size; /**< In bytes -- will round to page boundary */ |
|---|
| 763 | 772 | u32 handle; /**< Used for mapping / unmapping */ |
|---|
| .. | .. |
|---|
| 798 | 807 | return drm_ioctl_kernel(file, drm_legacy_sg_free, &request, |
|---|
| 799 | 808 | DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY); |
|---|
| 800 | 809 | } |
|---|
| 801 | | - |
|---|
| 810 | +#endif |
|---|
| 802 | 811 | #if defined(CONFIG_X86) |
|---|
| 803 | 812 | typedef struct drm_update_draw32 { |
|---|
| 804 | 813 | drm_drawable_t handle; |
|---|
| .. | .. |
|---|
| 812 | 821 | unsigned long arg) |
|---|
| 813 | 822 | { |
|---|
| 814 | 823 | drm_update_draw32_t update32; |
|---|
| 824 | + |
|---|
| 815 | 825 | if (copy_from_user(&update32, (void __user *)arg, sizeof(update32))) |
|---|
| 816 | 826 | return -EFAULT; |
|---|
| 817 | 827 | |
|---|
| .. | .. |
|---|
| 896 | 906 | sizeof(req64.modifier))) |
|---|
| 897 | 907 | return -EFAULT; |
|---|
| 898 | 908 | |
|---|
| 899 | | - err = drm_ioctl_kernel(file, drm_mode_addfb2, &req64, |
|---|
| 900 | | - DRM_UNLOCKED); |
|---|
| 909 | + err = drm_ioctl_kernel(file, drm_mode_addfb2, &req64, 0); |
|---|
| 901 | 910 | if (err) |
|---|
| 902 | 911 | return err; |
|---|
| 903 | 912 | |
|---|
| .. | .. |
|---|
| 915 | 924 | #define DRM_IOCTL32_DEF(n, f) [DRM_IOCTL_NR(n##32)] = {.fn = f, .name = #n} |
|---|
| 916 | 925 | DRM_IOCTL32_DEF(DRM_IOCTL_VERSION, compat_drm_version), |
|---|
| 917 | 926 | DRM_IOCTL32_DEF(DRM_IOCTL_GET_UNIQUE, compat_drm_getunique), |
|---|
| 927 | +#if IS_ENABLED(CONFIG_DRM_LEGACY) |
|---|
| 918 | 928 | DRM_IOCTL32_DEF(DRM_IOCTL_GET_MAP, compat_drm_getmap), |
|---|
| 929 | +#endif |
|---|
| 919 | 930 | DRM_IOCTL32_DEF(DRM_IOCTL_GET_CLIENT, compat_drm_getclient), |
|---|
| 920 | 931 | DRM_IOCTL32_DEF(DRM_IOCTL_GET_STATS, compat_drm_getstats), |
|---|
| 921 | 932 | DRM_IOCTL32_DEF(DRM_IOCTL_SET_UNIQUE, compat_drm_setunique), |
|---|
| 933 | +#if IS_ENABLED(CONFIG_DRM_LEGACY) |
|---|
| 922 | 934 | DRM_IOCTL32_DEF(DRM_IOCTL_ADD_MAP, compat_drm_addmap), |
|---|
| 923 | 935 | DRM_IOCTL32_DEF(DRM_IOCTL_ADD_BUFS, compat_drm_addbufs), |
|---|
| 924 | 936 | DRM_IOCTL32_DEF(DRM_IOCTL_MARK_BUFS, compat_drm_markbufs), |
|---|
| .. | .. |
|---|
| 930 | 942 | DRM_IOCTL32_DEF(DRM_IOCTL_GET_SAREA_CTX, compat_drm_getsareactx), |
|---|
| 931 | 943 | DRM_IOCTL32_DEF(DRM_IOCTL_RES_CTX, compat_drm_resctx), |
|---|
| 932 | 944 | DRM_IOCTL32_DEF(DRM_IOCTL_DMA, compat_drm_dma), |
|---|
| 945 | +#endif |
|---|
| 933 | 946 | #if IS_ENABLED(CONFIG_AGP) |
|---|
| 934 | 947 | DRM_IOCTL32_DEF(DRM_IOCTL_AGP_ENABLE, compat_drm_agp_enable), |
|---|
| 935 | 948 | DRM_IOCTL32_DEF(DRM_IOCTL_AGP_INFO, compat_drm_agp_info), |
|---|
| .. | .. |
|---|
| 938 | 951 | DRM_IOCTL32_DEF(DRM_IOCTL_AGP_BIND, compat_drm_agp_bind), |
|---|
| 939 | 952 | DRM_IOCTL32_DEF(DRM_IOCTL_AGP_UNBIND, compat_drm_agp_unbind), |
|---|
| 940 | 953 | #endif |
|---|
| 954 | +#if IS_ENABLED(CONFIG_DRM_LEGACY) |
|---|
| 941 | 955 | DRM_IOCTL32_DEF(DRM_IOCTL_SG_ALLOC, compat_drm_sg_alloc), |
|---|
| 942 | 956 | DRM_IOCTL32_DEF(DRM_IOCTL_SG_FREE, compat_drm_sg_free), |
|---|
| 957 | +#endif |
|---|
| 943 | 958 | #if defined(CONFIG_X86) || defined(CONFIG_IA64) |
|---|
| 944 | 959 | DRM_IOCTL32_DEF(DRM_IOCTL_UPDATE_DRAW, compat_drm_update_draw), |
|---|
| 945 | 960 | #endif |
|---|
| .. | .. |
|---|
| 981 | 996 | if (!fn) |
|---|
| 982 | 997 | return drm_ioctl(filp, cmd, arg); |
|---|
| 983 | 998 | |
|---|
| 984 | | - DRM_DEBUG("pid=%d, dev=0x%lx, auth=%d, %s\n", |
|---|
| 985 | | - task_pid_nr(current), |
|---|
| 999 | + DRM_DEBUG("comm=\"%s\", pid=%d, dev=0x%lx, auth=%d, %s\n", |
|---|
| 1000 | + current->comm, task_pid_nr(current), |
|---|
| 986 | 1001 | (long)old_encode_dev(file_priv->minor->kdev->devt), |
|---|
| 987 | 1002 | file_priv->authenticated, |
|---|
| 988 | 1003 | drm_compat_ioctls[nr].name); |
|---|