[Intel-gfx] [PATCH 2/2] drm/i915: Match GTT space sanity checker with implementation
Daniel Vetter
daniel at ffwll.ch
Thu Sep 11 10:02:27 CEST 2014
On Wed, Sep 10, 2014 at 07:52:19PM +0100, Chris Wilson wrote:
> If we believe that the device can cross cache domains in its prefetcher
> (i.e. we allow neighbouring pages in different domains), we don't supply
> a color_adjust callback. Use the presence of this callback to better
> determine when we should be verifying that the GTT space we just
> used is valid.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
I guess this needs some serious beating on vlv/chv?
Merged the first patch to dinq, thanks.
-Daniel
> ---
> drivers/gpu/drm/i915/i915_gem.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index abb2b2ed9c4c..55e3959a0b76 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -3011,16 +3011,17 @@ i915_gem_object_get_fence(struct drm_i915_gem_object *obj)
> }
>
> static bool i915_gem_valid_gtt_space(struct drm_device *dev,
> - struct drm_mm_node *gtt_space,
> + struct i915_vma *vma,
> unsigned long cache_level)
> {
> + struct drm_mm_node *gtt_space = &vma->node;
> struct drm_mm_node *other;
>
> /* On non-LLC machines we have to be careful when putting differing
> * types of snoopable memory together to avoid the prefetcher
> * crossing memory domains and dying.
> */
> - if (HAS_LLC(dev))
> + if (vma->vm->mm.color_adjust == NULL)
> return true;
>
> if (!drm_mm_node_allocated(gtt_space))
> @@ -3146,8 +3147,7 @@ search_free:
> goto err_free_vma;
> }
> }
> - if (WARN_ON(!i915_gem_valid_gtt_space(dev, &vma->node,
> - obj->cache_level))) {
> + if (WARN_ON(!i915_gem_valid_gtt_space(dev, vma, obj->cache_level))) {
> ret = -EINVAL;
> goto err_remove_node;
> }
> @@ -3353,7 +3353,7 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj,
> }
>
> list_for_each_entry_safe(vma, next, &obj->vma_list, vma_link) {
> - if (!i915_gem_valid_gtt_space(dev, &vma->node, cache_level)) {
> + if (!i915_gem_valid_gtt_space(dev, vma, cache_level)) {
> ret = i915_vma_unbind(vma);
> if (ret)
> return ret;
> --
> 2.1.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the Intel-gfx
mailing list