drm/bochs: move ttm_bo_(un)reserve calls into bochs_bo_{pin, unpin}
authorGerd Hoffmann <kraxel@redhat.com>
Fri, 11 Jan 2019 05:37:48 +0000 (06:37 +0100)
committerGerd Hoffmann <kraxel@redhat.com>
Mon, 14 Jan 2019 07:39:14 +0000 (08:39 +0100)
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-13-kraxel@redhat.com
drivers/gpu/drm/bochs/bochs_fbdev.c
drivers/gpu/drm/bochs/bochs_kms.c
drivers/gpu/drm/bochs/bochs_mm.c

index 92feb81..ccf783b 100644 (file)
@@ -77,14 +77,9 @@ static int bochsfb_create(struct drm_fb_helper *helper,
 
        bo = gem_to_bochs_bo(gobj);
 
-       ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
-       if (ret)
-               return ret;
-
        ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
        if (ret) {
                DRM_ERROR("failed to pin fbcon\n");
-               ttm_bo_unreserve(&bo->bo);
                return ret;
        }
 
@@ -92,12 +87,9 @@ static int bochsfb_create(struct drm_fb_helper *helper,
                          &bo->kmap);
        if (ret) {
                DRM_ERROR("failed to kmap fbcon\n");
-               ttm_bo_unreserve(&bo->bo);
                return ret;
        }
 
-       ttm_bo_unreserve(&bo->bo);
-
        /* init fb device */
        info = drm_fb_helper_alloc_fbi(helper);
        if (IS_ERR(info)) {
index f663c54..fc856a0 100644 (file)
@@ -92,34 +92,22 @@ static int bochs_plane_prepare_fb(struct drm_plane *plane,
                                struct drm_plane_state *new_state)
 {
        struct bochs_bo *bo;
-       int ret;
 
        if (!new_state->fb)
                return 0;
        bo = gem_to_bochs_bo(new_state->fb->obj[0]);
-
-       ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
-       if (ret)
-               return ret;
-       ret = bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
-       ttm_bo_unreserve(&bo->bo);
-       return ret;
+       return bochs_bo_pin(bo, TTM_PL_FLAG_VRAM);
 }
 
 static void bochs_plane_cleanup_fb(struct drm_plane *plane,
                                   struct drm_plane_state *old_state)
 {
        struct bochs_bo *bo;
-       int ret;
 
        if (!old_state->fb)
                return;
        bo = gem_to_bochs_bo(old_state->fb->obj[0]);
-       ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
-       if (ret)
-               return;
        bochs_bo_unpin(bo);
-       ttm_bo_unreserve(&bo->bo);
 }
 
 static const struct drm_plane_helper_funcs bochs_plane_helper_funcs = {
index 5a0e092..fcbf354 100644 (file)
@@ -223,7 +223,11 @@ int bochs_bo_pin(struct bochs_bo *bo, u32 pl_flag)
        bochs_ttm_placement(bo, pl_flag);
        for (i = 0; i < bo->placement.num_placement; i++)
                bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT;
+       ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
+       if (ret)
+               return ret;
        ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx);
+       ttm_bo_unreserve(&bo->bo);
        if (ret)
                return ret;
 
@@ -247,7 +251,11 @@ int bochs_bo_unpin(struct bochs_bo *bo)
 
        for (i = 0; i < bo->placement.num_placement; i++)
                bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT;
+       ret = ttm_bo_reserve(&bo->bo, true, false, NULL);
+       if (ret)
+               return ret;
        ret = ttm_bo_validate(&bo->bo, &bo->placement, &ctx);
+       ttm_bo_unreserve(&bo->bo);
        if (ret)
                return ret;