[Intel-gfx] [PATCH 1/5] drm/i915/gem: Flush the pwrite through the chipset before signaling
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Fri Dec 6 11:34:01 UTC 2019
On 06/12/2019 10:55, Chris Wilson wrote:
> Before we signal the fence to indicate completion, ensure the pwrite
> through the indirect GGTT is coherent (as best as we know) in memory.
> Any listeners to the fence may start immediately and sample from the
> backing store prior to the writes being posted, thus seeing stale data.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_gem.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 98b65b718e1a..919d3a723c50 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -670,11 +670,12 @@ i915_gem_gtt_pwrite_fast(struct drm_i915_gem_object *obj,
> user_data += page_length;
> offset += page_length;
> }
> +
> + intel_gt_flush_ggtt_writes(ggtt->vm.gt);
> intel_frontbuffer_flush(obj->frontbuffer, ORIGIN_CPU);
>
> i915_gem_object_unlock_fence(obj, fence);
> out_unpin:
> - intel_gt_flush_ggtt_writes(ggtt->vm.gt);
> if (drm_mm_node_allocated(&node)) {
> ggtt->vm.clear_range(&ggtt->vm, node.start, node.size);
> remove_mappable_node(ggtt, &node);
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list