20
20
/* For userspace errors, use DRM_UT_DRIVER.. so that userspace can enable
21
21
* error msgs for debugging, but we don't spam dmesg by default
22
22
*/
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__)
25
25
26
26
/*
27
27
* Cmdstream submission:
@@ -142,8 +142,7 @@ static int submit_lookup_objects(struct msm_gem_submit *submit,
142
142
143
143
if ((submit_bo .flags & ~MSM_SUBMIT_BO_FLAGS ) ||
144
144
!(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 );
147
146
i = 0 ;
148
147
goto out ;
149
148
}
@@ -162,8 +161,7 @@ static int submit_lookup_objects(struct msm_gem_submit *submit,
162
161
*/
163
162
obj = idr_find (& file -> object_idr , submit -> bos [i ].handle );
164
163
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 );
167
165
goto out_unlock ;
168
166
}
169
167
@@ -206,14 +204,12 @@ static int submit_lookup_cmds(struct msm_gem_submit *submit,
206
204
case MSM_SUBMIT_CMD_CTX_RESTORE_BUF :
207
205
break ;
208
206
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 );
211
208
}
212
209
213
210
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 );
217
213
goto out ;
218
214
}
219
215
@@ -371,9 +367,8 @@ static int submit_bo(struct msm_gem_submit *submit, uint32_t idx,
371
367
struct drm_gem_object * * obj , uint64_t * iova )
372
368
{
373
369
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 );
377
372
}
378
373
379
374
if (obj )
@@ -392,10 +387,8 @@ static int submit_reloc(struct msm_gem_submit *submit, struct drm_gem_object *ob
392
387
uint32_t * ptr ;
393
388
int ret = 0 ;
394
389
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 );
399
392
400
393
/* For now, just map the entire thing. Eventually we probably
401
394
* 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
414
407
uint64_t iova ;
415
408
416
409
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 );
420
412
goto out ;
421
413
}
422
414
@@ -425,8 +417,7 @@ static int submit_reloc(struct msm_gem_submit *submit, struct drm_gem_object *ob
425
417
426
418
if ((off >= (obj -> size / 4 )) ||
427
419
(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 );
430
421
goto out ;
431
422
}
432
423
@@ -513,12 +504,12 @@ static struct drm_syncobj **msm_parse_deps(struct msm_gem_submit *submit,
513
504
514
505
if (syncobj_desc .point &&
515
506
!drm_core_check_feature (submit -> dev , DRIVER_SYNCOBJ_TIMELINE )) {
516
- ret = - EOPNOTSUPP ;
507
+ ret = SUBMIT_ERROR ( EOPNOTSUPP , submit , "syncobj timeline unsupported" ) ;
517
508
break ;
518
509
}
519
510
520
511
if (syncobj_desc .flags & ~MSM_SUBMIT_SYNCOBJ_FLAGS ) {
521
- ret = - EINVAL ;
512
+ ret = - SUBMIT_ERROR ( EINVAL , submit , "invalid syncobj flags: %x" , syncobj_desc . flags ) ;
522
513
break ;
523
514
}
524
515
@@ -531,7 +522,7 @@ static struct drm_syncobj **msm_parse_deps(struct msm_gem_submit *submit,
531
522
syncobjs [i ] =
532
523
drm_syncobj_find (file , syncobj_desc .handle );
533
524
if (!syncobjs [i ]) {
534
- ret = - EINVAL ;
525
+ ret = SUBMIT_ERROR ( EINVAL , submit , "invalid syncobj handle: %u" , i ) ;
535
526
break ;
536
527
}
537
528
}
@@ -588,14 +579,14 @@ static struct msm_submit_post_dep *msm_parse_post_deps(struct drm_device *dev,
588
579
post_deps [i ].point = syncobj_desc .point ;
589
580
590
581
if (syncobj_desc .flags ) {
591
- ret = - EINVAL ;
582
+ ret = UERR ( EINVAL , dev , "invalid syncobj flags" ) ;
592
583
break ;
593
584
}
594
585
595
586
if (syncobj_desc .point ) {
596
587
if (!drm_core_check_feature (dev ,
597
588
DRIVER_SYNCOBJ_TIMELINE )) {
598
- ret = - EOPNOTSUPP ;
589
+ ret = UERR ( EOPNOTSUPP , dev , "syncobj timeline unsupported" ) ;
599
590
break ;
600
591
}
601
592
@@ -609,7 +600,7 @@ static struct msm_submit_post_dep *msm_parse_post_deps(struct drm_device *dev,
609
600
post_deps [i ].syncobj =
610
601
drm_syncobj_find (file , syncobj_desc .handle );
611
602
if (!post_deps [i ].syncobj ) {
612
- ret = - EINVAL ;
603
+ ret = UERR ( EINVAL , dev , "invalid syncobj handle" ) ;
613
604
break ;
614
605
}
615
606
}
@@ -677,10 +668,10 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
677
668
* be more clever to dispatch to appropriate gpu module:
678
669
*/
679
670
if (MSM_PIPE_ID (args -> flags ) != MSM_PIPE_3D0 )
680
- return - EINVAL ;
671
+ return UERR ( EINVAL , dev , "invalid pipe" ) ;
681
672
682
673
if (MSM_PIPE_FLAGS (args -> flags ) & ~MSM_SUBMIT_FLAGS )
683
- return - EINVAL ;
674
+ return UERR ( EINVAL , dev , "invalid flags" ) ;
684
675
685
676
if (args -> flags & MSM_SUBMIT_SUDO ) {
686
677
if (!IS_ENABLED (CONFIG_DRM_MSM_GPU_SUDO ) ||
@@ -724,7 +715,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
724
715
in_fence = sync_file_get_fence (args -> fence_fd );
725
716
726
717
if (!in_fence ) {
727
- ret = - EINVAL ;
718
+ ret = UERR ( EINVAL , dev , "invalid in-fence" ) ;
728
719
goto out_unlock ;
729
720
}
730
721
@@ -788,8 +779,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
788
779
789
780
if (!submit -> cmd [i ].size ||
790
781
(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 ) ;
793
784
goto out ;
794
785
}
795
786
@@ -799,8 +790,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
799
790
continue ;
800
791
801
792
if (!gpu -> allow_relocs ) {
802
- SUBMIT_ERROR (submit , "relocs not allowed\n" );
803
- ret = - EINVAL ;
793
+ ret = UERR (EINVAL , dev , "relocs not allowed\n" );
804
794
goto out ;
805
795
}
806
796
@@ -826,7 +816,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
826
816
(!args -> fence || idr_find (& queue -> fence_idr , args -> fence ))) {
827
817
spin_unlock (& queue -> idr_lock );
828
818
idr_preload_end ();
829
- ret = - EINVAL ;
819
+ ret = UERR ( EINVAL , dev , "invalid in-fence-sn" ) ;
830
820
goto out ;
831
821
}
832
822
0 commit comments