Re: [PATCH RFC 2/4] drm/i915: IOMMU based SVM implementation v13

Chris Wilson
2016-08-15T12:07:04Z

On Mon, Aug 15, 2016 at 02:48:05PM +0300, Mika Kuoppala wrote:
> @@ -891,6 +894,8 @@ struct i915_gem_context {
> unsigned long flags;
> #define CONTEXT_NO_ZEROMAP BIT(0)
> #define CONTEXT_NO_ERROR_CAPTURE BIT(1)
> +#define CONTEXT_SVM BIT(2)
> +
> unsigned hw_id;
> u32 user_handle;
>
> @@ -909,6 +914,9 @@ struct i915_gem_context {
> struct atomic_notifier_head status_notifier;
> bool execlists_force_single_submission;
>
> + u32 pasid; /* svm, 20 bits */

Doesn't this conflict with hw_id for execlists.

> + struct task_struct *task;

We don't need the task, we need the mm.

Holding the task is not sufficient.

> struct list_head link;
>
> u8 remap_slice;
> @@ -2001,6 +2009,8 @@ struct drm_i915_private {
>
> struct i915_runtime_pm pm;
>
> + bool svm_available;

No better home / community?

> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 7e08c774a1aa..45d67b54c018 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -4304,6 +4304,13 @@ i915_gem_init_hw(struct drm_device *dev)
> }
> }
>
> + if (INTEL_GEN(dev) >= 8) {
> + if (intel_init_svm(dev))

init_hw ?

This looks more like one off early driver init.

> + DRM_DEBUG_DRIVER("Initialized Intel SVM support\n");
> + else
> + DRM_ERROR("Failed to enable Intel SVM support\n");
> + }
> +

--
Chris Wilson, Intel Open Source Technology Centre