@@ -710,47 +710,45 @@ __sseu_prepare(struct drm_i915_private *i915,
710
710
unsigned int flags ,
711
711
struct i915_gem_context * ctx ,
712
712
struct intel_engine_cs * engine ,
713
- struct igt_spinner * * spin_out )
713
+ struct igt_spinner * * spin )
714
714
{
715
- int ret = 0 ;
716
-
717
- if (flags & (TEST_BUSY | TEST_RESET )) {
718
- struct igt_spinner * spin ;
719
- struct i915_request * rq ;
715
+ struct i915_request * rq ;
716
+ int ret ;
720
717
721
- spin = kzalloc (sizeof (* spin ), GFP_KERNEL );
722
- if (!spin ) {
723
- ret = - ENOMEM ;
724
- goto out ;
725
- }
718
+ * spin = NULL ;
719
+ if (!(flags & (TEST_BUSY | TEST_RESET )))
720
+ return 0 ;
726
721
727
- ret = igt_spinner_init ( spin , i915 );
728
- if (ret )
729
- return ret ;
722
+ * spin = kzalloc ( sizeof ( * * spin ), GFP_KERNEL );
723
+ if (! * spin )
724
+ return - ENOMEM ;
730
725
731
- rq = igt_spinner_create_request (spin , ctx , engine , MI_NOOP );
732
- if (IS_ERR (rq )) {
733
- ret = PTR_ERR (rq );
734
- igt_spinner_fini (spin );
735
- kfree (spin );
736
- goto out ;
737
- }
726
+ ret = igt_spinner_init (* spin , i915 );
727
+ if (ret )
728
+ goto err_free ;
738
729
739
- i915_request_add (rq );
730
+ rq = igt_spinner_create_request (* spin , ctx , engine , MI_NOOP );
731
+ if (IS_ERR (rq )) {
732
+ ret = PTR_ERR (rq );
733
+ goto err_fini ;
734
+ }
740
735
741
- if (!igt_wait_for_spinner (spin , rq )) {
742
- pr_err ("%s: Spinner failed to start!\n" , name );
743
- igt_spinner_end (spin );
744
- igt_spinner_fini (spin );
745
- kfree (spin );
746
- ret = - ETIMEDOUT ;
747
- goto out ;
748
- }
736
+ i915_request_add (rq );
749
737
750
- * spin_out = spin ;
738
+ if (!igt_wait_for_spinner (* spin , rq )) {
739
+ pr_err ("%s: Spinner failed to start!\n" , name );
740
+ ret = - ETIMEDOUT ;
741
+ goto err_end ;
751
742
}
752
743
753
- out :
744
+ return 0 ;
745
+
746
+ err_end :
747
+ igt_spinner_end (* spin );
748
+ err_fini :
749
+ igt_spinner_fini (* spin );
750
+ err_free :
751
+ kfree (fetch_and_zero (spin ));
754
752
return ret ;
755
753
}
756
754
@@ -897,22 +895,23 @@ __sseu_test(struct drm_i915_private *i915,
897
895
898
896
ret = __sseu_prepare (i915 , name , flags , ctx , engine , & spin );
899
897
if (ret )
900
- goto out ;
898
+ goto out_context ;
901
899
902
900
ret = __i915_gem_context_reconfigure_sseu (ctx , engine , sseu );
903
901
if (ret )
904
- goto out ;
902
+ goto out_spin ;
905
903
906
904
ret = __sseu_finish (i915 , name , flags , ctx , kctx , engine , obj ,
907
905
hweight32 (sseu .slice_mask ), spin );
908
906
909
- out :
907
+ out_spin :
910
908
if (spin ) {
911
909
igt_spinner_end (spin );
912
910
igt_spinner_fini (spin );
913
911
kfree (spin );
914
912
}
915
913
914
+ out_context :
916
915
kernel_context_close (kctx );
917
916
918
917
return ret ;
0 commit comments