On Tue, Aug 31, 2021 at 01:21:07PM +0200, Christian König wrote: > More flexible than the busy placements. > > Signed-off-by: Christian König <christian.koenig@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) Using an enum for this (with BIT() macro or so) and then slapping kerneldoc on top would be nice. That way you can also use the same enum in parameters and structures and it's all a bit easier to find and connect. Otherwise I think this series makes sense, but probably better for nouveau folks to do review/testing. -Daniel > + > /** > * struct ttm_place > * > -- > 2.25.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch