[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