drm/i915: clear the gpu reloc batch
commit5.4-rM2-2.2.x-imx-squashed641382e9b4
upstream. The reloc batch is short lived but can exist in the user visible ppGTT, and since it's backed by an internal object, which lacks page clearing, we should take care to clear it upfront. Signed-off-by: Matthew Auld <matthew.auld@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20201224151358.401345-2-matthew.auld@intel.com Cc: stable@vger.kernel.org (cherry picked from commit26ebc511e7
) Signed-off-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
parent
ef8133b1b4
commit
828f2a20f9
|
@ -936,7 +936,7 @@ static void reloc_gpu_flush(struct reloc_cache *cache)
|
||||||
GEM_BUG_ON(cache->rq_size >= obj->base.size / sizeof(u32));
|
GEM_BUG_ON(cache->rq_size >= obj->base.size / sizeof(u32));
|
||||||
cache->rq_cmd[cache->rq_size] = MI_BATCH_BUFFER_END;
|
cache->rq_cmd[cache->rq_size] = MI_BATCH_BUFFER_END;
|
||||||
|
|
||||||
__i915_gem_object_flush_map(obj, 0, sizeof(u32) * (cache->rq_size + 1));
|
i915_gem_object_flush_map(obj);
|
||||||
i915_gem_object_unpin_map(obj);
|
i915_gem_object_unpin_map(obj);
|
||||||
|
|
||||||
intel_gt_chipset_flush(cache->rq->engine->gt);
|
intel_gt_chipset_flush(cache->rq->engine->gt);
|
||||||
|
@ -1163,6 +1163,8 @@ static int __reloc_gpu_alloc(struct i915_execbuffer *eb,
|
||||||
goto out_pool;
|
goto out_pool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset32(cmd, 0, pool->obj->base.size / sizeof(u32));
|
||||||
|
|
||||||
batch = i915_vma_instance(pool->obj, vma->vm, NULL);
|
batch = i915_vma_instance(pool->obj, vma->vm, NULL);
|
||||||
if (IS_ERR(batch)) {
|
if (IS_ERR(batch)) {
|
||||||
err = PTR_ERR(batch);
|
err = PTR_ERR(batch);
|
||||||
|
|
Loading…
Reference in New Issue