[Intel-gfx] [PATCH 1/2] drm/i915/gt: Skip global serialisation of clear_range for bxt vtd
Mika Kuoppala
mika.kuoppala at linux.intel.com
Thu Jan 30 11:10:32 UTC 2020
Chris Wilson <chris at 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 at chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala at 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
More information about the Intel-gfx
mailing list