[Intel-gfx] [PATCH 1/2] drm/i915: Infrastructure for supporting different GGTT views per object
Daniel Vetter
daniel at ffwll.ch
Fri Dec 5 06:25:34 PST 2014
On Fri, Dec 05, 2014 at 12:11:45PM +0000, Tvrtko Ursulin wrote:
> +struct i915_ggtt_view {
> + enum i915_ggtt_view_type type;
> +
> + struct sg_table *pages;
> +};
Minor nit on semantics, not really worth a resend (except when you need
one anyway because of the detailed review): Imo the sg_table should be in
the vma directly, not in the gtt_view. Otherwise we can't just do a memcmp
if the view paramaters grow more fancy than just the type key. And maybe
call it sg_table, not pages, to avoid confusion with the real obj->pages
backing storage pointer.
Anyway just bikesheds ;-)
-Daniel
> +
> +extern const struct i915_ggtt_view i915_ggtt_view_normal;
> +
> enum i915_cache_level;
> +
> /**
> * A VMA represents a GEM BO that is bound into an address space. Therefore, a
> * VMA's presence cannot be guaranteed before binding, or after unbinding the
> @@ -129,6 +142,15 @@ struct i915_vma {
> #define PTE_READ_ONLY (1<<2)
> unsigned int bound : 4;
>
> + /**
> + * Support different GGTT views into the same object.
> + * This means there can be multiple VMA mappings per object and per VM.
> + * i915_ggtt_view_type is used to distinguish between those entries.
> + * The default one of zero (I915_GGTT_VIEW_NORMAL) is default and also
> + * assumed in GEM functions which take no ggtt view parameter.
> + */
> + struct i915_ggtt_view ggtt_view;
> +
> /** This object's place on the active/inactive lists */
> struct list_head mm_list;
>
> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
> index c4536e1..f97479a 100644
> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> @@ -718,10 +718,8 @@ static u32 capture_pinned_bo(struct drm_i915_error_buffer *err,
> break;
>
> list_for_each_entry(vma, &obj->vma_list, vma_link)
> - if (vma->vm == vm && vma->pin_count > 0) {
> + if (vma->vm == vm && vma->pin_count > 0)
> capture_bo(err++, vma);
> - break;
> - }
> }
>
> return err - first;
> @@ -1096,10 +1094,8 @@ static void i915_gem_capture_vm(struct drm_i915_private *dev_priv,
>
> list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) {
> list_for_each_entry(vma, &obj->vma_list, vma_link)
> - if (vma->vm == vm && vma->pin_count > 0) {
> + if (vma->vm == vm && vma->pin_count > 0)
> i++;
> - break;
> - }
> }
> error->pinned_bo_count[ndx] = i - error->active_bo_count[ndx];
>
> --
> 2.1.1
>
> _______________________________________________
> 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