2020/* For userspace errors, use DRM_UT_DRIVER.. so that userspace can enable
2121 * error msgs for debugging, but we don't spam dmesg by default
2222 */
23- #define SUBMIT_ERROR (submit , fmt , ...) \
24- DRM_DEV_DEBUG_DRIVER( (submit)->dev ->dev, fmt, ##__VA_ARGS__)
23+ #define SUBMIT_ERROR (err , submit , fmt , ...) \
24+ UERR(err, (submit)->dev, fmt, ##__VA_ARGS__)
2525
2626/*
2727 * Cmdstream submission:
@@ -142,8 +142,7 @@ static int submit_lookup_objects(struct msm_gem_submit *submit,
142142
143143 if ((submit_bo .flags & ~MSM_SUBMIT_BO_FLAGS ) ||
144144 !(submit_bo .flags & MANDATORY_FLAGS )) {
145- SUBMIT_ERROR (submit , "invalid flags: %x\n" , submit_bo .flags );
146- ret = - EINVAL ;
145+ ret = SUBMIT_ERROR (EINVAL , submit , "invalid flags: %x\n" , submit_bo .flags );
147146 i = 0 ;
148147 goto out ;
149148 }
@@ -162,8 +161,7 @@ static int submit_lookup_objects(struct msm_gem_submit *submit,
162161 */
163162 obj = idr_find (& file -> object_idr , submit -> bos [i ].handle );
164163 if (!obj ) {
165- SUBMIT_ERROR (submit , "invalid handle %u at index %u\n" , submit -> bos [i ].handle , i );
166- ret = - EINVAL ;
164+ ret = SUBMIT_ERROR (EINVAL , submit , "invalid handle %u at index %u\n" , submit -> bos [i ].handle , i );
167165 goto out_unlock ;
168166 }
169167
@@ -206,14 +204,12 @@ static int submit_lookup_cmds(struct msm_gem_submit *submit,
206204 case MSM_SUBMIT_CMD_CTX_RESTORE_BUF :
207205 break ;
208206 default :
209- SUBMIT_ERROR (submit , "invalid type: %08x\n" , submit_cmd .type );
210- return - EINVAL ;
207+ return SUBMIT_ERROR (EINVAL , submit , "invalid type: %08x\n" , submit_cmd .type );
211208 }
212209
213210 if (submit_cmd .size % 4 ) {
214- SUBMIT_ERROR (submit , "non-aligned cmdstream buffer size: %u\n" ,
215- submit_cmd .size );
216- ret = - EINVAL ;
211+ ret = SUBMIT_ERROR (EINVAL , submit , "non-aligned cmdstream buffer size: %u\n" ,
212+ submit_cmd .size );
217213 goto out ;
218214 }
219215
@@ -371,9 +367,8 @@ static int submit_bo(struct msm_gem_submit *submit, uint32_t idx,
371367 struct drm_gem_object * * obj , uint64_t * iova )
372368{
373369 if (idx >= submit -> nr_bos ) {
374- SUBMIT_ERROR (submit , "invalid buffer index: %u (out of %u)\n" ,
375- idx , submit -> nr_bos );
376- return - EINVAL ;
370+ return SUBMIT_ERROR (EINVAL , submit , "invalid buffer index: %u (out of %u)\n" ,
371+ idx , submit -> nr_bos );
377372 }
378373
379374 if (obj )
@@ -392,10 +387,8 @@ static int submit_reloc(struct msm_gem_submit *submit, struct drm_gem_object *ob
392387 uint32_t * ptr ;
393388 int ret = 0 ;
394389
395- if (offset % 4 ) {
396- SUBMIT_ERROR (submit , "non-aligned cmdstream buffer: %u\n" , offset );
397- return - EINVAL ;
398- }
390+ if (offset % 4 )
391+ return SUBMIT_ERROR (EINVAL , submit , "non-aligned cmdstream buffer: %u\n" , offset );
399392
400393 /* For now, just map the entire thing. Eventually we probably
401394 * to do it page-by-page, w/ kmap() if not vmap()d..
@@ -414,9 +407,8 @@ static int submit_reloc(struct msm_gem_submit *submit, struct drm_gem_object *ob
414407 uint64_t iova ;
415408
416409 if (submit_reloc .submit_offset % 4 ) {
417- SUBMIT_ERROR (submit , "non-aligned reloc offset: %u\n" ,
418- submit_reloc .submit_offset );
419- ret = - EINVAL ;
410+ ret = SUBMIT_ERROR (EINVAL , submit , "non-aligned reloc offset: %u\n" ,
411+ submit_reloc .submit_offset );
420412 goto out ;
421413 }
422414
@@ -425,8 +417,7 @@ static int submit_reloc(struct msm_gem_submit *submit, struct drm_gem_object *ob
425417
426418 if ((off >= (obj -> size / 4 )) ||
427419 (off < last_offset )) {
428- SUBMIT_ERROR (submit , "invalid offset %u at reloc %u\n" , off , i );
429- ret = - EINVAL ;
420+ ret = SUBMIT_ERROR (EINVAL , submit , "invalid offset %u at reloc %u\n" , off , i );
430421 goto out ;
431422 }
432423
@@ -513,12 +504,12 @@ static struct drm_syncobj **msm_parse_deps(struct msm_gem_submit *submit,
513504
514505 if (syncobj_desc .point &&
515506 !drm_core_check_feature (submit -> dev , DRIVER_SYNCOBJ_TIMELINE )) {
516- ret = - EOPNOTSUPP ;
507+ ret = SUBMIT_ERROR ( EOPNOTSUPP , submit , "syncobj timeline unsupported" ) ;
517508 break ;
518509 }
519510
520511 if (syncobj_desc .flags & ~MSM_SUBMIT_SYNCOBJ_FLAGS ) {
521- ret = - EINVAL ;
512+ ret = - SUBMIT_ERROR ( EINVAL , submit , "invalid syncobj flags: %x" , syncobj_desc . flags ) ;
522513 break ;
523514 }
524515
@@ -531,7 +522,7 @@ static struct drm_syncobj **msm_parse_deps(struct msm_gem_submit *submit,
531522 syncobjs [i ] =
532523 drm_syncobj_find (file , syncobj_desc .handle );
533524 if (!syncobjs [i ]) {
534- ret = - EINVAL ;
525+ ret = SUBMIT_ERROR ( EINVAL , submit , "invalid syncobj handle: %u" , i ) ;
535526 break ;
536527 }
537528 }
@@ -588,14 +579,14 @@ static struct msm_submit_post_dep *msm_parse_post_deps(struct drm_device *dev,
588579 post_deps [i ].point = syncobj_desc .point ;
589580
590581 if (syncobj_desc .flags ) {
591- ret = - EINVAL ;
582+ ret = UERR ( EINVAL , dev , "invalid syncobj flags" ) ;
592583 break ;
593584 }
594585
595586 if (syncobj_desc .point ) {
596587 if (!drm_core_check_feature (dev ,
597588 DRIVER_SYNCOBJ_TIMELINE )) {
598- ret = - EOPNOTSUPP ;
589+ ret = UERR ( EOPNOTSUPP , dev , "syncobj timeline unsupported" ) ;
599590 break ;
600591 }
601592
@@ -609,7 +600,7 @@ static struct msm_submit_post_dep *msm_parse_post_deps(struct drm_device *dev,
609600 post_deps [i ].syncobj =
610601 drm_syncobj_find (file , syncobj_desc .handle );
611602 if (!post_deps [i ].syncobj ) {
612- ret = - EINVAL ;
603+ ret = UERR ( EINVAL , dev , "invalid syncobj handle" ) ;
613604 break ;
614605 }
615606 }
@@ -677,10 +668,10 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
677668 * be more clever to dispatch to appropriate gpu module:
678669 */
679670 if (MSM_PIPE_ID (args -> flags ) != MSM_PIPE_3D0 )
680- return - EINVAL ;
671+ return UERR ( EINVAL , dev , "invalid pipe" ) ;
681672
682673 if (MSM_PIPE_FLAGS (args -> flags ) & ~MSM_SUBMIT_FLAGS )
683- return - EINVAL ;
674+ return UERR ( EINVAL , dev , "invalid flags" ) ;
684675
685676 if (args -> flags & MSM_SUBMIT_SUDO ) {
686677 if (!IS_ENABLED (CONFIG_DRM_MSM_GPU_SUDO ) ||
@@ -724,7 +715,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
724715 in_fence = sync_file_get_fence (args -> fence_fd );
725716
726717 if (!in_fence ) {
727- ret = - EINVAL ;
718+ ret = UERR ( EINVAL , dev , "invalid in-fence" ) ;
728719 goto out_unlock ;
729720 }
730721
@@ -788,8 +779,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
788779
789780 if (!submit -> cmd [i ].size ||
790781 (size_add (submit -> cmd [i ].size , submit -> cmd [i ].offset ) > obj -> size / 4 )) {
791- SUBMIT_ERROR ( submit , "invalid cmdstream size: %u\n" , submit -> cmd [ i ]. size * 4 );
792- ret = - EINVAL ;
782+ ret = UERR ( EINVAL , dev , "invalid cmdstream size: %u\n" ,
783+ submit -> cmd [ i ]. size * 4 ) ;
793784 goto out ;
794785 }
795786
@@ -799,8 +790,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
799790 continue ;
800791
801792 if (!gpu -> allow_relocs ) {
802- SUBMIT_ERROR (submit , "relocs not allowed\n" );
803- ret = - EINVAL ;
793+ ret = UERR (EINVAL , dev , "relocs not allowed\n" );
804794 goto out ;
805795 }
806796
@@ -826,7 +816,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
826816 (!args -> fence || idr_find (& queue -> fence_idr , args -> fence ))) {
827817 spin_unlock (& queue -> idr_lock );
828818 idr_preload_end ();
829- ret = - EINVAL ;
819+ ret = UERR ( EINVAL , dev , "invalid in-fence-sn" ) ;
830820 goto out ;
831821 }
832822
0 commit comments