diff mbox

[1/2] drm/i915: Keep local modparams copy for mock selftests

Message ID 20180712140719.14215-1-jakub.bartminski@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Bartminski, Jakub July 12, 2018, 2:07 p.m. UTC
Some functions used within mock selftests may expect platform-dependent
automatic modparams parameters to have already been resolved, resulting
in failed assertions.
Backing up the modparams before mock selftests and manually setting
offending parameters inside the affected selftests should fix the issue.

Signed-off-by: Jakub Bartmiński <jakub.bartminski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
---
 drivers/gpu/drm/i915/i915_pci.c                   | 10 ++++++++++
 drivers/gpu/drm/i915/selftests/i915_gem_context.c |  6 ++++++
 2 files changed, 16 insertions(+)

Comments

Chris Wilson July 12, 2018, 2:26 p.m. UTC | #1
Quoting Jakub Bartmiński (2018-07-12 15:07:18)
> Some functions used within mock selftests may expect platform-dependent
> automatic modparams parameters to have already been resolved, resulting
> in failed assertions.
> Backing up the modparams before mock selftests and manually setting
> offending parameters inside the affected selftests should fix the issue.

I think hiding under a rock until it's weened off the modparam abuse and
can use a mock device is my favourite strategy here.
-Chris
Daniel Vetter July 12, 2018, 2:49 p.m. UTC | #2
On Thu, Jul 12, 2018 at 03:26:41PM +0100, Chris Wilson wrote:
> Quoting Jakub Bartmiński (2018-07-12 15:07:18)
> > Some functions used within mock selftests may expect platform-dependent
> > automatic modparams parameters to have already been resolved, resulting
> > in failed assertions.
> > Backing up the modparams before mock selftests and manually setting
> > offending parameters inside the affected selftests should fix the issue.
> 
> I think hiding under a rock until it's weened off the modparam abuse and
> can use a mock device is my favourite strategy here.

I think for reasons we want a local copy of the modparams in i915_dev.
Then we could sanitize/mock them at well in per-instances mocks even.
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 55543f1b0236..9e41851f5ca2 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -733,11 +733,21 @@  static int __init i915_init(void)
 {
 	bool use_kms = true;
 	int err;
+	struct i915_params *backup_modparams;
+
+	backup_modparams = kmalloc(sizeof(*backup_modparams), GFP_KERNEL);
+	if (!backup_modparams)
+		return -ENOMEM;
+	memcpy(backup_modparams, &i915_modparams, sizeof(*backup_modparams));
 
 	err = i915_mock_selftests();
 	if (err)
 		return err > 0 ? 0 : err;
 
+	/* Revert any modparams modifications made inside mock selftests */
+	memcpy(&i915_modparams, backup_modparams, sizeof(*backup_modparams));
+	kfree(backup_modparams);
+
 	/*
 	 * Enable KMS by default, unless explicitly overriden by
 	 * either the i915.modeset prarameter or by the
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_context.c b/drivers/gpu/drm/i915/selftests/i915_gem_context.c
index ab2590242033..de6aad832ac9 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_context.c
@@ -597,6 +597,12 @@  int i915_gem_context_mock_selftests(void)
 	if (!i915)
 		return -ENOMEM;
 
+	/*
+	 * Platform defaults have not been resolved yet, so we need to prevent
+	 * assertion failure on an unresolved enable_guc.
+	 */
+	i915_modparams.enable_guc = 0;
+
 	err = i915_subtests(tests, i915);
 
 	drm_dev_put(&i915->drm);