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

Commit 20dfbde4 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Wrap vma->pin_count accessors with small inline helpers



In the next few patches, the VMA pinning API is overhauled and to reduce
the churn we pull out the update to the accessors into a prep patch.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470324762-2545-14-git-send-email-chris@chris-wilson.co.uk
parent de180033
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -168,7 +168,7 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj)
	if (obj->base.name)
		seq_printf(m, " (name: %d)", obj->base.name);
	list_for_each_entry(vma, &obj->vma_list, obj_link) {
		if (vma->pin_count > 0)
		if (i915_vma_is_pinned(vma))
			pin_count++;
	}
	seq_printf(m, " (pinned x %d)", pin_count);
+13 −13
Original line number Diff line number Diff line
@@ -153,10 +153,10 @@ i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data,
	pinned = 0;
	mutex_lock(&dev->struct_mutex);
	list_for_each_entry(vma, &ggtt->base.active_list, vm_link)
		if (vma->pin_count)
		if (i915_vma_is_pinned(vma))
			pinned += vma->node.size;
	list_for_each_entry(vma, &ggtt->base.inactive_list, vm_link)
		if (vma->pin_count)
		if (i915_vma_is_pinned(vma))
			pinned += vma->node.size;
	mutex_unlock(&dev->struct_mutex);

@@ -2809,7 +2809,7 @@ static void i915_gem_object_finish_gtt(struct drm_i915_gem_object *obj)

static void __i915_vma_iounmap(struct i915_vma *vma)
{
	GEM_BUG_ON(vma->pin_count);
	GEM_BUG_ON(i915_vma_is_pinned(vma));

	if (vma->iomap == NULL)
		return;
@@ -2836,7 +2836,7 @@ int i915_vma_unbind(struct i915_vma *vma)
		 * take a pin on the vma so that the second unbind is
		 * aborted.
		 */
		vma->pin_count++;
		__i915_vma_pin(vma);

		for_each_active(active, idx) {
			ret = i915_gem_active_retire(&vma->last_read[idx],
@@ -2845,14 +2845,14 @@ int i915_vma_unbind(struct i915_vma *vma)
				break;
		}

		vma->pin_count--;
		__i915_vma_unpin(vma);
		if (ret)
			return ret;

		GEM_BUG_ON(i915_vma_is_active(vma));
	}

	if (vma->pin_count)
	if (i915_vma_is_pinned(vma))
		return -EBUSY;

	if (!drm_mm_node_allocated(&vma->node))
@@ -3297,7 +3297,7 @@ int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj,
		if (!drm_mm_node_allocated(&vma->node))
			continue;

		if (vma->pin_count) {
		if (i915_vma_is_pinned(vma)) {
			DRM_DEBUG("can not change the cache level of pinned objects\n");
			return -EBUSY;
		}
@@ -3734,11 +3734,11 @@ i915_gem_object_do_pin(struct drm_i915_gem_object *obj,
			  i915_gem_obj_to_vma(obj, vm);

	if (vma) {
		if (WARN_ON(vma->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT))
		if (WARN_ON(i915_vma_pin_count(vma) == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT))
			return -EBUSY;

		if (i915_vma_misplaced(vma, size, alignment, flags)) {
			WARN(vma->pin_count,
			WARN(i915_vma_is_pinned(vma),
			     "bo is already pinned in %s with incorrect alignment:"
			     " offset=%08x %08x, req.alignment=%llx, req.map_and_fenceable=%d,"
			     " obj->map_and_fenceable=%d\n",
@@ -3776,7 +3776,7 @@ i915_gem_object_do_pin(struct drm_i915_gem_object *obj,

	GEM_BUG_ON(i915_vma_misplaced(vma, size, alignment, flags));

	vma->pin_count++;
	__i915_vma_pin(vma);
	return 0;
}

@@ -3815,10 +3815,10 @@ i915_gem_object_ggtt_unpin_view(struct drm_i915_gem_object *obj,
{
	struct i915_vma *vma = i915_gem_obj_to_ggtt_view(obj, view);

	WARN_ON(vma->pin_count == 0);
	WARN_ON(!i915_vma_is_pinned(vma));
	WARN_ON(!i915_gem_obj_ggtt_bound_view(obj, view));

	--vma->pin_count;
	__i915_vma_unpin(vma);
}

int
@@ -4686,7 +4686,7 @@ bool i915_gem_obj_is_pinned(struct drm_i915_gem_object *obj)
{
	struct i915_vma *vma;
	list_for_each_entry(vma, &obj->vma_list, obj_link)
		if (vma->pin_count > 0)
		if (i915_vma_is_pinned(vma))
			return true;

	return false;
+6 −6
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ gpu_is_idle(struct drm_i915_private *dev_priv)
static bool
mark_free(struct i915_vma *vma, struct list_head *unwind)
{
	if (vma->pin_count)
	if (i915_vma_is_pinned(vma))
		return false;

	if (WARN_ON(!list_empty(&vma->exec_list)))
@@ -183,7 +183,7 @@ i915_gem_evict_something(struct i915_address_space *vm,
	 */
	list_for_each_entry_safe(vma, next, &eviction_list, exec_list) {
		if (drm_mm_scan_remove_block(&vma->node))
			vma->pin_count++;
			__i915_vma_pin(vma);
		else
			list_del_init(&vma->exec_list);
	}
@@ -195,7 +195,7 @@ i915_gem_evict_something(struct i915_address_space *vm,
				       exec_list);

		list_del_init(&vma->exec_list);
		vma->pin_count--;
		__i915_vma_unpin(vma);
		if (ret == 0)
			ret = i915_vma_unbind(vma);
	}
@@ -220,8 +220,8 @@ i915_gem_evict_for_vma(struct i915_vma *target)

		vma = container_of(node, typeof(*vma), node);

		if (vma->pin_count) {
			if (!vma->exec_entry || (vma->pin_count > 1))
		if (i915_vma_is_pinned(vma)) {
			if (!vma->exec_entry || i915_vma_pin_count(vma) > 1)
				/* Object is pinned for some other use */
				return -EBUSY;

@@ -281,7 +281,7 @@ int i915_gem_evict_vm(struct i915_address_space *vm, bool do_idle)
	}

	list_for_each_entry_safe(vma, next, &vm->inactive_list, vm_link)
		if (vma->pin_count == 0)
		if (!i915_vma_is_pinned(vma))
			WARN_ON(i915_vma_unbind(vma));

	return 0;
+1 −1
Original line number Diff line number Diff line
@@ -261,7 +261,7 @@ i915_gem_execbuffer_unreserve_vma(struct i915_vma *vma)
		i915_gem_object_unpin_fence(obj);

	if (entry->flags & __EXEC_OBJECT_HAS_PIN)
		vma->pin_count--;
		__i915_vma_unpin(vma);

	entry->flags &= ~(__EXEC_OBJECT_HAS_FENCE | __EXEC_OBJECT_HAS_PIN);
}
+1 −1
Original line number Diff line number Diff line
@@ -431,7 +431,7 @@ i915_gem_object_pin_fence(struct drm_i915_gem_object *obj)

		WARN_ON(!ggtt_vma ||
			dev_priv->fence_regs[obj->fence_reg].pin_count >
			ggtt_vma->pin_count);
			i915_vma_pin_count(ggtt_vma));
		dev_priv->fence_regs[obj->fence_reg].pin_count++;
		return true;
	} else
Loading