@@ -133,9 +133,12 @@ int radeon_bo_create(struct radeon_device *rdev,
struct dma_resv *resv,
struct radeon_bo **bo_ptr)
{
- struct radeon_bo *bo;
- enum ttm_bo_type type;
unsigned long page_align = roundup(byte_align, PAGE_SIZE) >> PAGE_SHIFT;
+
+ /* Kernel allocation are uninterruptible */
+ struct ttm_operation_ctx ctx = { !kernel, false };
+ enum ttm_bo_type type;
+ struct radeon_bo *bo;
int r;
size = ALIGN(size, PAGE_SIZE);
@@ -200,11 +203,13 @@ int radeon_bo_create(struct radeon_device *rdev,
#endif
radeon_ttm_placement_from_domain(bo, domain);
- /* Kernel allocation are uninterruptible */
down_read(&rdev->pm.mclk_lock);
- r = ttm_bo_init(&rdev->mman.bdev, &bo->tbo, size, type,
- &bo->placement, page_align, !kernel, sg, resv,
- &radeon_ttm_bo_destroy);
+ r = ttm_bo_init_reserved(&rdev->mman.bdev, &bo->tbo, size, type,
+ &bo->placement, page_align, &ctx, sg, resv,
+ &radeon_ttm_bo_destroy);
+ if (!r)
+ ttm_bo_unreserve(&bo->tbo);
+
up_read(&rdev->pm.mclk_lock);
if (unlikely(r != 0)) {
return r;
Use the new interface instead. Signed-off-by: Christian König <christian.koenig@amd.com> --- drivers/gpu/drm/radeon/radeon_object.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)