Re: [PATCH v2 06/13] drm/i915: Simplify ELSP queue request tracking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Aug 26, 2016 at 08:10:24AM +0100, Chris Wilson wrote:
>  static void i915_gem_reset_engine_cleanup(struct intel_engine_cs *engine)
>  {
>  	struct drm_i915_gem_request *request;
> +	unsigned long flags;
>  	struct intel_ring *ring;
>  
> +	/* Ensure irq handler finishes or is cancelled, and not run again. */
> +	local_irq_save(flags);
> +	tasklet_kill(&engine->irq_tasklet);
> +	tasklet_disable(&engine->irq_tasklet);
> +	local_irq_restore(flags);

I am paranoid that the tasklet runs as we are changing its data.
However, tasklet_disable() doesn't actually stop new tasklets being
scheduled, just defers their execution unilt tasklet_enable(). So it is
not providing the protection I sought. However, due to the GPU reset,
there can only be a pending irq/tasklet (and there will be no new ones
until the next ELSP write), so the solo tasklet_kill() as we previously
had should be sufficient.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux