Am 08.02.2018 um 10:05 schrieb Roger He: > for saving memory and more bit flag can be used in future > > Signed-off-by: Roger He <Hongbo.He at amd.com> Reviewed-by: Christian König <christian.koenig at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 4 ++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 4 ++-- > drivers/gpu/drm/ttm/ttm_bo.c | 3 ++- > include/drm/ttm/ttm_bo_api.h | 7 +++++-- > 4 files changed, 11 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > index eaa3cb0..dc34b50 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > @@ -346,8 +346,8 @@ static int amdgpu_cs_bo_validate(struct amdgpu_cs_parser *p, > struct ttm_operation_ctx ctx = { > .interruptible = true, > .no_wait_gpu = false, > - .allow_reserved_eviction = false, > - .resv = bo->tbo.resv > + .resv = bo->tbo.resv, > + .flags = 0 > }; > uint32_t domain; > int r; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > index 512612e..0338ef6 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c > @@ -341,8 +341,8 @@ static int amdgpu_bo_do_create(struct amdgpu_device *adev, > struct ttm_operation_ctx ctx = { > .interruptible = !kernel, > .no_wait_gpu = false, > - .allow_reserved_eviction = true, > - .resv = resv > + .resv = resv, > + .flags = TTM_OPT_FLAG_ALLOW_RES_EVICT > }; > struct amdgpu_bo *bo; > enum ttm_bo_type type; > diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c > index d90b1cf1..a907311 100644 > --- a/drivers/gpu/drm/ttm/ttm_bo.c > +++ b/drivers/gpu/drm/ttm/ttm_bo.c > @@ -730,7 +730,8 @@ static bool ttm_bo_evict_swapout_allowable(struct ttm_buffer_object *bo, > *locked = false; > if (bo->resv == ctx->resv) { > reservation_object_assert_held(bo->resv); > - if (ctx->allow_reserved_eviction || !list_empty(&bo->ddestroy)) > + if (ctx->flags & TTM_OPT_FLAG_ALLOW_RES_EVICT > + || !list_empty(&bo->ddestroy)) > ret = true; > } else { > *locked = reservation_object_trylock(bo->resv); > diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h > index 2cd025c..872ff6c 100644 > --- a/include/drm/ttm/ttm_bo_api.h > +++ b/include/drm/ttm/ttm_bo_api.h > @@ -263,8 +263,8 @@ struct ttm_bo_kmap_obj { > * > * @interruptible: Sleep interruptible if sleeping. > * @no_wait_gpu: Return immediately if the GPU is busy. > - * @allow_reserved_eviction: Allow eviction of reserved BOs. > * @resv: Reservation object to allow reserved evictions with. > + * @flags: Including the following flags > * > * Context for TTM operations like changing buffer placement or general memory > * allocation. > @@ -272,11 +272,14 @@ struct ttm_bo_kmap_obj { > struct ttm_operation_ctx { > bool interruptible; > bool no_wait_gpu; > - bool allow_reserved_eviction; > struct reservation_object *resv; > uint64_t bytes_moved; > + uint32_t flags; > }; > > +/* Allow eviction of reserved BOs */ > +#define TTM_OPT_FLAG_ALLOW_RES_EVICT 0x1 > + > /** > * ttm_bo_reference - reference a struct ttm_buffer_object > *