diff mbox series

[6/6] drm/i915/execlists: Don't allocate scratch

Message ID 20190926100635.9416-6-michal.winiarski@intel.com (mailing list archive)
State New, archived
Headers show
Series [1/6] drm/i915: Define explicit wedged on init reset state | expand

Commit Message

Michał Winiarski Sept. 26, 2019, 10:06 a.m. UTC
We're no longer using it on execlists platforms. There's no point in
allocating it.

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 2 --
 drivers/gpu/drm/i915/gt/intel_gt.c        | 6 ++++++
 2 files changed, 6 insertions(+), 2 deletions(-)

Comments

Chris Wilson Sept. 26, 2019, 10:34 a.m. UTC | #1
Quoting Michał Winiarski (2019-09-26 11:06:35)
> We're no longer using it on execlists platforms. There's no point in
> allocating it.
> 
> Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/gt/intel_engine_cs.c | 2 --
>  drivers/gpu/drm/i915/gt/intel_gt.c        | 6 ++++++
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> index f451d5076bde..a4e5aceff678 100644
> --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> @@ -669,8 +669,6 @@ static int measure_breadcrumb_dw(struct intel_engine_cs *engine)
>         struct measure_breadcrumb *frame;
>         int dw = -ENOMEM;
>  
> -       GEM_BUG_ON(!engine->gt->scratch);
> -
>         frame = kzalloc(sizeof(*frame), GFP_KERNEL);
>         if (!frame)
>                 return -ENOMEM;
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
> index eef9bdae8ebb..e135a66b7242 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_gt.c
> @@ -329,6 +329,9 @@ static int intel_gt_init_scratch(struct intel_gt *gt, unsigned int size)
>         struct i915_vma *vma;
>         int ret;
>  
> +       if (HAS_EXECLISTS(i915))
> +               return 0;

Push the decision to the backends then, and

if (gt->scratch)
	return;

> +
>         obj = i915_gem_object_create_stolen(i915, size);
>         if (!obj)
>                 obj = i915_gem_object_create_internal(i915, size);
> @@ -358,6 +361,9 @@ static int intel_gt_init_scratch(struct intel_gt *gt, unsigned int size)
>  
>  static void intel_gt_fini_scratch(struct intel_gt *gt)
>  {
> +       if (HAS_EXECLISTS(gt->i915))
> +               return;

Not required, as release NULL is a no-op. After pushing the init to the
backends, we keep the central free at the end, agnostic to whether or not
we needed the scratch.

> +
>         i915_vma_unpin_and_release(&gt->scratch, 0);
>  }
>  
> -- 
> 2.21.0
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index f451d5076bde..a4e5aceff678 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -669,8 +669,6 @@  static int measure_breadcrumb_dw(struct intel_engine_cs *engine)
 	struct measure_breadcrumb *frame;
 	int dw = -ENOMEM;
 
-	GEM_BUG_ON(!engine->gt->scratch);
-
 	frame = kzalloc(sizeof(*frame), GFP_KERNEL);
 	if (!frame)
 		return -ENOMEM;
diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
index eef9bdae8ebb..e135a66b7242 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -329,6 +329,9 @@  static int intel_gt_init_scratch(struct intel_gt *gt, unsigned int size)
 	struct i915_vma *vma;
 	int ret;
 
+	if (HAS_EXECLISTS(i915))
+		return 0;
+
 	obj = i915_gem_object_create_stolen(i915, size);
 	if (!obj)
 		obj = i915_gem_object_create_internal(i915, size);
@@ -358,6 +361,9 @@  static int intel_gt_init_scratch(struct intel_gt *gt, unsigned int size)
 
 static void intel_gt_fini_scratch(struct intel_gt *gt)
 {
+	if (HAS_EXECLISTS(gt->i915))
+		return;
+
 	i915_vma_unpin_and_release(&gt->scratch, 0);
 }