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

Commit 8bdcd949 authored by Rob Clark's avatar Rob Clark
Browse files

drm/msm: pass address-space to _get_iova() and friends



No functional change, that will come later.  But this will make it
easier to deal with dynamically created address spaces (ie. per-
process pagetables for gpu).

Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent f59f62d5
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -308,7 +308,7 @@ static struct drm_gem_object *a5xx_ucode_load_bo(struct msm_gpu *gpu,
	}

	if (iova) {
		int ret = msm_gem_get_iova_locked(bo, gpu->id, iova);
		int ret = msm_gem_get_iova_locked(bo, gpu->aspace, iova);

		if (ret) {
			drm_gem_object_unreference(bo);
@@ -696,19 +696,19 @@ static void a5xx_destroy(struct msm_gpu *gpu)

	if (a5xx_gpu->pm4_bo) {
		if (a5xx_gpu->pm4_iova)
			msm_gem_put_iova(a5xx_gpu->pm4_bo, gpu->id);
			msm_gem_put_iova(a5xx_gpu->pm4_bo, gpu->aspace);
		drm_gem_object_unreference_unlocked(a5xx_gpu->pm4_bo);
	}

	if (a5xx_gpu->pfp_bo) {
		if (a5xx_gpu->pfp_iova)
			msm_gem_put_iova(a5xx_gpu->pfp_bo, gpu->id);
			msm_gem_put_iova(a5xx_gpu->pfp_bo, gpu->aspace);
		drm_gem_object_unreference_unlocked(a5xx_gpu->pfp_bo);
	}

	if (a5xx_gpu->gpmu_bo) {
		if (a5xx_gpu->gpmu_iova)
			msm_gem_put_iova(a5xx_gpu->gpmu_bo, gpu->id);
			msm_gem_put_iova(a5xx_gpu->gpmu_bo, gpu->aspace);
		drm_gem_object_unreference_unlocked(a5xx_gpu->gpmu_bo);
	}

+3 −2
Original line number Diff line number Diff line
@@ -298,7 +298,8 @@ void a5xx_gpmu_ucode_init(struct msm_gpu *gpu)
	if (IS_ERR(a5xx_gpu->gpmu_bo))
		goto err;

	if (msm_gem_get_iova_locked(a5xx_gpu->gpmu_bo, gpu->id, &a5xx_gpu->gpmu_iova))
	if (msm_gem_get_iova_locked(a5xx_gpu->gpmu_bo, gpu->aspace,
			&a5xx_gpu->gpmu_iova))
		goto err;

	ptr = msm_gem_get_vaddr_locked(a5xx_gpu->gpmu_bo);
@@ -327,7 +328,7 @@ void a5xx_gpmu_ucode_init(struct msm_gpu *gpu)

err:
	if (a5xx_gpu->gpmu_iova)
		msm_gem_put_iova(a5xx_gpu->gpmu_bo, gpu->id);
		msm_gem_put_iova(a5xx_gpu->gpmu_bo, gpu->aspace);
	if (a5xx_gpu->gpmu_bo)
		drm_gem_object_unreference(a5xx_gpu->gpmu_bo);

+3 −3
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ int adreno_hw_init(struct msm_gpu *gpu)

	DBG("%s", gpu->name);

	ret = msm_gem_get_iova_locked(gpu->rb->bo, gpu->id, &gpu->rb_iova);
	ret = msm_gem_get_iova_locked(gpu->rb->bo, gpu->aspace, &gpu->rb_iova);
	if (ret) {
		gpu->rb_iova = 0;
		dev_err(gpu->dev->dev, "could not map ringbuffer: %d\n", ret);
@@ -414,7 +414,7 @@ int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev,
		return -ENOMEM;
	}

	ret = msm_gem_get_iova(adreno_gpu->memptrs_bo, gpu->id,
	ret = msm_gem_get_iova(adreno_gpu->memptrs_bo, gpu->aspace,
			&adreno_gpu->memptrs_iova);
	if (ret) {
		dev_err(drm->dev, "could not map memptrs: %d\n", ret);
@@ -433,7 +433,7 @@ void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu)
			msm_gem_put_vaddr(adreno_gpu->memptrs_bo);

		if (adreno_gpu->memptrs_iova)
			msm_gem_put_iova(adreno_gpu->memptrs_bo, gpu->id);
			msm_gem_put_iova(adreno_gpu->memptrs_bo, gpu->aspace);

		drm_gem_object_unreference_unlocked(adreno_gpu->memptrs_bo);
	}
+2 −2
Original line number Diff line number Diff line
@@ -994,7 +994,7 @@ static int dsi_tx_buf_alloc(struct msm_dsi_host *msm_host, int size)
		}

		ret = msm_gem_get_iova_locked(msm_host->tx_gem_obj,
				priv->kms->id, &iova);
				priv->kms->aspace, &iova);
		mutex_unlock(&dev->struct_mutex);
		if (ret) {
			pr_err("%s: failed to get iova, %d\n", __func__, ret);
@@ -1152,7 +1152,7 @@ static int dsi_cmd_dma_tx(struct msm_dsi_host *msm_host, int len)

	if (cfg_hnd->major == MSM_DSI_VER_MAJOR_6G) {
		ret = msm_gem_get_iova(msm_host->tx_gem_obj,
				priv->kms->id, &dma_base);
				priv->kms->aspace, &dma_base);
		if (ret) {
			pr_err("%s: failed to get iova: %d\n", __func__, ret);
			return ret;
+3 −3
Original line number Diff line number Diff line
@@ -128,7 +128,7 @@ static void unref_cursor_worker(struct drm_flip_work *work, void *val)
	struct mdp4_kms *mdp4_kms = get_kms(&mdp4_crtc->base);
	struct msm_kms *kms = &mdp4_kms->base.base;

	msm_gem_put_iova(val, kms->id);
	msm_gem_put_iova(val, kms->aspace);
	drm_gem_object_unreference_unlocked(val);
}

@@ -374,7 +374,7 @@ static void update_cursor(struct drm_crtc *crtc)
		if (next_bo) {
			/* take a obj ref + iova ref when we start scanning out: */
			drm_gem_object_reference(next_bo);
			msm_gem_get_iova_locked(next_bo, kms->id, &iova);
			msm_gem_get_iova_locked(next_bo, kms->aspace, &iova);

			/* enable cursor: */
			mdp4_write(mdp4_kms, REG_MDP4_DMA_CURSOR_SIZE(dma),
@@ -432,7 +432,7 @@ static int mdp4_crtc_cursor_set(struct drm_crtc *crtc,
	}

	if (cursor_bo) {
		ret = msm_gem_get_iova(cursor_bo, kms->id, &iova);
		ret = msm_gem_get_iova(cursor_bo, kms->aspace, &iova);
		if (ret)
			goto fail;
	} else {
Loading