Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0bcdda5e authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

drm/bochs: move ttm_bo_(un)reserve calls into bochs_bo_{pin, unpin}

parent dde8fb55
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -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)) {
+1 −13
Original line number Diff line number Diff line
@@ -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 = {
+8 −0
Original line number Diff line number Diff line
@@ -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;