On Tue, Aug 31, 2021 at 07:21:07PM +0800, Christian König wrote: > More flexible than the busy placements. > > Signed-off-by: Christian König <christian.koenig@xxxxxxx> Patch 2 -> 5 are Acked-by: Huang Rui <ray.huang@xxxxxxx> > --- > drivers/gpu/drm/ttm/ttm_bo.c | 8 +++++++- > include/drm/ttm/ttm_placement.h | 6 ++++++ > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c > index 0a3127436f61..c7034040c67f 100644 > --- a/drivers/gpu/drm/ttm/ttm_bo.c > +++ b/drivers/gpu/drm/ttm/ttm_bo.c > @@ -834,6 +834,9 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo, > const struct ttm_place *place = &placement->placement[i]; > struct ttm_resource_manager *man; > > + if (place->flags & TTM_PL_FLAG_BUSY) > + continue; > + > man = ttm_manager_type(bdev, place->mem_type); > if (!man || !ttm_resource_manager_used(man)) > continue; > @@ -860,6 +863,9 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo, > const struct ttm_place *place = &placement->busy_placement[i]; > struct ttm_resource_manager *man; > > + if (place->flags & TTM_PL_FLAG_IDLE) > + continue; > + > man = ttm_manager_type(bdev, place->mem_type); > if (!man || !ttm_resource_manager_used(man)) > continue; > @@ -869,7 +875,7 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo, > if (likely(!ret)) > return 0; > > - if (ret && ret != -EBUSY) > + if (ret != -EBUSY) > goto error; > } > > diff --git a/include/drm/ttm/ttm_placement.h b/include/drm/ttm/ttm_placement.h > index 8995c9e4ec1b..63f7217354c0 100644 > --- a/include/drm/ttm/ttm_placement.h > +++ b/include/drm/ttm/ttm_placement.h > @@ -53,6 +53,12 @@ > /* For multihop handling */ > #define TTM_PL_FLAG_TEMPORARY (1 << 2) > > +/* Placement is only used when we are evicting */ > +#define TTM_PL_FLAG_BUSY (1 << 3) > + > +/* Placement is only used when we are not evicting */ > +#define TTM_PL_FLAG_IDLE (1 << 4) > + > /** > * struct ttm_place > * > -- > 2.25.1 >