From: Gerd Hoffmann Date: Fri, 11 Jan 2019 05:37:48 +0000 (+0100) Subject: drm/bochs: move ttm_bo_(un)reserve calls into bochs_bo_{pin, unpin} X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=0bcdda5e35d717a394d8496f4d4181ddd82d0c12;p=openwrt%2Fstaging%2Fblogic.git drm/bochs: move ttm_bo_(un)reserve calls into bochs_bo_{pin, unpin} Signed-off-by: Gerd Hoffmann Acked-by: Daniel Vetter Link: http://patchwork.freedesktop.org/patch/msgid/20190111053752.4004-13-kraxel@redhat.com --- diff --git a/drivers/gpu/drm/bochs/bochs_fbdev.c b/drivers/gpu/drm/bochs/bochs_fbdev.c index 92feb817fffb..ccf783b03822 100644 --- a/drivers/gpu/drm/bochs/bochs_fbdev.c +++ b/drivers/gpu/drm/bochs/bochs_fbdev.c @@ -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)) { diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c index f663c54185bb..fc856a02a271 100644 --- a/drivers/gpu/drm/bochs/bochs_kms.c +++ b/drivers/gpu/drm/bochs/bochs_kms.c @@ -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 = { diff --git a/drivers/gpu/drm/bochs/bochs_mm.c b/drivers/gpu/drm/bochs/bochs_mm.c index 5a0e092847ab..fcbf35456d4e 100644 --- a/drivers/gpu/drm/bochs/bochs_mm.c +++ b/drivers/gpu/drm/bochs/bochs_mm.c @@ -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;