[PATCH 6/6] drm/i915: various cleanups after the recent rewriting

Dave Gordon david.s.gordon at intel.com
Wed Jul 20 11:10:58 UTC 2016


Making to_intel_bo() and to_gem_object() have well-defined behaviour for
NULL parameters means that it is safe to pass a possibly-NULL pointer to
i915_gem_object_unreference{_unlocked}(), so we can remove a few checks
for non-NULL values.

And in a few places, we can make the code a little simpler by choosing
to keep a pointer to a DRM object rather than an i915 object, or vice-
versa.

Signed-off-by: Dave Gordon <david.s.gordon at intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c     | 2 +-
 drivers/gpu/drm/i915/i915_gem.c         | 7 ++++---
 drivers/gpu/drm/i915/i915_gem_evict.c   | 7 +++----
 drivers/gpu/drm/i915/intel_guc_loader.c | 7 ++-----
 drivers/gpu/drm/i915/intel_pm.c         | 3 +--
 5 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 618f8cf..4fcddd0 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -144,7 +144,7 @@ static u64 i915_gem_obj_total_ggtt_size(struct drm_i915_gem_object *obj)
 	lockdep_assert_held(&obj->base.dev->struct_mutex);
 
 	seq_printf(m, "%pK: %c%c%c%c%c %8zdKiB %02x %02x [ ",
-		   &obj->base,
+		   obj,
 		   get_active_flag(obj),
 		   get_pin_flag(obj),
 		   get_tiling_flag(obj),
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 635be83..96dc7fa 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1918,11 +1918,12 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 static int i915_gem_object_create_mmap_offset(struct drm_i915_gem_object *obj)
 {
 	struct drm_i915_private *dev_priv = to_i915(obj->base.dev);
+	struct drm_gem_object *drm_obj = to_gem_object(obj);
 	int ret;
 
 	dev_priv->mm.shrinker_no_lock_stealing = true;
 
-	ret = drm_gem_create_mmap_offset(&obj->base);
+	ret = drm_gem_create_mmap_offset(drm_obj);
 	if (ret != -ENOSPC)
 		goto out;
 
@@ -1938,12 +1939,12 @@ static int i915_gem_object_create_mmap_offset(struct drm_i915_gem_object *obj)
 			I915_SHRINK_BOUND |
 			I915_SHRINK_UNBOUND |
 			I915_SHRINK_PURGEABLE);
-	ret = drm_gem_create_mmap_offset(&obj->base);
+	ret = drm_gem_create_mmap_offset(drm_obj);
 	if (ret != -ENOSPC)
 		goto out;
 
 	i915_gem_shrink_all(dev_priv);
-	ret = drm_gem_create_mmap_offset(&obj->base);
+	ret = drm_gem_create_mmap_offset(drm_obj);
 out:
 	dev_priv->mm.shrinker_no_lock_stealing = false;
 
diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c
index c1c695b..aeeb7a5 100644
--- a/drivers/gpu/drm/i915/i915_gem_evict.c
+++ b/drivers/gpu/drm/i915/i915_gem_evict.c
@@ -191,17 +191,16 @@
 
 	/* Unbinding will emit any required flushes */
 	while (!list_empty(&eviction_list)) {
-		struct drm_gem_object *obj;
+		struct drm_i915_gem_object *obj;
 		vma = list_first_entry(&eviction_list,
 				       struct i915_vma,
 				       exec_list);
-
-		obj =  &vma->obj->base;
+		obj =  vma->obj;
 		list_del_init(&vma->exec_list);
 		if (ret == 0)
 			ret = i915_vma_unbind(vma);
 
-		drm_gem_object_unreference(obj);
+		i915_gem_object_unreference(obj);
 	}
 
 	return ret;
diff --git a/drivers/gpu/drm/i915/intel_guc_loader.c b/drivers/gpu/drm/i915/intel_guc_loader.c
index 01c075a..dabfbd9 100644
--- a/drivers/gpu/drm/i915/intel_guc_loader.c
+++ b/drivers/gpu/drm/i915/intel_guc_loader.c
@@ -660,9 +660,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 		  guc_fw->guc_fw_path, err);
 
 	mutex_lock(&dev->struct_mutex);
-	obj = guc_fw->guc_fw_obj;
-	if (obj)
-		i915_gem_object_unreference(obj);
+	i915_gem_object_unreference(guc_fw->guc_fw_obj);
 	guc_fw->guc_fw_obj = NULL;
 	mutex_unlock(&dev->struct_mutex);
 
@@ -742,8 +740,7 @@ void intel_guc_fini(struct drm_device *dev)
 	i915_guc_submission_disable(dev_priv);
 	i915_guc_submission_fini(dev_priv);
 
-	if (guc_fw->guc_fw_obj)
-		i915_gem_object_unreference(guc_fw->guc_fw_obj);
+	i915_gem_object_unreference(guc_fw->guc_fw_obj);
 	guc_fw->guc_fw_obj = NULL;
 	mutex_unlock(&dev->struct_mutex);
 
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index b515569..e1285ee 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5706,8 +5706,7 @@ static void valleyview_setup_pctx(struct drm_i915_private *dev_priv)
 
 static void valleyview_cleanup_pctx(struct drm_i915_private *dev_priv)
 {
-	if (WARN_ON(!dev_priv->vlv_pctx))
-		return;
+	WARN_ON(!dev_priv->vlv_pctx);
 
 	i915_gem_object_unreference_unlocked(dev_priv->vlv_pctx);
 	dev_priv->vlv_pctx = NULL;
-- 
1.9.1



More information about the Intel-gfx-trybot mailing list