intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Dave Gordon <david.s.gordon@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 2/2 v2] drm/i915: mark GEM objects dirty after overwriting their contents
Date: Wed,  9 Dec 2015 15:52:52 +0000	[thread overview]
Message-ID: <1449676372-6988-3-git-send-email-david.s.gordon@intel.com> (raw)
In-Reply-To: <1449676372-6988-1-git-send-email-david.s.gordon@intel.com>

In a few places, we fill a GEM object with data, or overwrite some
portion of its contents other than a single page. In such cases, we
should mark the object dirty so that its pages in the pagecache are
written to backing store (rather than discarded) if the object is
evicted due to memory pressure.

The cases where only a single page is touched are dealt with in a
separate patch.

This incorporates and supercedes Alex Dai's earlier patch
[PATCH v1] drm/i915/guc: Fix a fw content lost issue after it is evicted

Signed-off-by: Dave Gordon <david.s.gordon@intel.com>
Cc: Alex Dai <yu.dai@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/i915_cmd_parser.c | 3 +++
 drivers/gpu/drm/i915/i915_gem.c        | 5 ++++-
 drivers/gpu/drm/i915/intel_lrc.c       | 2 +-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_cmd_parser.c b/drivers/gpu/drm/i915/i915_cmd_parser.c
index 814d894..81a4fa2 100644
--- a/drivers/gpu/drm/i915/i915_cmd_parser.c
+++ b/drivers/gpu/drm/i915/i915_cmd_parser.c
@@ -946,6 +946,9 @@ static u32 *copy_batch(struct drm_i915_gem_object *dest_obj,
 
 	memcpy(dst, src, batch_len);
 
+	/* After writing on the dest_obj, its backing store is out-of-date */
+	dest_obj->dirty = 1;
+
 unmap_src:
 	vunmap(src_base);
 unpin_src:
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 06a5f39..81a770f 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -937,7 +937,6 @@ i915_gem_shmem_pwrite(struct drm_device *dev,
 	i915_gem_object_pin_pages(obj);
 
 	offset = args->offset;
-	obj->dirty = 1;
 
 	for_each_sg_page(obj->pages->sgl, &sg_iter, obj->pages->nents,
 			 offset >> PAGE_SHIFT) {
@@ -1074,6 +1073,9 @@ i915_gem_pwrite_ioctl(struct drm_device *dev, void *data,
 		goto out;
 	}
 
+	/* Object backing store will be out of date hereafter */
+	obj->dirty = 1;
+
 	trace_i915_gem_object_pwrite(obj, args->offset, args->size);
 
 	ret = -EFAULT;
@@ -5224,6 +5226,7 @@ i915_gem_object_create_from_data(struct drm_device *dev,
 	i915_gem_object_pin_pages(obj);
 	sg = obj->pages;
 	bytes = sg_copy_from_buffer(sg->sgl, sg->nents, (void *)data, size);
+	obj->dirty = 1;		/* Backing store is now out of date */
 	i915_gem_object_unpin_pages(obj);
 
 	if (WARN_ON(bytes != size)) {
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index ceccecc..c7520b7 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -1030,7 +1030,7 @@ static int intel_lr_context_do_pin(struct intel_engine_cs *ring,
 	if (ret)
 		goto unpin_ctx_obj;
 
-	ctx_obj->dirty = true;
+	ctx_obj->dirty = 1;
 
 	/* Invalidate GuC TLB. */
 	if (i915.enable_guc_submission)
-- 
1.9.1

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

  parent reply	other threads:[~2015-12-09 15:53 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-08 16:51 [PATCH 0/3] drm/i915: mark GEM objects as dirtied by CPU Dave Gordon
2015-12-08 16:51 ` [PATCH 1/3] drm/i915: mark GEM objects as dirty when filled by the CPU Dave Gordon
2015-12-08 17:00   ` Chris Wilson
2015-12-08 18:06     ` Dave Gordon
2015-12-10 10:49       ` Daniel Vetter
2015-12-08 16:51 ` [PATCH 2/3] drm/i915: mark GEM objects as dirty when updated " Dave Gordon
2015-12-08 17:00   ` Chris Wilson
2015-12-08 18:43     ` Dave Gordon
2015-12-08 16:51 ` [PATCH 3/3] drm/i915: mark GEM objects as dirty when written " Dave Gordon
2015-12-08 17:03   ` Chris Wilson
2015-12-08 18:24     ` Dave Gordon
2015-12-10 13:10       ` Daniel Vetter
2015-12-09 15:52 ` [PATCH 0/2 v2] drm/i915: mark GEM objects as dirtied by CPU Dave Gordon
2015-12-09 15:52   ` [PATCH 1/2 v2] drm/i915: mark GEM object pages dirty when mapped & written by the CPU Dave Gordon
2015-12-10 13:29     ` Chris Wilson
2015-12-10 17:24       ` Dave Gordon
2015-12-10 21:04         ` Chris Wilson
2015-12-11 17:08           ` Daniel Vetter
2015-12-11 17:27             ` Chris Wilson
2015-12-09 15:52   ` Dave Gordon [this message]
2015-12-10 13:22     ` [PATCH 2/2 v2] drm/i915: mark GEM objects dirty after overwriting their contents Chris Wilson
2015-12-10 14:06     ` Daniel Vetter
2015-12-10 14:52       ` Chris Wilson
2015-12-11 17:09         ` Daniel Vetter
2015-12-10 16:19       ` Dave Gordon
2015-12-10 18:51   ` [PATCH 0/4 v3] drm/i915: mark GEM objects as dirtied by CPU Dave Gordon
2015-12-10 18:51     ` [PATCH 1/4 v3] drm/i915: mark GEM object pages dirty when mapped & written by the CPU Dave Gordon
2015-12-10 21:07       ` Chris Wilson
2015-12-10 18:51     ` [PATCH 2/4 v3] drm/i915: mark a newly-created GEM object dirty when filled with data Dave Gordon
2015-12-10 21:06       ` Chris Wilson
2015-12-11 17:21         ` Daniel Vetter
2015-12-10 18:51     ` [PATCH 3/4 v3] drm/i915: always mark the target of pwrite() as dirty Dave Gordon
2015-12-10 21:09       ` Chris Wilson
2015-12-10 18:51     ` [PATCH 4/4 v3] drm/i915: miscellaneous tiny tweaks to GEM object->dirty Dave Gordon
2015-12-10 21:16       ` Chris Wilson

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=1449676372-6988-3-git-send-email-david.s.gordon@intel.com \
    --to=david.s.gordon@intel.com \
    --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;
as well as URLs for NNTP newsgroup(s).