[Intel-gfx] [PATCH] drm/i915/guc: Flush the CT worker after updating log controls

Michal Wajdeczko michal.wajdeczko at intel.com
Thu Jul 18 12:53:47 UTC 2019


On Thu, 18 Jul 2019 10:02:03 +0200, Chris Wilson  
<chris at chris-wilson.co.uk> wrote:

...

> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c  
> b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
> index 77fda1e85d3b..e80c1eb309ee 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
> @@ -613,12 +613,11 @@ void intel_guc_log_relay_flush(struct  
> intel_guc_log *log)
>  void intel_guc_log_relay_close(struct intel_guc_log *log)
>  {
>  	struct intel_guc *guc = log_to_guc(log);
> -	struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
> 	guc_log_disable_flush_events(log);
> -	intel_synchronize_irq(i915);
> -	flush_work(&log->relay.flush_work);
> +	flush_work(&guc->ct.worker);

We don't need to touch ct.worker here as in above call to
guc_log_disable_flush_events() we will turn off handling of
all log events (they will be dropped if processed later by
the ct.worker in intel_guc_to_host_process_recv_msg)

Additionally touching ct.worker here will break our nice
separation between guc components

Michal

> +	cancel_work_sync(&log->relay.flush_work);
> 	mutex_lock(&log->relay.lock);
>  	GEM_BUG_ON(!intel_guc_log_relay_enabled(log));


More information about the Intel-gfx mailing list