From: Ben Widawsky <benjamin.widawsky@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Ben Widawsky <ben@bwidawsk.net>
Subject: [PATCH 3/6] drm/i915: Convert active API to VMA
Date: Sat, 14 Sep 2013 15:03:16 -0700 [thread overview]
Message-ID: <1379196199-11295-3-git-send-email-benjamin.widawsky@intel.com> (raw)
In-Reply-To: <1379196199-11295-1-git-send-email-benjamin.widawsky@intel.com>
From: Ben Widawsky <ben@bwidawsk.net>
Even though we track object activity and not VMA, because we have the
active_list be based on the VM, it makes the most sense to use VMAs in
the APIs.
NOTE: Daniel intends to eventually rip out active/inactive LRUs, but for
now, leave them be.
v2: Remove leftover hunk from the previous patch which didn't keep
i915_gem_object_move_to_active. That patch had to rely on the ring to
get the dev instead of the obj. (Chris)
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
---
drivers/gpu/drm/i915/i915_drv.h | 5 ++---
drivers/gpu/drm/i915/i915_gem.c | 9 ++++++++-
drivers/gpu/drm/i915/i915_gem_context.c | 5 +----
drivers/gpu/drm/i915/i915_gem_execbuffer.c | 3 +--
4 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index df43f71..427c537 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1884,9 +1884,8 @@ static inline void i915_gem_object_unpin_pages(struct drm_i915_gem_object *obj)
int __must_check i915_mutex_lock_interruptible(struct drm_device *dev);
int i915_gem_object_sync(struct drm_i915_gem_object *obj,
struct intel_ring_buffer *to);
-void i915_gem_object_move_to_active(struct drm_i915_gem_object *obj,
- struct intel_ring_buffer *ring);
-
+void i915_vma_move_to_active(struct i915_vma *vma,
+ struct intel_ring_buffer *ring);
int i915_gem_dumb_create(struct drm_file *file_priv,
struct drm_device *dev,
struct drm_mode_create_dumb *args);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 83f946c..651b91c 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1910,7 +1910,7 @@ i915_gem_object_get_pages(struct drm_i915_gem_object *obj)
return 0;
}
-void
+static void
i915_gem_object_move_to_active(struct drm_i915_gem_object *obj,
struct intel_ring_buffer *ring)
{
@@ -1949,6 +1949,13 @@ i915_gem_object_move_to_active(struct drm_i915_gem_object *obj,
}
}
+void i915_vma_move_to_active(struct i915_vma *vma,
+ struct intel_ring_buffer *ring)
+{
+ list_move_tail(&vma->mm_list, &vma->vm->active_list);
+ return i915_gem_object_move_to_active(vma->obj, ring);
+}
+
static void
i915_gem_object_move_to_inactive(struct drm_i915_gem_object *obj)
{
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index 26c3fcc..cb3b7e8 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -436,11 +436,8 @@ static int do_switch(struct i915_hw_context *to)
* MI_SET_CONTEXT instead of when the next seqno has completed.
*/
if (from != NULL) {
- struct drm_i915_private *dev_priv = from->obj->base.dev->dev_private;
- struct i915_address_space *ggtt = &dev_priv->gtt.base;
from->obj->base.read_domains = I915_GEM_DOMAIN_INSTRUCTION;
- list_move_tail(&i915_gem_obj_to_vma(from->obj, ggtt)->mm_list, &ggtt->active_list);
- i915_gem_object_move_to_active(from->obj, ring);
+ i915_vma_move_to_active(i915_gem_obj_to_ggtt(from->obj), ring);
/* As long as MI_SET_CONTEXT is serializing, ie. it flushes the
* whole damn pipeline, we don't need to explicitly mark the
* object dirty. The only exception is that the context must be
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index ee93357..b26d979 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -872,8 +872,7 @@ i915_gem_execbuffer_move_to_active(struct list_head *vmas,
obj->base.read_domains = obj->base.pending_read_domains;
obj->fenced_gpu_access = obj->pending_fenced_gpu_access;
- list_move_tail(&vma->mm_list, &vma->vm->active_list);
- i915_gem_object_move_to_active(obj, ring);
+ i915_vma_move_to_active(vma, ring);
if (obj->base.write_domain) {
obj->dirty = 1;
obj->last_write_seqno = intel_ring_get_seqno(ring);
--
1.8.4
next prev parent reply other threads:[~2013-09-14 22:03 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-14 22:03 [PATCH 1/6] drm/i915: trace vm eviction instead of everything Ben Widawsky
2013-09-14 22:03 ` [PATCH 2/6] drm/i915: Provide a cheap ggtt vma lookup Ben Widawsky
2013-09-14 22:03 ` Ben Widawsky [this message]
2013-09-14 22:03 ` [PATCH 4/6] drm/i915: Add bind/unbind object functions to VM Ben Widawsky
2013-09-16 9:25 ` Chris Wilson
2013-09-16 18:23 ` Ben Widawsky
2013-09-16 22:05 ` Daniel Vetter
2013-09-16 22:18 ` Chris Wilson
2013-09-16 22:20 ` Daniel Vetter
2013-09-16 22:13 ` Chris Wilson
2013-09-17 5:44 ` Ben Widawsky
2013-09-17 7:49 ` Chris Wilson
2013-09-17 17:00 ` [PATCH 4/6] [v5] " Ben Widawsky
2013-09-14 22:03 ` [PATCH 5/6] drm/i915: Use the new vm [un]bind functions Ben Widawsky
2013-09-16 7:37 ` Chris Wilson
2013-09-16 18:31 ` Ben Widawsky
2013-09-17 17:01 ` [PATCH 5/6] [v3] " Ben Widawsky
2013-09-17 20:55 ` Chris Wilson
2013-09-17 23:14 ` Ben Widawsky
2013-09-17 23:33 ` Chris Wilson
2013-09-17 23:48 ` Ben Widawsky
2013-09-17 23:57 ` Chris Wilson
2013-09-18 0:02 ` Ben Widawsky
2013-09-18 8:30 ` Chris Wilson
2013-09-18 14:47 ` Ben Widawsky
2013-09-18 14:53 ` Chris Wilson
2013-09-18 15:48 ` Ben Widawsky
2013-09-18 15:59 ` Chris Wilson
2013-09-18 16:11 ` Ben Widawsky
2013-09-18 16:15 ` Chris Wilson
2013-09-18 16:20 ` Daniel Vetter
2013-09-18 16:37 ` Ben Widawsky
2013-09-19 0:12 ` [PATCH] [v4] " Ben Widawsky
2013-09-19 9:13 ` Chris Wilson
2013-09-19 14:15 ` [PATCH] [v5] " Ben Widawsky
2013-09-19 14:26 ` Chris Wilson
2013-09-19 14:41 ` [PATCH] [v6] " Ben Widawsky
2013-09-19 14:45 ` [PATCH] [v7] " Ben Widawsky
2013-09-20 4:06 ` [PATCH] " Ben Widawsky
2013-09-20 10:43 ` Chris Wilson
2013-09-20 13:24 ` Daniel Vetter
2013-09-20 13:26 ` Daniel Vetter
2013-09-20 13:29 ` Chris Wilson
2013-09-20 20:44 ` Ben Widawsky
2013-09-20 20:55 ` Chris Wilson
2013-09-20 21:08 ` Ben Widawsky
2013-09-20 21:22 ` Daniel Vetter
2013-09-22 18:46 ` [PATCH] [v9] " Ben Widawsky
2013-09-23 8:39 ` Chris Wilson
2013-09-23 22:00 ` Ben Widawsky
2013-09-23 22:10 ` Chris Wilson
2013-09-19 14:47 ` [PATCH] [v6] " Chris Wilson
2013-09-19 17:41 ` Ben Widawsky
2013-09-19 18:36 ` Daniel Vetter
2013-09-14 22:03 ` [PATCH 6/6] drm/i915: eliminate vm->insert_entries() Ben Widawsky
-- strict thread matches above, loose matches on Subject: below --
2013-09-24 16:57 [PATCH 1/6] drm/i915: trace vm eviction instead of everything Ben Widawsky
2013-09-24 16:57 ` [PATCH 3/6] drm/i915: Convert active API to VMA Ben Widawsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1379196199-11295-3-git-send-email-benjamin.widawsky@intel.com \
--to=benjamin.widawsky@intel.com \
--cc=ben@bwidawsk.net \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox