[Intel-gfx] [PATCH] drm/i915/gt: Wait for RCUs frees before asserting idle on unload
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Fri Mar 13 11:08:03 UTC 2020
Op 12-03-2020 om 12:53 schreef Chris Wilson:
> During driver unload, we have many asserts that we have released our
> bookkeeping structs and are idle. In some cases, these struct are
> protected by RCU and we do not release them until after an RCU grace
> period.
>
> Reported-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Fixes: 130a95e9098e ("drm/i915/gem: Consolidate ctx->engines[] release")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/gt/intel_gt.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
> index 3dea8881e915..d09f7596cb98 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt.c
> @@ -667,6 +667,9 @@ void intel_gt_driver_release(struct intel_gt *gt)
>
> void intel_gt_driver_late_release(struct intel_gt *gt)
> {
> + /* We need to wait for inflight RCU frees to release their grip */
> + rcu_barrier();
> +
> intel_uc_driver_late_release(>->uc);
> intel_gt_fini_requests(gt);
> intel_gt_fini_reset(gt);
Is it possible this is causing a hang on exit in gem_exec_parallel when I have an extra bunch of debug options enabled?
Also potentially seems to break selftests on cml :)
otherwise looks sane,
Reviewed-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
More information about the Intel-gfx
mailing list