Thanks again Rodrigo for reviewing and apologies for my tardy replies. We are stil testing on shipping platforms and these latest patches seemed to have reduced the frequency and solved the "system hangs" while suspending but its still causing issues so we continue to debug. (issue is that its running thousands of cycles overnight on multiple systems and takes time). [snip] > > @@ -693,6 +693,8 @@ void intel_uc_suspend(struct intel_uc *uc) > > return; > > } > > > > + intel_guc_submission_flush_work(guc); > > + > > what happens if a new job comes exactly here? > This still sounds a bit racy, although this already looks > much cleaner than the previous version. alan: intel_uc_suspend is called from suspend-late or init-failure. and the very next function -> intel_guc_suspend will soft reset the guc and eventually nuke it. this is the most appropriate "latests as possible" place to put this. > > > with_intel_runtime_pm(&uc_to_gt(uc)->i915->runtime_pm, wakeref) { > > err = intel_guc_suspend(guc); > > if (err)