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

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

drm/i915: Make various init functions take dev_priv



Like GEM init, GUC init, MOCS init and context creation.

Enables them to lose dev_priv locals.

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 12d79d78
Loading
Loading
Loading
Loading
+15 −16
Original line number Diff line number Diff line
@@ -603,9 +603,9 @@ static int i915_load_modeset_init(struct drm_device *dev)
	if (ret)
		goto cleanup_irq;

	intel_guc_init(dev);
	intel_guc_init(dev_priv);

	ret = i915_gem_init(dev);
	ret = i915_gem_init(dev_priv);
	if (ret)
		goto cleanup_irq;

@@ -626,11 +626,11 @@ static int i915_load_modeset_init(struct drm_device *dev)
	return 0;

cleanup_gem:
	if (i915_gem_suspend(dev))
	if (i915_gem_suspend(dev_priv))
		DRM_ERROR("failed to idle hardware; continuing to unload!\n");
	i915_gem_fini(dev_priv);
cleanup_irq:
	intel_guc_fini(dev);
	intel_guc_fini(dev_priv);
	drm_irq_uninstall(dev);
	intel_teardown_gmbus(dev);
cleanup_csr:
@@ -1283,7 +1283,7 @@ void i915_driver_unload(struct drm_device *dev)

	intel_fbdev_fini(dev);

	if (i915_gem_suspend(dev))
	if (i915_gem_suspend(dev_priv))
		DRM_ERROR("failed to idle hardware; continuing to unload!\n");

	intel_display_power_get(dev_priv, POWER_DOMAIN_INIT);
@@ -1320,7 +1320,7 @@ void i915_driver_unload(struct drm_device *dev)
	/* Flush any outstanding unpin_work. */
	drain_workqueue(dev_priv->wq);

	intel_guc_fini(dev);
	intel_guc_fini(dev_priv);
	i915_gem_fini(dev_priv);
	intel_fbc_cleanup_cfb(dev_priv);

@@ -1425,14 +1425,14 @@ static int i915_drm_suspend(struct drm_device *dev)

	pci_save_state(pdev);

	error = i915_gem_suspend(dev);
	error = i915_gem_suspend(dev_priv);
	if (error) {
		dev_err(&pdev->dev,
			"GEM idle failed, resume might fail\n");
		goto out;
	}

	intel_guc_suspend(dev);
	intel_guc_suspend(dev_priv);

	intel_display_suspend(dev);

@@ -1568,7 +1568,7 @@ static int i915_drm_resume(struct drm_device *dev)

	intel_csr_ucode_resume(dev_priv);

	i915_gem_resume(dev);
	i915_gem_resume(dev_priv);

	i915_restore_state(dev);
	intel_pps_unlock_regs_wa(dev_priv);
@@ -1591,13 +1591,13 @@ static int i915_drm_resume(struct drm_device *dev)
	drm_mode_config_reset(dev);

	mutex_lock(&dev->struct_mutex);
	if (i915_gem_init_hw(dev)) {
	if (i915_gem_init_hw(dev_priv)) {
		DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n");
		i915_gem_set_wedged(dev_priv);
	}
	mutex_unlock(&dev->struct_mutex);

	intel_guc_resume(dev);
	intel_guc_resume(dev_priv);

	intel_modeset_init_hw(dev);

@@ -1770,11 +1770,10 @@ static void enable_engines_irq(struct drm_i915_private *dev_priv)
 */
void i915_reset(struct drm_i915_private *dev_priv)
{
	struct drm_device *dev = &dev_priv->drm;
	struct i915_gpu_error *error = &dev_priv->gpu_error;
	int ret;

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

	if (!test_and_clear_bit(I915_RESET_IN_PROGRESS, &error->flags))
		return;
@@ -1814,7 +1813,7 @@ void i915_reset(struct drm_i915_private *dev_priv)
	 * was running at the time of the reset (i.e. we weren't VT
	 * switched away).
	 */
	ret = i915_gem_init_hw(dev);
	ret = i915_gem_init_hw(dev_priv);
	if (ret) {
		DRM_ERROR("Failed hw init on reset %d\n", ret);
		goto error;
@@ -2328,7 +2327,7 @@ static int intel_runtime_suspend(struct device *kdev)
	 */
	i915_gem_runtime_suspend(dev_priv);

	intel_guc_suspend(dev);
	intel_guc_suspend(dev_priv);

	intel_runtime_pm_disable_interrupts(dev_priv);

@@ -2413,7 +2412,7 @@ static int intel_runtime_resume(struct device *kdev)
	if (intel_uncore_unclaimed_mmio(dev_priv))
		DRM_DEBUG_DRIVER("Unclaimed access during suspend, bios?\n");

	intel_guc_resume(dev);
	intel_guc_resume(dev_priv);

	if (IS_GEN6(dev_priv))
		intel_init_pch_refclk(dev_priv);
+5 −5
Original line number Diff line number Diff line
@@ -3177,14 +3177,14 @@ static inline u32 i915_reset_count(struct i915_gpu_error *error)
void i915_gem_reset(struct drm_i915_private *dev_priv);
void i915_gem_set_wedged(struct drm_i915_private *dev_priv);
void i915_gem_clflush_object(struct drm_i915_gem_object *obj, bool force);
int __must_check i915_gem_init(struct drm_device *dev);
int __must_check i915_gem_init_hw(struct drm_device *dev);
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);
void i915_gem_init_swizzling(struct drm_i915_private *dev_priv);
void i915_gem_cleanup_engines(struct drm_device *dev);
int __must_check i915_gem_wait_for_idle(struct drm_i915_private *dev_priv,
					unsigned int flags);
int __must_check i915_gem_suspend(struct drm_device *dev);
void i915_gem_resume(struct drm_device *dev);
int __must_check i915_gem_suspend(struct drm_i915_private *dev_priv);
void i915_gem_resume(struct drm_i915_private *dev_priv);
int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
int i915_gem_object_wait(struct drm_i915_gem_object *obj,
			 unsigned int flags,
@@ -3267,7 +3267,7 @@ void i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj,
					 struct sg_table *pages);

/* i915_gem_context.c */
int __must_check i915_gem_context_init(struct drm_device *dev);
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_fini(struct drm_device *dev);
int i915_gem_context_open(struct drm_device *dev, struct drm_file *file);
+13 −15
Original line number Diff line number Diff line
@@ -4194,9 +4194,9 @@ static void assert_kernel_context_is_current(struct drm_i915_private *dev_priv)
		GEM_BUG_ON(engine->last_context != dev_priv->kernel_context);
}

int i915_gem_suspend(struct drm_device *dev)
int i915_gem_suspend(struct drm_i915_private *dev_priv)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct drm_device *dev = &dev_priv->drm;
	int ret;

	intel_suspend_gt_powersave(dev_priv);
@@ -4270,9 +4270,9 @@ int i915_gem_suspend(struct drm_device *dev)
	return ret;
}

