[PATCH 22/23] hook-i915-to-shmem-devops

Chris Wilson chris at chris-wilson.co.uk
Tue Aug 22 16:50:19 UTC 2017


---
 drivers/gpu/drm/i915/i915_drv.h          | 2 ++
 drivers/gpu/drm/i915/i915_gem.c          | 4 ++++
 drivers/gpu/drm/i915/i915_gem_shrinker.c | 2 ++
 3 files changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 3668d6057f33..61db4a45b160 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1438,6 +1438,8 @@ struct intel_l3_parity {
 };
 
 struct i915_gem_mm {
+	struct shmem_dev_info shmem_info;
+
 	/** Memory allocator for GTT stolen memory */
 	struct drm_mm stolen;
 	/** Protects the usage of the GTT stolen memory allocator. This is
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 96dcfd6e02ca..f9158dd90e90 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2187,6 +2187,7 @@ i915_gem_object_put_pages_gtt(struct drm_i915_gem_object *obj,
 
 		lock_page(page);
 		munlock_vma_page(page);
+		set_page_private(page, 0);
 		unlock_page(page);
 
 		put_page(page);
@@ -2394,6 +2395,7 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj)
 		last_pfn = page_to_pfn(page);
 
 		lock_page(page);
+		set_page_private(page, (unsigned long)obj);
 		mlock_vma_page(page);
 		unlock_page(page);
 
@@ -2438,6 +2440,7 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj)
 	for_each_sgt_page(page, sgt_iter, st) {
 		lock_page(page);
 		munlock_vma_page(page);
+		set_page_private(page, 0);
 		unlock_page(page);
 
 		put_page(page);
@@ -4342,6 +4345,7 @@ i915_gem_object_create(struct drm_i915_private *dev_priv, u64 size)
 	mapping = obj->base.filp->f_mapping;
 	mapping_set_gfp_mask(mapping, mask);
 	GEM_BUG_ON(!(mapping_gfp_mask(mapping) & __GFP_RECLAIM));
+	shmem_set_device_ops(mapping, &dev_priv->mm.shmem_info);
 
 	i915_gem_object_init(obj, &i915_gem_object_ops);
 
diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c
index a909787c209e..b888aa2fc7f8 100644
--- a/drivers/gpu/drm/i915/i915_gem_shrinker.c
+++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c
@@ -590,6 +590,8 @@ void i915_gem_shrinker_init(struct drm_i915_private *dev_priv)
 
 	dev_priv->mm.vmap_notifier.notifier_call = i915_gem_shrinker_vmap;
 	WARN_ON(register_vmap_purge_notifier(&dev_priv->mm.vmap_notifier));
+
+	dev_priv->mm.shmem_info.dev_private_data = dev_priv;
 }
 
 /**
-- 
2.14.1



More information about the Intel-gfx-trybot mailing list