[PATCH v4 2/3] drm/i915/guc: Close deregister-context race against CT-loss
Teres Alexis, Alan Previn
alan.previn.teres.alexis at intel.com
Wed Oct 4 16:46:14 UTC 2023
On Wed, 2023-10-04 at 06:34 +0000, Gupta, Anshuman wrote:
>
> > -----Original Message-----
> > From: Teres Alexis, Alan Previn <alan.previn.teres.alexis at intel.com
alan:snip
> > @@ -289,6 +289,13 @@ int intel_gt_resume(struct intel_gt *gt)
> >
> > static void wait_for_suspend(struct intel_gt *gt) {
> > + /*
> > + * On rare occasions, we've observed the fence completion trigger
> > + * free_engines asynchronously via rcu_call. Ensure those are done.
> > + * This path is only called on suspend, so it's an acceptable cost.
> > + */
> > + rcu_barrier();
> Let's add the barrier after the end of prepare suspend and at start of late suspend.
> To make sure we don't have any async destroy from any user request or any internal kmd request during i915 suspend?
> Br,
> Anshuman Gupta.
alan: some thoughts: actuallly wait_fos_suspend is being called at from both intel_gt_suspend_prepare
and intel_gt_suspend_late. so putting the barrier in above location would get hit for both steps.
However, because wait_for_suspend may optionally wedge the system if outstanding requests were stuck
for more than I915_GT_SUSPEND_IDLE_TIMEOUT, wouldnt it be better to add the barrier before that
check (i.e. in above location) as opposed to after the return from wait_for_suspend at the end
of suspend_prepare - which would defeat the purpose of even checking that intel_gt_wait_for_idle
from within wait_for_suspend? (which is existing code). Perhaps we need to get one last test on this?
More information about the dri-devel
mailing list