diff mbox

drm/i915: Flag the execlists context object as dirty after every use

Message ID 1439553559-23004-1-git-send-email-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson Aug. 14, 2015, 11:59 a.m. UTC
Everytime we use the logical context with execlists it becomes dirty (as
the hardware will write the new register values afterwards, as well as
the GPU state that will be used). We need to then flag the context as
dirty everytime since after a swap-out/swap-in cycle the dirty flag will
be cleared, and a further swap-out cycle will then loose the most recent
GPU state.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@vger.kernel.org
---
 drivers/gpu/drm/i915/intel_lrc.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Daniel Vetter Aug. 14, 2015, 12:18 p.m. UTC | #1
On Fri, Aug 14, 2015 at 12:59:19PM +0100, Chris Wilson wrote:
> Everytime we use the logical context with execlists it becomes dirty (as
> the hardware will write the new register values afterwards, as well as
> the GPU state that will be used). We need to then flag the context as
> dirty everytime since after a swap-out/swap-in cycle the dirty flag will
> be cleared, and a further swap-out cycle will then loose the most recent
> GPU state.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: stable@vger.kernel.org

Yay for reinventing active tracking I guess, legacy hw ctx has this
already. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-Daniel
> ---
>  drivers/gpu/drm/i915/intel_lrc.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 138964afd187..41cfa6fa909d 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -1013,6 +1013,8 @@ static int intel_lr_context_pin(struct drm_i915_gem_request *rq)
>  		ret = intel_pin_and_map_ringbuffer_obj(ring->dev, ringbuf);
>  		if (ret)
>  			goto unpin_ctx_obj;
> +
> +		ctx_obj->dirty = true;
>  	}
>  
>  	return ret;
> -- 
> 2.5.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Shuang He Aug. 16, 2015, 7:38 a.m. UTC | #2
Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
Task id: 7200
-------------------------------------Summary-------------------------------------
Platform          Delta          drm-intel-nightly          Series Applied
ILK                                  302/302              302/302
SNB                                  315/315              315/315
IVB                                  336/336              336/336
BYT                                  283/283              283/283
HSW                                  378/378              378/378
-------------------------------------Detailed-------------------------------------
Platform  Test                                drm-intel-nightly          Series Applied
Note: You need to pay more attention to line start with '*'
Jani Nikula Aug. 17, 2015, 7:39 a.m. UTC | #3
On Fri, 14 Aug 2015, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Fri, Aug 14, 2015 at 12:59:19PM +0100, Chris Wilson wrote:
>> Everytime we use the logical context with execlists it becomes dirty (as
>> the hardware will write the new register values afterwards, as well as
>> the GPU state that will be used). We need to then flag the context as
>> dirty everytime since after a swap-out/swap-in cycle the dirty flag will
>> be cleared, and a further swap-out cycle will then loose the most recent
>> GPU state.
>> 
>> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
>> Cc: stable@vger.kernel.org
>
> Yay for reinventing active tracking I guess, legacy hw ctx has this
> already. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Pushed to drm-intel-fixes, thanks for the patch and review.

BR,
Jani.

> -Daniel
>> ---
>>  drivers/gpu/drm/i915/intel_lrc.c | 2 ++
>>  1 file changed, 2 insertions(+)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
>> index 138964afd187..41cfa6fa909d 100644
>> --- a/drivers/gpu/drm/i915/intel_lrc.c
>> +++ b/drivers/gpu/drm/i915/intel_lrc.c
>> @@ -1013,6 +1013,8 @@ static int intel_lr_context_pin(struct drm_i915_gem_request *rq)
>>  		ret = intel_pin_and_map_ringbuffer_obj(ring->dev, ringbuf);
>>  		if (ret)
>>  			goto unpin_ctx_obj;
>> +
>> +		ctx_obj->dirty = true;
>>  	}
>>  
>>  	return ret;
>> -- 
>> 2.5.0
>> 
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 138964afd187..41cfa6fa909d 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1013,6 +1013,8 @@  static int intel_lr_context_pin(struct drm_i915_gem_request *rq)
 		ret = intel_pin_and_map_ringbuffer_obj(ring->dev, ringbuf);
 		if (ret)
 			goto unpin_ctx_obj;
+
+		ctx_obj->dirty = true;
 	}
 
 	return ret;