Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cb15d9f8 authored by Tvrtko Ursulin's avatar Tvrtko Ursulin
Browse files

drm/i915: More GEM init dev_priv cleanup



Simplifies the code to pass the right parameter in.

v2: Commit message. (Joonas Lahtinen)

Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
parent bf9e8429
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -544,8 +544,8 @@ static const struct vga_switcheroo_client_ops i915_switcheroo_ops = {
static void i915_gem_fini(struct drm_i915_private *dev_priv)
static void i915_gem_fini(struct drm_i915_private *dev_priv)
{
{
	mutex_lock(&dev_priv->drm.struct_mutex);
	mutex_lock(&dev_priv->drm.struct_mutex);
	i915_gem_cleanup_engines(&dev_priv->drm);
	i915_gem_cleanup_engines(dev_priv);
	i915_gem_context_fini(&dev_priv->drm);
	i915_gem_context_fini(dev_priv);
	mutex_unlock(&dev_priv->drm.struct_mutex);
	mutex_unlock(&dev_priv->drm.struct_mutex);


	rcu_barrier();
	rcu_barrier();
@@ -833,7 +833,7 @@ static int i915_driver_init_early(struct drm_i915_private *dev_priv,
	intel_init_display_hooks(dev_priv);
	intel_init_display_hooks(dev_priv);
	intel_init_clock_gating_hooks(dev_priv);
	intel_init_clock_gating_hooks(dev_priv);
	intel_init_audio_hooks(dev_priv);
	intel_init_audio_hooks(dev_priv);
	ret = i915_gem_load_init(&dev_priv->drm);
	ret = i915_gem_load_init(dev_priv);
	if (ret < 0)
	if (ret < 0)
		goto err_gvt;
		goto err_gvt;


@@ -861,7 +861,7 @@ static int i915_driver_init_early(struct drm_i915_private *dev_priv,
static void i915_driver_cleanup_early(struct drm_i915_private *dev_priv)
static void i915_driver_cleanup_early(struct drm_i915_private *dev_priv)
{
{
	i915_perf_fini(dev_priv);
	i915_perf_fini(dev_priv);
	i915_gem_load_cleanup(&dev_priv->drm);
	i915_gem_load_cleanup(dev_priv);
	i915_workqueues_cleanup(dev_priv);
	i915_workqueues_cleanup(dev_priv);
}
}


+4 −4
Original line number Original line Diff line number Diff line
@@ -2975,8 +2975,8 @@ int i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data,
				struct drm_file *file_priv);
				struct drm_file *file_priv);
int i915_gem_wait_ioctl(struct drm_device *dev, void *data,
int i915_gem_wait_ioctl(struct drm_device *dev, void *data,
			struct drm_file *file_priv);
			struct drm_file *file_priv);
int i915_gem_load_init(struct drm_device *dev);
int i915_gem_load_init(struct drm_i915_private *dev_priv);
void i915_gem_load_cleanup(struct drm_device *dev);
void i915_gem_load_cleanup(struct drm_i915_private *dev_priv);
void i915_gem_load_init_fences(struct drm_i915_private *dev_priv);
void i915_gem_load_init_fences(struct drm_i915_private *dev_priv);
int i915_gem_freeze(struct drm_i915_private *dev_priv);
int i915_gem_freeze(struct drm_i915_private *dev_priv);
int i915_gem_freeze_late(struct drm_i915_private *dev_priv);
int i915_gem_freeze_late(struct drm_i915_private *dev_priv);
@@ -3180,7 +3180,7 @@ void i915_gem_clflush_object(struct drm_i915_gem_object *obj, bool force);
int __must_check i915_gem_init(struct drm_i915_private *dev_priv);
int __must_check i915_gem_init(struct drm_i915_private *dev_priv);
int __must_check i915_gem_init_hw(struct drm_i915_private *dev_priv);
int __must_check i915_gem_init_hw(struct drm_i915_private *dev_priv);
void i915_gem_init_swizzling(struct drm_i915_private *dev_priv);
void i915_gem_init_swizzling(struct drm_i915_private *dev_priv);
void i915_gem_cleanup_engines(struct drm_device *dev);
void i915_gem_cleanup_engines(struct drm_i915_private *dev_priv);
int __must_check i915_gem_wait_for_idle(struct drm_i915_private *dev_priv,
int __must_check i915_gem_wait_for_idle(struct drm_i915_private *dev_priv,
					unsigned int flags);
					unsigned int flags);
int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv);
int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv);
@@ -3269,7 +3269,7 @@ void i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
/* i915_gem_context.c */
/* i915_gem_context.c */
int __must_check i915_gem_context_init(struct drm_i915_private *dev_priv);
int __must_check i915_gem_context_init(struct drm_i915_private *dev_priv);
void i915_gem_context_lost(struct drm_i915_private *dev_priv);
void i915_gem_context_lost(struct drm_i915_private *dev_priv);
void i915_gem_context_fini(struct drm_device *dev);
void i915_gem_context_fini(struct drm_i915_private *dev_priv);
int i915_gem_context_open(struct drm_device *dev, struct drm_file *file);
int i915_gem_context_open(struct drm_device *dev, struct drm_file *file);
void i915_gem_context_close(struct drm_device *dev, struct drm_file *file);
void i915_gem_context_close(struct drm_device *dev, struct drm_file *file);
int i915_switch_context(struct drm_i915_gem_request *req);
int i915_switch_context(struct drm_i915_gem_request *req);
+3 −7
Original line number Original line Diff line number Diff line
@@ -4480,9 +4480,8 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
}
}


