OSDN Git Service

drm/ttm: cleanup ttm_tt_create
authorChristian König <christian.koenig@amd.com>
Thu, 22 Feb 2018 07:54:57 +0000 (08:54 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 27 Feb 2018 04:09:46 +0000 (23:09 -0500)
Cleanup ttm_tt_create a bit.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Roger He <Hongbo.He@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/ttm/ttm_tt.c

index 917942d..0ee3b8f 100644 (file)
 int ttm_tt_create(struct ttm_buffer_object *bo, bool zero_alloc)
 {
        struct ttm_bo_device *bdev = bo->bdev;
-       int ret = 0;
        uint32_t page_flags = 0;
 
        reservation_object_assert_held(bo->resv);
-       bo->ttm = NULL;
 
        if (bdev->need_dma32)
                page_flags |= TTM_PAGE_FLAG_DMA32;
@@ -69,28 +67,27 @@ int ttm_tt_create(struct ttm_buffer_object *bo, bool zero_alloc)
        case ttm_bo_type_device:
                if (zero_alloc)
                        page_flags |= TTM_PAGE_FLAG_ZERO_ALLOC;
+               break;
        case ttm_bo_type_kernel:
-               bo->ttm = bdev->driver->ttm_tt_create(bdev, bo->num_pages << PAGE_SHIFT,
-                                                     page_flags);
-               if (unlikely(bo->ttm == NULL))
-                       ret = -ENOMEM;
                break;
        case ttm_bo_type_sg:
-               bo->ttm = bdev->driver->ttm_tt_create(bdev, bo->num_pages << PAGE_SHIFT,
-                                                     page_flags | TTM_PAGE_FLAG_SG);
-               if (unlikely(bo->ttm == NULL)) {
-                       ret = -ENOMEM;
-                       break;
-               }
-               bo->ttm->sg = bo->sg;
+               page_flags |= TTM_PAGE_FLAG_SG;
                break;
        default:
+               bo->ttm = NULL;
                pr_err("Illegal buffer object type\n");
-               ret = -EINVAL;
-               break;
+               return -EINVAL;
        }
 
-       return ret;
+       bo->ttm = bdev->driver->ttm_tt_create(bdev, bo->num_pages << PAGE_SHIFT,
+                                             page_flags);
+       if (unlikely(bo->ttm == NULL))
+               return -ENOMEM;
+
+       if (bo->type == ttm_bo_type_sg)
+               bo->ttm->sg = bo->sg;
+
+       return 0;
 }
 
 /**