@@ -300,9 +300,9 @@ static int gen6_hw_domain_reset(struct intel_gt *gt, u32 hw_domain_mask)
300300 return err ;
301301}
302302
303- static int gen6_reset_engines (struct intel_gt * gt ,
304- intel_engine_mask_t engine_mask ,
305- unsigned int retry )
303+ static int __gen6_reset_engines (struct intel_gt * gt ,
304+ intel_engine_mask_t engine_mask ,
305+ unsigned int retry )
306306{
307307 struct intel_engine_cs * engine ;
308308 u32 hw_mask ;
@@ -321,6 +321,20 @@ static int gen6_reset_engines(struct intel_gt *gt,
321321 return gen6_hw_domain_reset (gt , hw_mask );
322322}
323323
324+ static int gen6_reset_engines (struct intel_gt * gt ,
325+ intel_engine_mask_t engine_mask ,
326+ unsigned int retry )
327+ {
328+ unsigned long flags ;
329+ int ret ;
330+
331+ spin_lock_irqsave (& gt -> uncore -> lock , flags );
332+ ret = __gen6_reset_engines (gt , engine_mask , retry );
333+ spin_unlock_irqrestore (& gt -> uncore -> lock , flags );
334+
335+ return ret ;
336+ }
337+
324338static struct intel_engine_cs * find_sfc_paired_vecs_engine (struct intel_engine_cs * engine )
325339{
326340 int vecs_id ;
@@ -487,9 +501,9 @@ static void gen11_unlock_sfc(struct intel_engine_cs *engine)
487501 rmw_clear_fw (uncore , sfc_lock .lock_reg , sfc_lock .lock_bit );
488502}
489503
490- static int gen11_reset_engines (struct intel_gt * gt ,
491- intel_engine_mask_t engine_mask ,
492- unsigned int retry )
504+ static int __gen11_reset_engines (struct intel_gt * gt ,
505+ intel_engine_mask_t engine_mask ,
506+ unsigned int retry )
493507{
494508 struct intel_engine_cs * engine ;
495509 intel_engine_mask_t tmp ;
@@ -583,8 +597,11 @@ static int gen8_reset_engines(struct intel_gt *gt,
583597 struct intel_engine_cs * engine ;
584598 const bool reset_non_ready = retry >= 1 ;
585599 intel_engine_mask_t tmp ;
600+ unsigned long flags ;
586601 int ret ;
587602
603+ spin_lock_irqsave (& gt -> uncore -> lock , flags );
604+
588605 for_each_engine_masked (engine , gt , engine_mask , tmp ) {
589606 ret = gen8_engine_reset_prepare (engine );
590607 if (ret && !reset_non_ready )
@@ -612,17 +629,19 @@ static int gen8_reset_engines(struct intel_gt *gt,
612629 * This is best effort, so ignore any error from the initial reset.
613630 */
614631 if (IS_DG2 (gt -> i915 ) && engine_mask == ALL_ENGINES )
615- gen11_reset_engines (gt , gt -> info .engine_mask , 0 );
632+ __gen11_reset_engines (gt , gt -> info .engine_mask , 0 );
616633
617634 if (GRAPHICS_VER (gt -> i915 ) >= 11 )
618- ret = gen11_reset_engines (gt , engine_mask , retry );
635+ ret = __gen11_reset_engines (gt , engine_mask , retry );
619636 else
620- ret = gen6_reset_engines (gt , engine_mask , retry );
637+ ret = __gen6_reset_engines (gt , engine_mask , retry );
621638
622639skip_reset :
623640 for_each_engine_masked (engine , gt , engine_mask , tmp )
624641 gen8_engine_reset_cancel (engine );
625642
643+ spin_unlock_irqrestore (& gt -> uncore -> lock , flags );
644+
626645 return ret ;
627646}
628647
0 commit comments