drm/i915/selftests: Drop struct_mutex around lowlevel pggtt allocation
For a ppgtt that we are constructing, there is no struct_mutex dependence so skip it. In the process, also ping the scheduler frequently to try and avoid the NMI watchdog. v2: gen6 requires struct_mutex to clean up (currently) Suggested-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> References: https://bugs.freedesktop.org/show_bug.cgi?id=107094 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180703135331.12265-1-chris@chris-wilson.co.uk
This commit is contained in:
parent
38b7fb0b2a
commit
1f6f00238a
@ -156,12 +156,9 @@ static int igt_ppgtt_alloc(void *arg)
|
||||
if (!USES_PPGTT(dev_priv))
|
||||
return 0;
|
||||
|
||||
mutex_lock(&dev_priv->drm.struct_mutex);
|
||||
ppgtt = __hw_ppgtt_create(dev_priv);
|
||||
if (IS_ERR(ppgtt)) {
|
||||
err = PTR_ERR(ppgtt);
|
||||
goto err_unlock;
|
||||
}
|
||||
if (IS_ERR(ppgtt))
|
||||
return PTR_ERR(ppgtt);
|
||||
|
||||
if (!ppgtt->vm.allocate_va_range)
|
||||
goto err_ppgtt_cleanup;
|
||||
@ -180,6 +177,8 @@ static int igt_ppgtt_alloc(void *arg)
|
||||
goto err_ppgtt_cleanup;
|
||||
}
|
||||
|
||||
cond_resched();
|
||||
|
||||
ppgtt->vm.clear_range(&ppgtt->vm, 0, size);
|
||||
}
|
||||
|
||||
@ -197,13 +196,15 @@ static int igt_ppgtt_alloc(void *arg)
|
||||
}
|
||||
goto err_ppgtt_cleanup;
|
||||
}
|
||||
|
||||
cond_resched();
|
||||
}
|
||||
|
||||
err_ppgtt_cleanup:
|
||||
mutex_lock(&dev_priv->drm.struct_mutex);
|
||||
ppgtt->vm.cleanup(&ppgtt->vm);
|
||||
kfree(ppgtt);
|
||||
err_unlock:
|
||||
mutex_unlock(&dev_priv->drm.struct_mutex);
|
||||
kfree(ppgtt);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user