forked from Minki/linux
drm/bochs: move ttm_bo_(un)reserve calls into bochs_bo_{pin, unpin}
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
This commit is contained in:
parent
dde8fb5555
commit
0bcdda5e35
@ -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)) {
|
||||
|
@ -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 = {
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user