In the next patch, we want to extend use of the global pin counter for
semi-permanent pinning of context/ring objects. Given that we plan to
extend the usage to encompass a disparate set of objects, we want a name
that reflects both and should entail less confusion.

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_debugfs.c     | 12 ++++++------
 drivers/gpu/drm/i915/i915_gem.c         | 20 ++++++++++----------
 drivers/gpu/drm/i915/i915_gem_object.h  |  3 ++-
 drivers/gpu/drm/i915/i915_gem_userptr.c |  4 ++--
 4 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c 
b/drivers/gpu/drm/i915/i915_debugfs.c
index 329fb3649dc3..f8c888ed017b 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -81,7 +81,7 @@ static char get_active_flag(struct drm_i915_gem_object *obj)
 
 static char get_pin_flag(struct drm_i915_gem_object *obj)
 {
-       return obj->pin_display ? 'p' : ' ';
+       return obj->pin_global ? 'p' : ' ';
 }
 
 static char get_tiling_flag(struct drm_i915_gem_object *obj)
@@ -148,8 +148,8 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object 
*obj)
                        pin_count++;
        }
        seq_printf(m, " (pinned x %d)", pin_count);
-       if (obj->pin_display)
-               seq_printf(m, " (display)");
+       if (obj->pin_global)
+               seq_printf(m, " (global)");
        list_for_each_entry(vma, &obj->vma_list, obj_link) {
                if (!drm_mm_node_allocated(&vma->node))
                        continue;
@@ -439,7 +439,7 @@ static int i915_gem_object_info(struct seq_file *m, void 
*data)
                size += obj->base.size;
                ++count;
 
-               if (obj->pin_display) {
+               if (obj->pin_global) {
                        dpy_size += obj->base.size;
                        ++dpy_count;
                }
@@ -460,7 +460,7 @@ static int i915_gem_object_info(struct seq_file *m, void 
*data)
                   purgeable_count, purgeable_size);
        seq_printf(m, "%u mapped objects, %llu bytes\n",
                   mapped_count, mapped_size);
-       seq_printf(m, "%u display objects (pinned), %llu bytes\n",
+       seq_printf(m, "%u display objects (globally pinned), %llu bytes\n",
                   dpy_count, dpy_size);
 
        seq_printf(m, "%llu [%llu] gtt total\n",
@@ -524,7 +524,7 @@ static int i915_gem_gtt_info(struct seq_file *m, void *data)
 
        total_obj_size = total_gtt_size = count = 0;
        list_for_each_entry(obj, &dev_priv->mm.bound_list, global_link) {
-               if (show_pin_display_only && !obj->pin_display)
+               if (show_pin_display_only && !obj->pin_global)
                        continue;
 
                seq_puts(m, "   ");
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index bd8ae96527b4..2c10eeb2dfe0 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -55,7 +55,7 @@ static bool cpu_write_needs_clflush(struct 
drm_i915_gem_object *obj)
        if (!(obj->cache_coherent & I915_BO_CACHE_COHERENT_FOR_WRITE))
                return true;
 
-       return obj->pin_display;
+       return obj->pin_global; /* currently in use by HW, keep flushed */
 }
 
 static int
@@ -3424,7 +3424,7 @@ static void __i915_gem_object_flush_for_display(struct 
drm_i915_gem_object *obj)
 
 void i915_gem_object_flush_if_display(struct drm_i915_gem_object *obj)
 {
-       if (!READ_ONCE(obj->pin_display))
+       if (!READ_ONCE(obj->pin_global))
                return;
 
        mutex_lock(&obj->base.dev->struct_mutex);
@@ -3791,10 +3791,10 @@ i915_gem_object_pin_to_display_plane(struct 
drm_i915_gem_object *obj,
 
        lockdep_assert_held(&obj->base.dev->struct_mutex);
 
-       /* Mark the pin_display early so that we account for the
+       /* Mark the global pin early so that we account for the
         * display coherency whilst setting up the cache domains.
         */
-       obj->pin_display++;
+       obj->pin_global++;
 
        /* The display engine is not coherent with the LLC cache on gen6.  As
         * a result, we make sure that the pinning that is about to occur is
@@ -3810,7 +3810,7 @@ i915_gem_object_pin_to_display_plane(struct 
drm_i915_gem_object *obj,
                                              I915_CACHE_WT : I915_CACHE_NONE);
        if (ret) {
                vma = ERR_PTR(ret);
-               goto err_unpin_display;
+               goto err_unpin_global;
        }
 
        /* As the user may map the buffer once pinned in the display plane
@@ -3841,7 +3841,7 @@ i915_gem_object_pin_to_display_plane(struct 
drm_i915_gem_object *obj,
                vma = i915_gem_object_ggtt_pin(obj, view, 0, alignment, flags);
        }
        if (IS_ERR(vma))
-               goto err_unpin_display;
+               goto err_unpin_global;
 
        vma->display_alignment = max_t(u64, vma->display_alignment, alignment);
 
@@ -3856,8 +3856,8 @@ i915_gem_object_pin_to_display_plane(struct 
drm_i915_gem_object *obj,
 
        return vma;
 
-err_unpin_display:
-       obj->pin_display--;
+err_unpin_global:
+       obj->pin_global--;
        return vma;
 }
 
@@ -3866,10 +3866,10 @@ i915_gem_object_unpin_from_display_plane(struct 
i915_vma *vma)
 {
        lockdep_assert_held(&vma->vm->i915->drm.struct_mutex);
 
-       if (WARN_ON(vma->obj->pin_display == 0))
+       if (WARN_ON(vma->obj->pin_global == 0))
                return;
 
-       if (--vma->obj->pin_display == 0)
+       if (--vma->obj->pin_global == 0)
                vma->display_alignment = I915_GTT_MIN_ALIGNMENT;
 
        /* Bump the LRU to try and avoid premature eviction whilst flipping  */
diff --git a/drivers/gpu/drm/i915/i915_gem_object.h 
b/drivers/gpu/drm/i915/i915_gem_object.h
index 3baa341432db..b299497bbbdc 100644
--- a/drivers/gpu/drm/i915/i915_gem_object.h
+++ b/drivers/gpu/drm/i915/i915_gem_object.h
@@ -139,7 +139,8 @@ struct drm_i915_gem_object {
        /** Count of VMA actually bound by this object */
        unsigned int bind_count;
        unsigned int active_count;
-       unsigned int pin_display;
+       /** Count of how many global VMA are currently pinned for use by HW */
+       unsigned int pin_global;
 
        struct {
                struct mutex lock; /* protects the pages and their use */
diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c 
b/drivers/gpu/drm/i915/i915_gem_userptr.c
index c29f4ce6baf6..7cdcb586f148 100644
--- a/drivers/gpu/drm/i915/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
@@ -83,10 +83,10 @@ static void cancel_userptr(struct work_struct *work)
        if (i915_gem_object_unbind(obj) == 0)
                __i915_gem_object_put_pages(obj, I915_MM_NORMAL);
        WARN_ONCE(i915_gem_object_has_pages(obj),
-                 "Failed to release pages: bind_count=%d, pages_pin_count=%d, 
pin_display=%d\n",
+                 "Failed to release pages: bind_count=%d, pages_pin_count=%d, 
pin_global=%d\n",
                  obj->bind_count,
                  atomic_read(&obj->mm.pages_pin_count),
-                 obj->pin_display);
+                 obj->pin_global);
 
        mutex_unlock(&obj->base.dev->struct_mutex);
 
-- 
2.13.3

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to