Lines 102-109
Link Here
|
102 |
&version->desc)) |
102 |
&version->desc)) |
103 |
return -EFAULT; |
103 |
return -EFAULT; |
104 |
|
104 |
|
105 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
105 |
err = psb_drm_ioctl(file, DRM_IOCTL_VERSION, (unsigned long)version); |
106 |
DRM_IOCTL_VERSION, (unsigned long)version); |
|
|
107 |
if (err) |
106 |
if (err) |
108 |
return err; |
107 |
return err; |
109 |
|
108 |
|
Lines 143-150
Link Here
|
143 |
&u->unique)) |
142 |
&u->unique)) |
144 |
return -EFAULT; |
143 |
return -EFAULT; |
145 |
|
144 |
|
146 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
145 |
err = psb_drm_ioctl(file, DRM_IOCTL_GET_UNIQUE, (unsigned long)u); |
147 |
DRM_IOCTL_GET_UNIQUE, (unsigned long)u); |
|
|
148 |
if (err) |
146 |
if (err) |
149 |
return err; |
147 |
return err; |
150 |
|
148 |
|
Lines 172-179
Link Here
|
172 |
&u->unique)) |
170 |
&u->unique)) |
173 |
return -EFAULT; |
171 |
return -EFAULT; |
174 |
|
172 |
|
175 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
173 |
return psb_drm_ioctl(file, DRM_IOCTL_SET_UNIQUE, (unsigned long)u); |
176 |
DRM_IOCTL_SET_UNIQUE, (unsigned long)u); |
|
|
177 |
} |
174 |
} |
178 |
|
175 |
|
179 |
typedef struct drm_map32 { |
176 |
typedef struct drm_map32 { |
Lines 203-210
Link Here
|
203 |
if (__put_user(idx, &map->offset)) |
200 |
if (__put_user(idx, &map->offset)) |
204 |
return -EFAULT; |
201 |
return -EFAULT; |
205 |
|
202 |
|
206 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
203 |
err = psb_drm_ioctl(file, DRM_IOCTL_GET_MAP, (unsigned long)map); |
207 |
DRM_IOCTL_GET_MAP, (unsigned long)map); |
|
|
208 |
if (err) |
204 |
if (err) |
209 |
return err; |
205 |
return err; |
210 |
|
206 |
|
Lines 244-251
Link Here
|
244 |
|| __put_user(m32.flags, &map->flags)) |
240 |
|| __put_user(m32.flags, &map->flags)) |
245 |
return -EFAULT; |
241 |
return -EFAULT; |
246 |
|
242 |
|
247 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
243 |
err = psb_drm_ioctl(file, DRM_IOCTL_ADD_MAP, (unsigned long)map); |
248 |
DRM_IOCTL_ADD_MAP, (unsigned long)map); |
|
|
249 |
if (err) |
244 |
if (err) |
250 |
return err; |
245 |
return err; |
251 |
|
246 |
|
Lines 282-289
Link Here
|
282 |
if (__put_user((void *)(unsigned long)handle, &map->handle)) |
277 |
if (__put_user((void *)(unsigned long)handle, &map->handle)) |
283 |
return -EFAULT; |
278 |
return -EFAULT; |
284 |
|
279 |
|
285 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
280 |
return psb_drm_ioctl(file, DRM_IOCTL_RM_MAP, (unsigned long)map); |
286 |
DRM_IOCTL_RM_MAP, (unsigned long)map); |
|
|
287 |
} |
281 |
} |
288 |
|
282 |
|
289 |
typedef struct drm_client32 { |
283 |
typedef struct drm_client32 { |
Lines 312-319
Link Here
|
312 |
if (__put_user(idx, &client->idx)) |
306 |
if (__put_user(idx, &client->idx)) |
313 |
return -EFAULT; |
307 |
return -EFAULT; |
314 |
|
308 |
|
315 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
309 |
err = psb_drm_ioctl(file, DRM_IOCTL_GET_CLIENT, (unsigned long)client); |
316 |
DRM_IOCTL_GET_CLIENT, (unsigned long)client); |
|
|
317 |
if (err) |
310 |
if (err) |
318 |
return err; |
311 |
return err; |
319 |
|
312 |
|
Lines 349-356
Link Here
|
349 |
if (!access_ok(VERIFY_WRITE, stats, sizeof(*stats))) |
342 |
if (!access_ok(VERIFY_WRITE, stats, sizeof(*stats))) |
350 |
return -EFAULT; |
343 |
return -EFAULT; |
351 |
|
344 |
|
352 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
345 |
err = psb_drm_ioctl(file, DRM_IOCTL_GET_STATS, (unsigned long)stats); |
353 |
DRM_IOCTL_GET_STATS, (unsigned long)stats); |
|
|
354 |
if (err) |
346 |
if (err) |
355 |
return err; |
347 |
return err; |
356 |
|
348 |
|
Lines 393-400
Link Here
|
393 |
|| __put_user(agp_start, &buf->agp_start)) |
385 |
|| __put_user(agp_start, &buf->agp_start)) |
394 |
return -EFAULT; |
386 |
return -EFAULT; |
395 |
|
387 |
|
396 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
388 |
err = psb_drm_ioctl(file, DRM_IOCTL_ADD_BUFS, (unsigned long)buf); |
397 |
DRM_IOCTL_ADD_BUFS, (unsigned long)buf); |
|
|
398 |
if (err) |
389 |
if (err) |
399 |
return err; |
390 |
return err; |
400 |
|
391 |
|
Lines 425-432
Link Here
|
425 |
|| __put_user(b32.high_mark, &buf->high_mark)) |
416 |
|| __put_user(b32.high_mark, &buf->high_mark)) |
426 |
return -EFAULT; |
417 |
return -EFAULT; |
427 |
|
418 |
|
428 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
419 |
return psb_drm_ioctl(file, DRM_IOCTL_MARK_BUFS, (unsigned long)buf); |
429 |
DRM_IOCTL_MARK_BUFS, (unsigned long)buf); |
|
|
430 |
} |
420 |
} |
431 |
|
421 |
|
432 |
typedef struct drm_buf_info32 { |
422 |
typedef struct drm_buf_info32 { |
Lines 467-474
Link Here
|
467 |
|| __put_user(list, &request->list)) |
457 |
|| __put_user(list, &request->list)) |
468 |
return -EFAULT; |
458 |
return -EFAULT; |
469 |
|
459 |
|
470 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
460 |
err = psb_drm_ioctl(file, DRM_IOCTL_INFO_BUFS, (unsigned long)request); |
471 |
DRM_IOCTL_INFO_BUFS, (unsigned long)request); |
|
|
472 |
if (err) |
461 |
if (err) |
473 |
return err; |
462 |
return err; |
474 |
|
463 |
|
Lines 529-536
Link Here
|
529 |
|| __put_user(list, &request->list)) |
518 |
|| __put_user(list, &request->list)) |
530 |
return -EFAULT; |
519 |
return -EFAULT; |
531 |
|
520 |
|
532 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
521 |
err = psb_drm_ioctl(file, DRM_IOCTL_MAP_BUFS, (unsigned long)request); |
533 |
DRM_IOCTL_MAP_BUFS, (unsigned long)request); |
|
|
534 |
if (err) |
522 |
if (err) |
535 |
return err; |
523 |
return err; |
536 |
|
524 |
|
Lines 576-583
Link Here
|
576 |
&request->list)) |
564 |
&request->list)) |
577 |
return -EFAULT; |
565 |
return -EFAULT; |
578 |
|
566 |
|
579 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
567 |
return psb_drm_ioctl(file, DRM_IOCTL_FREE_BUFS, (unsigned long)request); |
580 |
DRM_IOCTL_FREE_BUFS, (unsigned long)request); |
|
|
581 |
} |
568 |
} |
582 |
|
569 |
|
583 |
typedef struct drm_ctx_priv_map32 { |
570 |
typedef struct drm_ctx_priv_map32 { |
Lines 603-610
Link Here
|
603 |
&request->handle)) |
590 |
&request->handle)) |
604 |
return -EFAULT; |
591 |
return -EFAULT; |
605 |
|
592 |
|
606 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
593 |
return psb_drm_ioctl(file, DRM_IOCTL_SET_SAREA_CTX, (unsigned long)request); |
607 |
DRM_IOCTL_SET_SAREA_CTX, (unsigned long)request); |
|
|
608 |
} |
594 |
} |
609 |
|
595 |
|
610 |
static int compat_drm_getsareactx(struct file *file, unsigned int cmd, |
596 |
static int compat_drm_getsareactx(struct file *file, unsigned int cmd, |
Lines 626-633
Link Here
|
626 |
if (__put_user(ctx_id, &request->ctx_id)) |
612 |
if (__put_user(ctx_id, &request->ctx_id)) |
627 |
return -EFAULT; |
613 |
return -EFAULT; |
628 |
|
614 |
|
629 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
615 |
err = psb_drm_ioctl(file, DRM_IOCTL_GET_SAREA_CTX, (unsigned long)request); |
630 |
DRM_IOCTL_GET_SAREA_CTX, (unsigned long)request); |
|
|
631 |
if (err) |
616 |
if (err) |
632 |
return err; |
617 |
return err; |
633 |
|
618 |
|
Lines 662-669
Link Here
|
662 |
&res->contexts)) |
647 |
&res->contexts)) |
663 |
return -EFAULT; |
648 |
return -EFAULT; |
664 |
|
649 |
|
665 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
650 |
err = psb_drm_ioctl(file, DRM_IOCTL_RES_CTX, (unsigned long)res); |
666 |
DRM_IOCTL_RES_CTX, (unsigned long)res); |
|
|
667 |
if (err) |
651 |
if (err) |
668 |
return err; |
652 |
return err; |
669 |
|
653 |
|
Lines 716-723
Link Here
|
716 |
&d->request_sizes)) |
700 |
&d->request_sizes)) |
717 |
return -EFAULT; |
701 |
return -EFAULT; |
718 |
|
702 |
|
719 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
703 |
err = psb_drm_ioctl(file, DRM_IOCTL_DMA, (unsigned long)d); |
720 |
DRM_IOCTL_DMA, (unsigned long)d); |
|
|
721 |
if (err) |
704 |
if (err) |
722 |
return err; |
705 |
return err; |
723 |
|
706 |
|
Lines 749-756
Link Here
|
749 |
if (put_user(m32.mode, &mode->mode)) |
732 |
if (put_user(m32.mode, &mode->mode)) |
750 |
return -EFAULT; |
733 |
return -EFAULT; |
751 |
|
734 |
|
752 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
735 |
return psb_drm_ioctl(file, DRM_IOCTL_AGP_ENABLE, (unsigned long)mode); |
753 |
DRM_IOCTL_AGP_ENABLE, (unsigned long)mode); |
|
|
754 |
} |
736 |
} |
755 |
|
737 |
|
756 |
typedef struct drm_agp_info32 { |
738 |
typedef struct drm_agp_info32 { |
Lines 779-786
Link Here
|
779 |
if (!access_ok(VERIFY_WRITE, info, sizeof(*info))) |
761 |
if (!access_ok(VERIFY_WRITE, info, sizeof(*info))) |
780 |
return -EFAULT; |
762 |
return -EFAULT; |
781 |
|
763 |
|
782 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
764 |
err = psb_drm_ioctl(file, DRM_IOCTL_AGP_INFO, (unsigned long)info); |
783 |
DRM_IOCTL_AGP_INFO, (unsigned long)info); |
|
|
784 |
if (err) |
765 |
if (err) |
785 |
return err; |
766 |
return err; |
786 |
|
767 |
|
Lines 825-840
Link Here
|
825 |
|| __put_user(req32.type, &request->type)) |
806 |
|| __put_user(req32.type, &request->type)) |
826 |
return -EFAULT; |
807 |
return -EFAULT; |
827 |
|
808 |
|
828 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
809 |
err = psb_drm_ioctl(file, DRM_IOCTL_AGP_ALLOC, (unsigned long)request); |
829 |
DRM_IOCTL_AGP_ALLOC, (unsigned long)request); |
|
|
830 |
if (err) |
810 |
if (err) |
831 |
return err; |
811 |
return err; |
832 |
|
812 |
|
833 |
if (__get_user(req32.handle, &request->handle) |
813 |
if (__get_user(req32.handle, &request->handle) |
834 |
|| __get_user(req32.physical, &request->physical) |
814 |
|| __get_user(req32.physical, &request->physical) |
835 |
|| copy_to_user(argp, &req32, sizeof(req32))) { |
815 |
|| copy_to_user(argp, &req32, sizeof(req32))) { |
836 |
psb_drm_ioctl(file->f_dentry->d_inode, file, |
816 |
psb_drm_ioctl(file, DRM_IOCTL_AGP_FREE, (unsigned long)request); |
837 |
DRM_IOCTL_AGP_FREE, (unsigned long)request); |
|
|
838 |
return -EFAULT; |
817 |
return -EFAULT; |
839 |
} |
818 |
} |
840 |
|
819 |
|
Lines 854-861
Link Here
|
854 |
|| __put_user(handle, &request->handle)) |
833 |
|| __put_user(handle, &request->handle)) |
855 |
return -EFAULT; |
834 |
return -EFAULT; |
856 |
|
835 |
|
857 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
836 |
return psb_drm_ioctl(file, DRM_IOCTL_AGP_FREE, (unsigned long)request); |
858 |
DRM_IOCTL_AGP_FREE, (unsigned long)request); |
|
|
859 |
} |
837 |
} |
860 |
|
838 |
|
861 |
typedef struct drm_agp_binding32 { |
839 |
typedef struct drm_agp_binding32 { |
Lines 879-886
Link Here
|
879 |
|| __put_user(req32.offset, &request->offset)) |
857 |
|| __put_user(req32.offset, &request->offset)) |
880 |
return -EFAULT; |
858 |
return -EFAULT; |
881 |
|
859 |
|
882 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
860 |
return psb_drm_ioctl(file, DRM_IOCTL_AGP_BIND, (unsigned long)request); |
883 |
DRM_IOCTL_AGP_BIND, (unsigned long)request); |
|
|
884 |
} |
861 |
} |
885 |
|
862 |
|
886 |
static int compat_drm_agp_unbind(struct file *file, unsigned int cmd, |
863 |
static int compat_drm_agp_unbind(struct file *file, unsigned int cmd, |
Lines 896-903
Link Here
|
896 |
|| __put_user(handle, &request->handle)) |
873 |
|| __put_user(handle, &request->handle)) |
897 |
return -EFAULT; |
874 |
return -EFAULT; |
898 |
|
875 |
|
899 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
876 |
return psb_drm_ioctl(file, DRM_IOCTL_AGP_UNBIND, (unsigned long)request); |
900 |
DRM_IOCTL_AGP_UNBIND, (unsigned long)request); |
|
|
901 |
} |
877 |
} |
902 |
#endif /* __OS_HAS_AGP */ |
878 |
#endif /* __OS_HAS_AGP */ |
903 |
|
879 |
|
Lines 921-928
Link Here
|
921 |
|| __put_user(x, &request->size)) |
897 |
|| __put_user(x, &request->size)) |
922 |
return -EFAULT; |
898 |
return -EFAULT; |
923 |
|
899 |
|
924 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
900 |
err = psb_drm_ioctl(file, DRM_IOCTL_SG_ALLOC, (unsigned long)request); |
925 |
DRM_IOCTL_SG_ALLOC, (unsigned long)request); |
|
|
926 |
if (err) |
901 |
if (err) |
927 |
return err; |
902 |
return err; |
928 |
|
903 |
|
Lines 948-955
Link Here
|
948 |
|| __put_user(x << PAGE_SHIFT, &request->handle)) |
923 |
|| __put_user(x << PAGE_SHIFT, &request->handle)) |
949 |
return -EFAULT; |
924 |
return -EFAULT; |
950 |
|
925 |
|
951 |
return psb_drm_ioctl(file->f_dentry->d_inode, file, |
926 |
return psb_drm_ioctl(file, DRM_IOCTL_SG_FREE, (unsigned long)request); |
952 |
DRM_IOCTL_SG_FREE, (unsigned long)request); |
|
|
953 |
} |
927 |
} |
954 |
|
928 |
|
955 |
struct drm_wait_vblank_request32 { |
929 |
struct drm_wait_vblank_request32 { |
Lines 988-995
Link Here
|
988 |
|| __put_user(req32.request.signal, &request->request.signal)) |
962 |
|| __put_user(req32.request.signal, &request->request.signal)) |
989 |
return -EFAULT; |
963 |
return -EFAULT; |
990 |
|
964 |
|
991 |
err = psb_drm_ioctl(file->f_dentry->d_inode, file, |
965 |
err = psb_drm_ioctl(file, DRM_IOCTL_WAIT_VBLANK, (unsigned long)request); |
992 |
DRM_IOCTL_WAIT_VBLANK, (unsigned long)request); |
|
|
993 |
if (err) |
966 |
if (err) |
994 |
return err; |
967 |
return err; |
995 |
|
968 |
|
Lines 1057-1063
Link Here
|
1057 |
* than always failing. |
1030 |
* than always failing. |
1058 |
*/ |
1031 |
*/ |
1059 |
if (nr >= DRM_ARRAY_SIZE(drm_compat_ioctls)) |
1032 |
if (nr >= DRM_ARRAY_SIZE(drm_compat_ioctls)) |
1060 |
return psb_drm_ioctl(filp->f_dentry->d_inode, filp, cmd, arg); |
1033 |
return psb_drm_ioctl(filp, cmd, arg); |
1061 |
|
1034 |
|
1062 |
fn = drm_compat_ioctls[nr]; |
1035 |
fn = drm_compat_ioctls[nr]; |
1063 |
|
1036 |
|
Lines 1065-1071
Link Here
|
1065 |
if (fn != NULL) |
1038 |
if (fn != NULL) |
1066 |
ret = (*fn)(filp, cmd, arg); |
1039 |
ret = (*fn)(filp, cmd, arg); |
1067 |
else |
1040 |
else |
1068 |
ret = psb_drm_ioctl(filp->f_dentry->d_inode, filp, cmd, arg); |
1041 |
ret = psb_drm_ioctl(filp, cmd, arg); |
1069 |
unlock_kernel(); |
1042 |
unlock_kernel(); |
1070 |
|
1043 |
|
1071 |
return ret; |
1044 |
return ret; |