[Intel-gfx] [PATCH v2] drm/i915: Also perform gpu reset under execlist mode.

Zhi Wang zhi.a.wang at intel.com
Mon Jul 6 13:32:53 PDT 2015


Thanks for the comments!:) I'm wondering that why the GEN>=5 is needed 
here. Is there any HW problems in GEN>=5 when driver wants to do GPU 
reset? I'm sorry that I don't know much about GEN<6...Just want to know 
more about the story:)

于 07/07/15 20:00, Chris Wilson 写道:
> On Tue, Jul 07, 2015 at 04:23:13AM +0800, Zhi Wang wrote:
>> Hi Chris:
>>
>> How about this one? :)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_dma.c
>> b/drivers/gpu/drm/i915/i915_dma.c
>> index c5349fa..013039e 100644
>> --- a/drivers/gpu/drm/i915/i915_dma.c
>> +++ b/drivers/gpu/drm/i915/i915_dma.c
>> @@ -1134,6 +1134,21 @@ int i915_driver_unload(struct drm_device *dev)
>>
>>          i915_global_gtt_cleanup(dev);
>>
>> +       /*
>> +        * The only known way to stop the gpu from accessing the hw
>> context in
>> +        * graphics memory space is to reset it. Do this as the very last
>> +        * operation to avoid confusing other code, leading to
>> spurious errors.
>> +        *
>> +        * Besides, we also need to restore HW workload submission mode back
>> +        * to default mode when shutdown i915.
>> +        *
>> +        * It makes i915 module loading/unloading be able to switch between
>> +        * different workload submission mode on gen8+. And
>> according to B-spec,
>> +        * the only way to reset HW workload submission mode to
>> default mod is GPU reset.
>> +        */
>> +       if (INTEL_INFO(dev)->gen >= 5)
>> +               intel_gpu_reset(dev);
>> +
>>          intel_uncore_fini(dev);
>>          if (dev_priv->regs != NULL)
>>                  pci_iounmap(dev->pdev, dev_priv->regs);
>> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c
>> b/drivers/gpu/drm/i915/i915_gem_context.c
>> index a7e58a8..376ee6b 100644
>> --- a/drivers/gpu/drm/i915/i915_gem_context.c
>> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
>> @@ -373,11 +373,6 @@ void i915_gem_context_fini(struct drm_device *dev)
>>          int i;
>>
>>          if (dctx->legacy_hw_ctx.rcs_state) {
>> -               /* The only known way to stop the gpu from accessing
>> the hw context is
>> -                * to reset it. Do this as the very last operation
>> to avoid confusing
>> -                * other code, leading to spurious errors. */
>> -               intel_gpu_reset(dev);
>> -
>>                  /* When default context is created and switched to,
>> base object refcount
>>                   * will be 2 (+1 from object creation and +1 from
>> do_switch()).
>>                   * i915_gem_context_fini() will be called after
>> gpu_idle() has switched
>
> I'd be happy to r-b that. Having a verbose comment explaining why we put
> the shotgun to our head is definitely required, thanks.
> -Chris
>


More information about the Intel-gfx mailing list