diff mbox series

[1/2] drm/i915/gt: Skip global serialisation of clear_range for bxt vtd

Message ID 20200130092239.1743672-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show
Series [1/2] drm/i915/gt: Skip global serialisation of clear_range for bxt vtd | expand

Commit Message

Chris Wilson Jan. 30, 2020, 9:22 a.m. UTC
VT'd on Broxton and on Braswell require serialisation of GGTT updates.
However, it seems to only be required for insertion, so drop the
complication and heavyweight stop_machine() for clears. The range will
be serialised again before use.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/gt/intel_ggtt.c | 27 ---------------------------
 1 file changed, 27 deletions(-)

Comments

Mika Kuoppala Jan. 30, 2020, 11:10 a.m. UTC | #1
Chris Wilson <chris@chris-wilson.co.uk> writes:

> VT'd on Broxton and on Braswell require serialisation of GGTT updates.
> However, it seems to only be required for insertion, so drop the
> complication and heavyweight stop_machine() for clears. The range will
> be serialised again before use.

This makes much sense.

>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>


Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/gt/intel_ggtt.c | 27 ---------------------------
>  1 file changed, 27 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt.c b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> index 79096722ce16..81a63f7bc6c4 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt.c
> @@ -350,31 +350,6 @@ static void bxt_vtd_ggtt_insert_entries__BKL(struct i915_address_space *vm,
>  	stop_machine(bxt_vtd_ggtt_insert_entries__cb, &arg, NULL);
>  }
>  
> -struct clear_range {
> -	struct i915_address_space *vm;
> -	u64 start;
> -	u64 length;
> -};
> -
> -static int bxt_vtd_ggtt_clear_range__cb(void *_arg)
> -{
> -	struct clear_range *arg = _arg;
> -
> -	gen8_ggtt_clear_range(arg->vm, arg->start, arg->length);
> -	bxt_vtd_ggtt_wa(arg->vm);
> -
> -	return 0;
> -}
> -
> -static void bxt_vtd_ggtt_clear_range__BKL(struct i915_address_space *vm,
> -					  u64 start,
> -					  u64 length)
> -{
> -	struct clear_range arg = { vm, start, length };
> -
> -	stop_machine(bxt_vtd_ggtt_clear_range__cb, &arg, NULL);
> -}
> -
>  static void gen6_ggtt_clear_range(struct i915_address_space *vm,
>  				  u64 start, u64 length)
>  {
> @@ -879,8 +854,6 @@ static int gen8_gmch_probe(struct i915_ggtt *ggtt)
>  	    IS_CHERRYVIEW(i915) /* fails with concurrent use/update */) {
>  		ggtt->vm.insert_entries = bxt_vtd_ggtt_insert_entries__BKL;
>  		ggtt->vm.insert_page    = bxt_vtd_ggtt_insert_page__BKL;
> -		if (ggtt->vm.clear_range != nop_clear_range)
> -			ggtt->vm.clear_range = bxt_vtd_ggtt_clear_range__BKL;
>  	}
>  
>  	ggtt->invalidate = gen8_ggtt_invalidate;
> -- 
> 2.25.0
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt.c b/drivers/gpu/drm/i915/gt/intel_ggtt.c
index 79096722ce16..81a63f7bc6c4 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt.c
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt.c
@@ -350,31 +350,6 @@  static void bxt_vtd_ggtt_insert_entries__BKL(struct i915_address_space *vm,
 	stop_machine(bxt_vtd_ggtt_insert_entries__cb, &arg, NULL);
 }
 
-struct clear_range {
-	struct i915_address_space *vm;
-	u64 start;
-	u64 length;
-};
-
-static int bxt_vtd_ggtt_clear_range__cb(void *_arg)
-{
-	struct clear_range *arg = _arg;
-
-	gen8_ggtt_clear_range(arg->vm, arg->start, arg->length);
-	bxt_vtd_ggtt_wa(arg->vm);
-
-	return 0;
-}
-
-static void bxt_vtd_ggtt_clear_range__BKL(struct i915_address_space *vm,
-					  u64 start,
-					  u64 length)
-{
-	struct clear_range arg = { vm, start, length };
-
-	stop_machine(bxt_vtd_ggtt_clear_range__cb, &arg, NULL);
-}
-
 static void gen6_ggtt_clear_range(struct i915_address_space *vm,
 				  u64 start, u64 length)
 {
@@ -879,8 +854,6 @@  static int gen8_gmch_probe(struct i915_ggtt *ggtt)
 	    IS_CHERRYVIEW(i915) /* fails with concurrent use/update */) {
 		ggtt->vm.insert_entries = bxt_vtd_ggtt_insert_entries__BKL;
 		ggtt->vm.insert_page    = bxt_vtd_ggtt_insert_page__BKL;
-		if (ggtt->vm.clear_range != nop_clear_range)
-			ggtt->vm.clear_range = bxt_vtd_ggtt_clear_range__BKL;
 	}
 
 	ggtt->invalidate = gen8_ggtt_invalidate;