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

Commit aad29fbb authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Rename intel_pin_and_map_ring()

parent 32c04f16
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -973,7 +973,7 @@ static int intel_lr_context_pin(struct i915_gem_context *ctx,

	lrc_reg_state = vaddr + LRC_STATE_PN * PAGE_SIZE;

	ret = intel_pin_and_map_ring(dev_priv, ce->ring);
	ret = intel_ring_pin(ce->ring);
	if (ret)
		goto unpin_map;

@@ -1011,7 +1011,7 @@ void intel_lr_context_unpin(struct i915_gem_context *ctx,
	if (--ce->pin_count)
		return;

	intel_unpin_ring(ce->ring);
	intel_ring_unpin(ce->ring);

	i915_gem_object_unpin_map(ce->state);
	i915_gem_object_ggtt_unpin(ce->state);
+19 −19
Original line number Diff line number Diff line
@@ -1993,24 +1993,9 @@ static int init_phys_status_page(struct intel_engine_cs *engine)
	return 0;
}

void intel_unpin_ring(struct intel_ring *ring)
{
	GEM_BUG_ON(!ring->vma);
	GEM_BUG_ON(!ring->vaddr);

	if (HAS_LLC(ring->obj->base.dev) && !ring->obj->stolen)
		i915_gem_object_unpin_map(ring->obj);
	else
		i915_vma_unpin_iomap(ring->vma);
	ring->vaddr = NULL;

	i915_gem_object_ggtt_unpin(ring->obj);
	ring->vma = NULL;
}

int intel_pin_and_map_ring(struct drm_i915_private *dev_priv,
			   struct intel_ring *ring)
int intel_ring_pin(struct intel_ring *ring)
{
	struct drm_i915_private *dev_priv = ring->engine->i915;
	struct drm_i915_gem_object *obj = ring->obj;
	/* Ring wraparound at offset 0 sometimes hangs. No idea why. */
	unsigned flags = PIN_OFFSET_BIAS | 4096;
@@ -2061,6 +2046,21 @@ int intel_pin_and_map_ring(struct drm_i915_private *dev_priv,
	return ret;
}

void intel_ring_unpin(struct intel_ring *ring)
{
	GEM_BUG_ON(!ring->vma);
	GEM_BUG_ON(!ring->vaddr);

	if (HAS_LLC(ring->engine->i915) && !ring->obj->stolen)
		i915_gem_object_unpin_map(ring->obj);
	else
		i915_vma_unpin_iomap(ring->vma);
	ring->vaddr = NULL;

	i915_gem_object_ggtt_unpin(ring->obj);
	ring->vma = NULL;
}

static void intel_destroy_ringbuffer_obj(struct intel_ring *ring)
{
	i915_gem_object_put(ring->obj);
@@ -2233,7 +2233,7 @@ static int intel_init_ring_buffer(struct intel_engine_cs *engine)
			goto error;
	}

	ret = intel_pin_and_map_ring(dev_priv, ring);
	ret = intel_ring_pin(ring);
	if (ret) {
		DRM_ERROR("Failed to pin and map ringbuffer %s: %d\n",
				engine->name, ret);
@@ -2261,7 +2261,7 @@ void intel_engine_cleanup(struct intel_engine_cs *engine)
		intel_engine_stop(engine);
		WARN_ON(!IS_GEN2(dev_priv) && (I915_READ_MODE(engine) & MODE_IDLE) == 0);

		intel_unpin_ring(engine->buffer);
		intel_ring_unpin(engine->buffer);
		intel_ring_free(engine->buffer);
		engine->buffer = NULL;
	}
+2 −3
Original line number Diff line number Diff line
@@ -441,9 +441,8 @@ intel_write_status_page(struct intel_engine_cs *engine,

struct intel_ring *
intel_engine_create_ring(struct intel_engine_cs *engine, int size);
int intel_pin_and_map_ring(struct drm_i915_private *dev_priv,
			   struct intel_ring *ring);
void intel_unpin_ring(struct intel_ring *ring);
int intel_ring_pin(struct intel_ring *ring);
void intel_ring_unpin(struct intel_ring *ring);
void intel_ring_free(struct intel_ring *ring);

void intel_engine_stop(struct intel_engine_cs *engine);