aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c30
2 files changed, 19 insertions, 12 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 06a88be067f1..9f4c27eab046 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1302,6 +1302,7 @@ int i915_gem_wait_ioctl(struct drm_device *dev, void *data,
1302 struct drm_file *file_priv); 1302 struct drm_file *file_priv);
1303void i915_gem_load(struct drm_device *dev); 1303void i915_gem_load(struct drm_device *dev);
1304int i915_gem_init_object(struct drm_gem_object *obj); 1304int i915_gem_init_object(struct drm_gem_object *obj);
1305void i915_gem_object_init(struct drm_i915_gem_object *obj);
1305struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, 1306struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
1306 size_t size); 1307 size_t size);
1307void i915_gem_free_object(struct drm_gem_object *obj); 1308void i915_gem_free_object(struct drm_gem_object *obj);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index eb54a6d81517..553175856e81 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3558,10 +3558,26 @@ unlock:
3558 return ret; 3558 return ret;
3559} 3559}
3560 3560
3561void i915_gem_object_init(struct drm_i915_gem_object *obj)
3562{
3563 obj->base.driver_private = NULL;
3564
3565 INIT_LIST_HEAD(&obj->mm_list);
3566 INIT_LIST_HEAD(&obj->gtt_list);
3567 INIT_LIST_HEAD(&obj->ring_list);
3568 INIT_LIST_HEAD(&obj->exec_list);
3569
3570 obj->fence_reg = I915_FENCE_REG_NONE;
3571 obj->madv = I915_MADV_WILLNEED;
3572 /* Avoid an unnecessary call to unbind on the first bind. */
3573 obj->map_and_fenceable = true;
3574
3575 i915_gem_info_add_obj(obj->base.dev->dev_private, obj->base.size);
3576}
3577
3561struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, 3578struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
3562 size_t size) 3579 size_t size)
3563{ 3580{
3564 struct drm_i915_private *dev_priv = dev->dev_private;
3565 struct drm_i915_gem_object *obj; 3581 struct drm_i915_gem_object *obj;
3566 struct address_space *mapping; 3582 struct address_space *mapping;
3567 u32 mask; 3583 u32 mask;
@@ -3585,7 +3601,7 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
3585 mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; 3601 mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping;
3586 mapping_set_gfp_mask(mapping, mask); 3602 mapping_set_gfp_mask(mapping, mask);
3587 3603
3588 i915_gem_info_add_obj(dev_priv, size); 3604 i915_gem_object_init(obj);
3589 3605
3590 obj->base.write_domain = I915_GEM_DOMAIN_CPU; 3606 obj->base.write_domain = I915_GEM_DOMAIN_CPU;
3591 obj->base.read_domains = I915_GEM_DOMAIN_CPU; 3607 obj->base.read_domains = I915_GEM_DOMAIN_CPU;
@@ -3607,16 +3623,6 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
3607 } else 3623 } else
3608 obj->cache_level = I915_CACHE_NONE; 3624 obj->cache_level = I915_CACHE_NONE;
3609 3625
3610 obj->base.driver_private = NULL;
3611 obj->fence_reg = I915_FENCE_REG_NONE;
3612 INIT_LIST_HEAD(&obj->mm_list);
3613 INIT_LIST_HEAD(&obj->gtt_list);
3614 INIT_LIST_HEAD(&obj->ring_list);
3615 INIT_LIST_HEAD(&obj->exec_list);
3616 obj->madv = I915_MADV_WILLNEED;
3617 /* Avoid an unnecessary call to unbind on the first bind. */
3618 obj->map_and_fenceable = true;
3619
3620 return obj; 3626 return obj;
3621} 3627}
3622 3628