void i915_gem_resume(struct drm_device *dev)
void i915_gem_resume(struct drm_i915_private *dev_priv)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct drm_device *dev = &dev_priv->drm;

	WARN_ON(dev_priv->gt.awake);

@@ -4337,9 +4337,8 @@ static void init_unused_rings(struct drm_i915_private *dev_priv)
}

int
i915_gem_init_hw(struct drm_device *dev)
i915_gem_init_hw(struct drm_i915_private *dev_priv)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct intel_engine_cs *engine;
	enum intel_engine_id id;
	int ret;
@@ -4393,10 +4392,10 @@ i915_gem_init_hw(struct drm_device *dev)
			goto out;
	}

	intel_mocs_init_l3cc_table(dev);
	intel_mocs_init_l3cc_table(dev_priv);

	/* We can't enable contexts until all firmware is loaded */
	ret = intel_guc_setup(dev);
	ret = intel_guc_setup(dev_priv);
	if (ret)
		goto out;

@@ -4426,12 +4425,11 @@ bool intel_sanitize_semaphores(struct drm_i915_private *dev_priv, int value)
	return true;
}

int i915_gem_init(struct drm_device *dev)
int i915_gem_init(struct drm_i915_private *dev_priv)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	int ret;

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

	if (!i915.enable_execlists) {
		dev_priv->gt.resume = intel_legacy_submission_resume;
@@ -4455,15 +4453,15 @@ int i915_gem_init(struct drm_device *dev)
	if (ret)
		goto out_unlock;

	ret = i915_gem_context_init(dev);
	ret = i915_gem_context_init(dev_priv);
	if (ret)
		goto out_unlock;

	ret = intel_engines_init(dev);
	ret = intel_engines_init(dev_priv);
	if (ret)
		goto out_unlock;

	ret = i915_gem_init_hw(dev);
	ret = i915_gem_init_hw(dev_priv);
	if (ret == -EIO) {
		/* Allow engine initialisation to fail by marking the GPU as
		 * wedged. But we only want to do this where the GPU is angry,
@@ -4476,7 +4474,7 @@ int i915_gem_init(struct drm_device *dev)

out_unlock:
	intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
	mutex_unlock(&dev->struct_mutex);
	mutex_unlock(&dev_priv->drm.struct_mutex);

	return ret;
}
+14 −17
Original line number Diff line number Diff line
@@ -167,13 +167,12 @@ void i915_gem_context_free(struct kref *ctx_ref)
}

static struct drm_i915_gem_object *
alloc_context_obj(struct drm_device *dev, u64 size)
alloc_context_obj(struct drm_i915_private *dev_priv, u64 size)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct drm_i915_gem_object *obj;
	int ret;

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

	obj = i915_gem_object_create(dev_priv, size);
	if (IS_ERR(obj))
@@ -260,10 +259,9 @@ static int assign_hw_id(struct drm_i915_private *dev_priv, unsigned *out)
}

static struct i915_gem_context *
__create_hw_context(struct drm_device *dev,
__create_hw_context(struct drm_i915_private *dev_priv,
		    struct drm_i915_file_private *file_priv)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct i915_gem_context *ctx;
	int ret;

@@ -287,7 +285,7 @@ __create_hw_context(struct drm_device *dev,
		struct drm_i915_gem_object *obj;
		struct i915_vma *vma;

		obj = alloc_context_obj(dev, dev_priv->hw_context_size);
		obj = alloc_context_obj(dev_priv, dev_priv->hw_context_size);
		if (IS_ERR(obj)) {
			ret = PTR_ERR(obj);
			goto err_out;
@@ -353,21 +351,21 @@ __create_hw_context(struct drm_device *dev,
 * well as an idle case.
 */
static struct i915_gem_context *
i915_gem_create_context(struct drm_device *dev,
i915_gem_create_context(struct drm_i915_private *dev_priv,
			struct drm_i915_file_private *file_priv)
{
	struct i915_gem_context *ctx;

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

	ctx = __create_hw_context(dev, file_priv);
	ctx = __create_hw_context(dev_priv, file_priv);
	if (IS_ERR(ctx))
		return ctx;

	if (USES_FULL_PPGTT(dev)) {
	if (USES_FULL_PPGTT(dev_priv)) {
		struct i915_hw_ppgtt *ppgtt;

		ppgtt = i915_ppgtt_create(to_i915(dev), file_priv, ctx->name);
		ppgtt = i915_ppgtt_create(dev_priv, file_priv, ctx->name);
		if (IS_ERR(ppgtt)) {
			DRM_DEBUG_DRIVER("PPGTT setup failed (%ld)\n",
					 PTR_ERR(ppgtt));
@@ -407,7 +405,7 @@ i915_gem_context_create_gvt(struct drm_device *dev)
	if (ret)
		return ERR_PTR(ret);

	ctx = i915_gem_create_context(dev, NULL);
	ctx = i915_gem_create_context(to_i915(dev), NULL);
	if (IS_ERR(ctx))
		goto out;

@@ -433,9 +431,8 @@ static void i915_gem_context_unpin(struct i915_gem_context *ctx,
	}
}

int i915_gem_context_init(struct drm_device *dev)
int i915_gem_context_init(struct drm_i915_private *dev_priv)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct i915_gem_context *ctx;

	/* Init should only be called once per module load. Eventually the
@@ -469,7 +466,7 @@ int i915_gem_context_init(struct drm_device *dev)
		}
	}

	ctx = i915_gem_create_context(dev, NULL);
	ctx = i915_gem_create_context(dev_priv, NULL);
	if (IS_ERR(ctx)) {
		DRM_ERROR("Failed to create default global context (error %ld)\n",
			  PTR_ERR(ctx));
@@ -551,7 +548,7 @@ int i915_gem_context_open(struct drm_device *dev, struct drm_file *file)
	idr_init(&file_priv->context_idr);

	mutex_lock(&dev->struct_mutex);
	ctx = i915_gem_create_context(dev, file_priv);
	ctx = i915_gem_create_context(to_i915(dev), file_priv);
	mutex_unlock(&dev->struct_mutex);

	if (IS_ERR(ctx)) {
@@ -1034,7 +1031,7 @@ int i915_gem_context_create_ioctl(struct drm_device *dev, void *data,
	if (ret)
		return ret;

	ctx = i915_gem_create_context(dev, file_priv);
	ctx = i915_gem_create_context(to_i915(dev), file_priv);
	mutex_unlock(&dev->struct_mutex);
	if (IS_ERR(ctx))
		return PTR_ERR(ctx);
+4 −6
Original line number Diff line number Diff line
@@ -1485,11 +1485,10 @@ void i915_guc_submission_fini(struct drm_i915_private *dev_priv)

/**
 * intel_guc_suspend() - notify GuC entering suspend state
 * @dev:	drm device
 * @dev_priv:	i915 device private
 */
int intel_guc_suspend(struct drm_device *dev)
int intel_guc_suspend(struct drm_i915_private *dev_priv)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct intel_guc *guc = &dev_priv->guc;
	struct i915_gem_context *ctx;
	u32 data[3];
@@ -1513,11 +1512,10 @@ int intel_guc_suspend(struct drm_device *dev)

/**
 * intel_guc_resume() - notify GuC resuming from suspend state
 * @dev:	drm device
 * @dev_priv:	i915 device private
 */
int intel_guc_resume(struct drm_device *dev)
int intel_guc_resume(struct drm_i915_private *dev_priv)
{
	struct drm_i915_private *dev_priv = to_i915(dev);
	struct intel_guc *guc = &dev_priv->guc;
	struct i915_gem_context *ctx;
	u32 data[3];
Loading