diff mbox series

[1/2] drm/i915: Allow evicting to use the requested placement

Message ID 20240804091851.122186-2-david@davidgow.net (mailing list archive)
State New, archived
Headers show
Series drm/i915: Fix ttm small BAR placement handling | expand

Commit Message

David Gow Aug. 4, 2024, 9:18 a.m. UTC
In commit a78a8da51b36 ("drm/ttm: replace busy placement with flags v6"),
the old system of having a separate placement list (for placements
which should be used without eviction) and a 'busy' placement list (for
placements which should be attempted if eviction is required) was
replaced with a new one where placements could be marked 'FALLBACK' (to
be attempted if eviction is required) or 'DESIRED' (to be attempted
first, but not if eviction is required).

i915 had always included the requested placement in the list of
'busy' placements: i.e., the placement could be used either if eviction
is required or not. But when the new system was put in place, the
requested (first) placement was marked 'DESIRED', so would never be used
if eviction became necessary. While a bug in the original commit
prevented this flag from working, when this was fixed in
4a0e7b3c ("drm/i915: fix applying placement flag"), it caused long hangs
on DG2 systems with small BAR.

Don't mark the requested placement DESIRED (or FALLBACK), allowing it to
be used in both situations. This matches the old behaviour, and resolves
the hangs.

Thanks to Justin Brewer for bisecting the issue.

Fixes: a78a8da51b36 ("drm/ttm: replace busy placement with flags v6")
Fixes: 4a0e7b3c3753 ("drm/i915: fix applying placement flag")
Link: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11255
Signed-off-by: David Gow <david@davidgow.net>
---
 drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Cavitt, Jonathan Aug. 5, 2024, 8:09 p.m. UTC | #1
-----Original Message-----
From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of David Gow
Sent: Sunday, August 4, 2024 2:19 AM
To: Christian König <ckoenig.leichtzumerken@gmail.com>; Somalapuram Amaranath <Amaranath.Somalapuram@amd.com>; Thomas Hellström <thomas.hellstrom@linux.intel.com>; De Marchi, Lucas <lucas.demarchi@intel.com>; Andi Shyti <andi.shyti@linux.intel.com>; Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Gow <david@davidgow.net>; Jani Nikula <jani.nikula@linux.intel.com>; Joonas Lahtinen <joonas.lahtinen@linux.intel.com>; Vivi, Rodrigo <rodrigo.vivi@intel.com>; Tvrtko Ursulin <tursulin@ursulin.net>; Ville Syrjälä <ville.syrjala@linux.intel.com>; intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; linux-kernel@vger.kernel.org
Subject: [PATCH 1/2] drm/i915: Allow evicting to use the requested placement
> 
> In commit a78a8da51b36 ("drm/ttm: replace busy placement with flags v6"),
> the old system of having a separate placement list (for placements
> which should be used without eviction) and a 'busy' placement list (for
> placements which should be attempted if eviction is required) was
> replaced with a new one where placements could be marked 'FALLBACK' (to
> be attempted if eviction is required) or 'DESIRED' (to be attempted
> first, but not if eviction is required).
> 
> i915 had always included the requested placement in the list of
> 'busy' placements: i.e., the placement could be used either if eviction
> is required or not. But when the new system was put in place, the
> requested (first) placement was marked 'DESIRED', so would never be used
> if eviction became necessary. While a bug in the original commit
> prevented this flag from working, when this was fixed in
> 4a0e7b3c ("drm/i915: fix applying placement flag"), it caused long hangs
> on DG2 systems with small BAR.
> 
> Don't mark the requested placement DESIRED (or FALLBACK), allowing it to
> be used in both situations. This matches the old behaviour, and resolves
> the hangs.
> 
> Thanks to Justin Brewer for bisecting the issue.
> 
> Fixes: a78a8da51b36 ("drm/ttm: replace busy placement with flags v6")
> Fixes: 4a0e7b3c3753 ("drm/i915: fix applying placement flag")
> Link: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11255
> Signed-off-by: David Gow <david@davidgow.net>

Thank you for the thorough write-up of this issue.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt
 
> ---
>  drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> index e6f177183c0f..fb848fd8ba15 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
> @@ -165,7 +165,6 @@ i915_ttm_placement_from_obj(const struct drm_i915_gem_object *obj,
>  	i915_ttm_place_from_region(num_allowed ? obj->mm.placements[0] :
>  				   obj->mm.region, &places[0], obj->bo_offset,
>  				   obj->base.size, flags);
> -	places[0].flags |= TTM_PL_FLAG_DESIRED;
>  
>  	/* Cache this on object? */
>  	for (i = 0; i < num_allowed; ++i) {
> -- 
> 2.46.0
> 
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
index e6f177183c0f..fb848fd8ba15 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
@@ -165,7 +165,6 @@  i915_ttm_placement_from_obj(const struct drm_i915_gem_object *obj,
 	i915_ttm_place_from_region(num_allowed ? obj->mm.placements[0] :
 				   obj->mm.region, &places[0], obj->bo_offset,
 				   obj->base.size, flags);
-	places[0].flags |= TTM_PL_FLAG_DESIRED;
 
 	/* Cache this on object? */
 	for (i = 0; i < num_allowed; ++i) {