void
void
i915_gem_cleanup_engines(struct drm_device *dev)
i915_gem_cleanup_engines(struct drm_i915_private *dev_priv)
{
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct intel_engine_cs *engine;
	struct intel_engine_cs *engine;
	enum intel_engine_id id;
	enum intel_engine_id id;


@@ -4522,9 +4521,8 @@ i915_gem_load_init_fences(struct drm_i915_private *dev_priv)
}
}


int
int
i915_gem_load_init(struct drm_device *dev)
i915_gem_load_init(struct drm_i915_private *dev_priv)
{
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	int err = -ENOMEM;
	int err = -ENOMEM;


	dev_priv->objects = KMEM_CACHE(drm_i915_gem_object, SLAB_HWCACHE_ALIGN);
	dev_priv->objects = KMEM_CACHE(drm_i915_gem_object, SLAB_HWCACHE_ALIGN);
@@ -4593,10 +4591,8 @@ i915_gem_load_init(struct drm_device *dev)
	return err;
	return err;
}
}


void i915_gem_load_cleanup(struct drm_device *dev)
void i915_gem_load_cleanup(struct drm_i915_private *dev_priv)
{
{
	struct drm_i915_private *dev_priv = to_i915(dev);

	WARN_ON(!llist_empty(&dev_priv->mm.free_list));
	WARN_ON(!llist_empty(&dev_priv->mm.free_list));


	mutex_lock(&dev_priv->drm.struct_mutex);
	mutex_lock(&dev_priv->drm.struct_mutex);
+2 −3
Original line number Original line Diff line number Diff line
@@ -519,12 +519,11 @@ void i915_gem_context_lost(struct drm_i915_private *dev_priv)
	}
	}
}
}


void i915_gem_context_fini(struct drm_device *dev)
void i915_gem_context_fini(struct drm_i915_private *dev_priv)
{
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct i915_gem_context *dctx = dev_priv->kernel_context;
	struct i915_gem_context *dctx = dev_priv->kernel_context;


	lockdep_assert_held(&dev->struct_mutex);
	lockdep_assert_held(&dev_priv->drm.struct_mutex);


	context_close(dctx);
	context_close(dctx);
	dev_priv->kernel_context = NULL;
	dev_priv->kernel_context = NULL;