diff options
| -rw-r--r-- | drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/adreno/a5xx_power.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/adreno/adreno_gpu.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/dsi/dsi_host.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 7 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/msm_drv.h | 22 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/msm_fb.c | 15 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/msm_fbdev.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 18 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/msm_gem.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/msm_gem_submit.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/msm_gpu.c | 6 |
17 files changed, 78 insertions, 58 deletions
diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c index 8d17f525c417..f6a9eec71fec 100644 --- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c | |||
| @@ -308,7 +308,7 @@ static struct drm_gem_object *a5xx_ucode_load_bo(struct msm_gpu *gpu, | |||
| 308 | } | 308 | } |
| 309 | 309 | ||
| 310 | if (iova) { | 310 | if (iova) { |
| 311 | int ret = msm_gem_get_iova_locked(bo, gpu->id, iova); | 311 | int ret = msm_gem_get_iova_locked(bo, gpu->aspace, iova); |
| 312 | 312 | ||
| 313 | if (ret) { | 313 | if (ret) { |
| 314 | drm_gem_object_unreference(bo); | 314 | drm_gem_object_unreference(bo); |
| @@ -696,19 +696,19 @@ static void a5xx_destroy(struct msm_gpu *gpu) | |||
| 696 | 696 | ||
| 697 | if (a5xx_gpu->pm4_bo) { | 697 | if (a5xx_gpu->pm4_bo) { |
| 698 | if (a5xx_gpu->pm4_iova) | 698 | if (a5xx_gpu->pm4_iova) |
| 699 | msm_gem_put_iova(a5xx_gpu->pm4_bo, gpu->id); | 699 | msm_gem_put_iova(a5xx_gpu->pm4_bo, gpu->aspace); |
| 700 | drm_gem_object_unreference_unlocked(a5xx_gpu->pm4_bo); | 700 | drm_gem_object_unreference_unlocked(a5xx_gpu->pm4_bo); |
| 701 | } | 701 | } |
| 702 | 702 | ||
| 703 | if (a5xx_gpu->pfp_bo) { | 703 | if (a5xx_gpu->pfp_bo) { |
| 704 | if (a5xx_gpu->pfp_iova) | 704 | if (a5xx_gpu->pfp_iova) |
| 705 | msm_gem_put_iova(a5xx_gpu->pfp_bo, gpu->id); | 705 | msm_gem_put_iova(a5xx_gpu->pfp_bo, gpu->aspace); |
| 706 | drm_gem_object_unreference_unlocked(a5xx_gpu->pfp_bo); | 706 | drm_gem_object_unreference_unlocked(a5xx_gpu->pfp_bo); |
| 707 | } | 707 | } |
| 708 | 708 | ||
| 709 | if (a5xx_gpu->gpmu_bo) { | 709 | if (a5xx_gpu->gpmu_bo) { |
| 710 | if (a5xx_gpu->gpmu_iova) | 710 | if (a5xx_gpu->gpmu_iova) |
| 711 | msm_gem_put_iova(a5xx_gpu->gpmu_bo, gpu->id); | 711 | msm_gem_put_iova(a5xx_gpu->gpmu_bo, gpu->aspace); |
| 712 | drm_gem_object_unreference_unlocked(a5xx_gpu->gpmu_bo); | 712 | drm_gem_object_unreference_unlocked(a5xx_gpu->gpmu_bo); |
| 713 | } | 713 | } |
| 714 | 714 | ||
diff --git a/drivers/gpu/drm/msm/adreno/a5xx_power.c b/drivers/gpu/drm/msm/adreno/a5xx_power.c index f3274b827a49..feb7f4fd42fb 100644 --- a/drivers/gpu/drm/msm/adreno/a5xx_power.c +++ b/drivers/gpu/drm/msm/adreno/a5xx_power.c | |||
| @@ -298,7 +298,8 @@ void a5xx_gpmu_ucode_init(struct msm_gpu *gpu) | |||
| 298 | if (IS_ERR(a5xx_gpu->gpmu_bo)) | 298 | if (IS_ERR(a5xx_gpu->gpmu_bo)) |
| 299 | goto err; | 299 | goto err; |
| 300 | 300 | ||
| 301 | if (msm_gem_get_iova_locked(a5xx_gpu->gpmu_bo, gpu->id, &a5xx_gpu->gpmu_iova)) | 301 | if (msm_gem_get_iova_locked(a5xx_gpu->gpmu_bo, gpu->aspace, |
| 302 | &a5xx_gpu->gpmu_iova)) | ||
| 302 | goto err; | 303 | goto err; |
| 303 | 304 | ||
| 304 | ptr = msm_gem_get_vaddr_locked(a5xx_gpu->gpmu_bo); | 305 | ptr = msm_gem_get_vaddr_locked(a5xx_gpu->gpmu_bo); |
| @@ -327,7 +328,7 @@ void a5xx_gpmu_ucode_init(struct msm_gpu *gpu) | |||
| 327 | 328 | ||
| 328 | err: | 329 | err: |
| 329 | if (a5xx_gpu->gpmu_iova) | 330 | if (a5xx_gpu->gpmu_iova) |
| 330 | msm_gem_put_iova(a5xx_gpu->gpmu_bo, gpu->id); | 331 | msm_gem_put_iova(a5xx_gpu->gpmu_bo, gpu->aspace); |
| 331 | if (a5xx_gpu->gpmu_bo) | 332 | if (a5xx_gpu->gpmu_bo) |
| 332 | drm_gem_object_unreference(a5xx_gpu->gpmu_bo); | 333 | drm_gem_object_unreference(a5xx_gpu->gpmu_bo); |
| 333 | 334 | ||
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c index 30a2096ac9a2..6fa694e6ae8c 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c | |||
| @@ -64,7 +64,7 @@ int adreno_hw_init(struct msm_gpu *gpu) | |||
| 64 | 64 | ||
| 65 | DBG("%s", gpu->name); | 65 | DBG("%s", gpu->name); |
| 66 | 66 | ||
| 67 | ret = msm_gem_get_iova_locked(gpu->rb->bo, gpu->id, &gpu->rb_iova); | 67 | ret = msm_gem_get_iova_locked(gpu->rb->bo, gpu->aspace, &gpu->rb_iova); |
| 68 | if (ret) { | 68 | if (ret) { |
| 69 | gpu->rb_iova = 0; | 69 | gpu->rb_iova = 0; |
| 70 | dev_err(gpu->dev->dev, "could not map ringbuffer: %d\n", ret); | 70 | 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, | |||
| 414 | return -ENOMEM; | 414 | return -ENOMEM; |
| 415 | } | 415 | } |
| 416 | 416 | ||
| 417 | ret = msm_gem_get_iova(adreno_gpu->memptrs_bo, gpu->id, | 417 | ret = msm_gem_get_iova(adreno_gpu->memptrs_bo, gpu->aspace, |
| 418 | &adreno_gpu->memptrs_iova); | 418 | &adreno_gpu->memptrs_iova); |
| 419 | if (ret) { | 419 | if (ret) { |
| 420 | dev_err(drm->dev, "could not map memptrs: %d\n", ret); | 420 | dev_err(drm->dev, "could not map memptrs: %d\n", ret); |
| @@ -433,7 +433,7 @@ void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu) | |||
| 433 | msm_gem_put_vaddr(adreno_gpu->memptrs_bo); | 433 | msm_gem_put_vaddr(adreno_gpu->memptrs_bo); |
| 434 | 434 | ||
| 435 | if (adreno_gpu->memptrs_iova) | 435 | if (adreno_gpu->memptrs_iova) |
| 436 | msm_gem_put_iova(adreno_gpu->memptrs_bo, gpu->id); | 436 | msm_gem_put_iova(adreno_gpu->memptrs_bo, gpu->aspace); |
| 437 | 437 | ||
| 438 | drm_gem_object_unreference_unlocked(adreno_gpu->memptrs_bo); | 438 | drm_gem_object_unreference_unlocked(adreno_gpu->memptrs_bo); |
| 439 | } | 439 | } |
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 3c752cd0cc1c..2e7077194b21 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c | |||
| @@ -994,7 +994,7 @@ static int dsi_tx_buf_alloc(struct msm_dsi_host *msm_host, int size) | |||
| 994 | } | 994 | } |
| 995 | 995 | ||
| 996 | ret = msm_gem_get_iova_locked(msm_host->tx_gem_obj, | 996 | ret = msm_gem_get_iova_locked(msm_host->tx_gem_obj, |
| 997 | priv->kms->id, &iova); | 997 | priv->kms->aspace, &iova); |
| 998 | mutex_unlock(&dev->struct_mutex); | 998 | mutex_unlock(&dev->struct_mutex); |
| 999 | if (ret) { | 999 | if (ret) { |
| 1000 | pr_err("%s: failed to get iova, %d\n", __func__, ret); | 1000 | 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) | |||
| 1152 | 1152 | ||
| 1153 | if (cfg_hnd->major == MSM_DSI_VER_MAJOR_6G) { | 1153 | if (cfg_hnd->major == MSM_DSI_VER_MAJOR_6G) { |
| 1154 | ret = msm_gem_get_iova(msm_host->tx_gem_obj, | 1154 | ret = msm_gem_get_iova(msm_host->tx_gem_obj, |
| 1155 | priv->kms->id, &dma_base); | 1155 | priv->kms->aspace, &dma_base); |
| 1156 | if (ret) { | 1156 | if (ret) { |
| 1157 | pr_err("%s: failed to get iova: %d\n", __func__, ret); | 1157 | pr_err("%s: failed to get iova: %d\n", __func__, ret); |
| 1158 | return ret; | 1158 | return ret; |
diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c index d9ee73c3672d..59153a4ebd18 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c | |||
| @@ -128,7 +128,7 @@ static void unref_cursor_worker(struct drm_flip_work *work, void *val) | |||
| 128 | struct mdp4_kms *mdp4_kms = get_kms(&mdp4_crtc->base); | 128 | struct mdp4_kms *mdp4_kms = get_kms(&mdp4_crtc->base); |
| 129 | struct msm_kms *kms = &mdp4_kms->base.base; | 129 | struct msm_kms *kms = &mdp4_kms->base.base; |
| 130 | 130 | ||
| 131 | msm_gem_put_iova(val, kms->id); | 131 | msm_gem_put_iova(val, kms->aspace); |
| 132 | drm_gem_object_unreference_unlocked(val); | 132 | drm_gem_object_unreference_unlocked(val); |
| 133 | } | 133 | } |
| 134 | 134 | ||
| @@ -374,7 +374,7 @@ static void update_cursor(struct drm_crtc *crtc) | |||
| 374 | if (next_bo) { | 374 | if (next_bo) { |
| 375 | /* take a obj ref + iova ref when we start scanning out: */ | 375 | /* take a obj ref + iova ref when we start scanning out: */ |
| 376 | drm_gem_object_reference(next_bo); | 376 | drm_gem_object_reference(next_bo); |
| 377 | msm_gem_get_iova_locked(next_bo, kms->id, &iova); | 377 | msm_gem_get_iova_locked(next_bo, kms->aspace, &iova); |
| 378 | 378 | ||
| 379 | /* enable cursor: */ | 379 | /* enable cursor: */ |
| 380 | mdp4_write(mdp4_kms, REG_MDP4_DMA_CURSOR_SIZE(dma), | 380 | mdp4_write(mdp4_kms, REG_MDP4_DMA_CURSOR_SIZE(dma), |
| @@ -432,7 +432,7 @@ static int mdp4_crtc_cursor_set(struct drm_crtc *crtc, | |||
| 432 | } | 432 | } |
| 433 | 433 | ||
| 434 | if (cursor_bo) { | 434 | if (cursor_bo) { |
| 435 | ret = msm_gem_get_iova(cursor_bo, kms->id, &iova); | 435 | ret = msm_gem_get_iova(cursor_bo, kms->aspace, &iova); |
| 436 | if (ret) | 436 | if (ret) |
| 437 | goto fail; | 437 | goto fail; |
| 438 | } else { | 438 | } else { |
diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c index 7cf4dd40de28..0c01f9fe0ef0 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | |||
| @@ -163,7 +163,7 @@ static void mdp4_destroy(struct msm_kms *kms) | |||
| 163 | struct msm_gem_address_space *aspace = kms->aspace; | 163 | struct msm_gem_address_space *aspace = kms->aspace; |
| 164 | 164 | ||
| 165 | if (mdp4_kms->blank_cursor_iova) | 165 | if (mdp4_kms->blank_cursor_iova) |
| 166 | msm_gem_put_iova(mdp4_kms->blank_cursor_bo, kms->id); | 166 | msm_gem_put_iova(mdp4_kms->blank_cursor_bo, kms->aspace); |
| 167 | drm_gem_object_unreference_unlocked(mdp4_kms->blank_cursor_bo); | 167 | drm_gem_object_unreference_unlocked(mdp4_kms->blank_cursor_bo); |
| 168 | 168 | ||
| 169 | if (aspace) { | 169 | if (aspace) { |
| @@ -545,7 +545,7 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev) | |||
| 545 | goto fail; | 545 | goto fail; |
| 546 | } | 546 | } |
| 547 | 547 | ||
| 548 | ret = msm_gem_get_iova(mdp4_kms->blank_cursor_bo, kms->id, | 548 | ret = msm_gem_get_iova(mdp4_kms->blank_cursor_bo, kms->aspace, |
| 549 | &mdp4_kms->blank_cursor_iova); | 549 | &mdp4_kms->blank_cursor_iova); |
| 550 | if (ret) { | 550 | if (ret) { |
| 551 | dev_err(dev->dev, "could not pin blank-cursor bo: %d\n", ret); | 551 | dev_err(dev->dev, "could not pin blank-cursor bo: %d\n", ret); |
diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c index 17fb1d6f2f23..a20e3d644523 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c | |||
| @@ -110,7 +110,7 @@ static int mdp4_plane_prepare_fb(struct drm_plane *plane, | |||
| 110 | return 0; | 110 | return 0; |
| 111 | 111 | ||
| 112 | DBG("%s: prepare: FB[%u]", mdp4_plane->name, fb->base.id); | 112 | DBG("%s: prepare: FB[%u]", mdp4_plane->name, fb->base.id); |
| 113 | return msm_framebuffer_prepare(fb, kms->id); | 113 | return msm_framebuffer_prepare(fb, kms->aspace); |
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | static void mdp4_plane_cleanup_fb(struct drm_plane *plane, | 116 | static void mdp4_plane_cleanup_fb(struct drm_plane *plane, |
| @@ -125,7 +125,7 @@ static void mdp4_plane_cleanup_fb(struct drm_plane *plane, | |||
| 125 | return; | 125 | return; |
| 126 | 126 | ||
| 127 | DBG("%s: cleanup: FB[%u]", mdp4_plane->name, fb->base.id); | 127 | DBG("%s: cleanup: FB[%u]", mdp4_plane->name, fb->base.id); |
| 128 | msm_framebuffer_cleanup(fb, kms->id); | 128 | msm_framebuffer_cleanup(fb, kms->aspace); |
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | 131 | ||
| @@ -175,13 +175,13 @@ static void mdp4_plane_set_scanout(struct drm_plane *plane, | |||
| 175 | MDP4_PIPE_SRC_STRIDE_B_P3(fb->pitches[3])); | 175 | MDP4_PIPE_SRC_STRIDE_B_P3(fb->pitches[3])); |
| 176 | 176 | ||
| 177 | mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP0_BASE(pipe), | 177 | mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP0_BASE(pipe), |
| 178 | msm_framebuffer_iova(fb, kms->id, 0)); | 178 | msm_framebuffer_iova(fb, kms->aspace, 0)); |
| 179 | mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP1_BASE(pipe), | 179 | mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP1_BASE(pipe), |
| 180 | msm_framebuffer_iova(fb, kms->id, 1)); | 180 | msm_framebuffer_iova(fb, kms->aspace, 1)); |
| 181 | mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP2_BASE(pipe), | 181 | mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP2_BASE(pipe), |
| 182 | msm_framebuffer_iova(fb, kms->id, 2)); | 182 | msm_framebuffer_iova(fb, kms->aspace, 2)); |
| 183 | mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP3_BASE(pipe), | 183 | mdp4_write(mdp4_kms, REG_MDP4_PIPE_SRCP3_BASE(pipe), |
| 184 | msm_framebuffer_iova(fb, kms->id, 3)); | 184 | msm_framebuffer_iova(fb, kms->aspace, 3)); |
| 185 | 185 | ||
| 186 | plane->fb = fb; | 186 | plane->fb = fb; |
| 187 | } | 187 | } |
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c index d79c5faba35e..cb5415d6c04b 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | |||
| @@ -162,7 +162,7 @@ static void unref_cursor_worker(struct drm_flip_work *work, void *val) | |||
| 162 | struct mdp5_kms *mdp5_kms = get_kms(&mdp5_crtc->base); | 162 | struct mdp5_kms *mdp5_kms = get_kms(&mdp5_crtc->base); |
| 163 | struct msm_kms *kms = &mdp5_kms->base.base; | 163 | struct msm_kms *kms = &mdp5_kms->base.base; |
| 164 | 164 | ||
| 165 | msm_gem_put_iova(val, kms->id); | 165 | msm_gem_put_iova(val, kms->aspace); |
| 166 | drm_gem_object_unreference_unlocked(val); | 166 | drm_gem_object_unreference_unlocked(val); |
| 167 | } | 167 | } |
| 168 | 168 | ||
| @@ -760,7 +760,7 @@ static int mdp5_crtc_cursor_set(struct drm_crtc *crtc, | |||
| 760 | if (!cursor_bo) | 760 | if (!cursor_bo) |
| 761 | return -ENOENT; | 761 | return -ENOENT; |
| 762 | 762 | ||
| 763 | ret = msm_gem_get_iova(cursor_bo, kms->id, &cursor_addr); | 763 | ret = msm_gem_get_iova(cursor_bo, kms->aspace, &cursor_addr); |
| 764 | if (ret) | 764 | if (ret) |
| 765 | return -EINVAL; | 765 | return -EINVAL; |
| 766 | 766 | ||
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c index b6a66befd1b7..fe3a4de1a433 100644 --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | |||
| @@ -279,7 +279,7 @@ static int mdp5_plane_prepare_fb(struct drm_plane *plane, | |||
| 279 | return 0; | 279 | return 0; |
| 280 | 280 | ||
| 281 | DBG("%s: prepare: FB[%u]", plane->name, fb->base.id); | 281 | DBG("%s: prepare: FB[%u]", plane->name, fb->base.id); |
| 282 | return msm_framebuffer_prepare(fb, kms->id); | 282 | return msm_framebuffer_prepare(fb, kms->aspace); |
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | static void mdp5_plane_cleanup_fb(struct drm_plane *plane, | 285 | static void mdp5_plane_cleanup_fb(struct drm_plane *plane, |
| @@ -293,7 +293,7 @@ static void mdp5_plane_cleanup_fb(struct drm_plane *plane, | |||
| 293 | return; | 293 | return; |
| 294 | 294 | ||
| 295 | DBG("%s: cleanup: FB[%u]", plane->name, fb->base.id); | 295 | DBG("%s: cleanup: FB[%u]", plane->name, fb->base.id); |
| 296 | msm_framebuffer_cleanup(fb, kms->id); | 296 | msm_framebuffer_cleanup(fb, kms->aspace); |
| 297 | } | 297 | } |
| 298 | 298 | ||
| 299 | #define FRAC_16_16(mult, div) (((mult) << 16) / (div)) | 299 | #define FRAC_16_16(mult, div) (((mult) << 16) / (div)) |
| @@ -511,13 +511,13 @@ static void set_scanout_locked(struct mdp5_kms *mdp5_kms, | |||
| 511 | MDP5_PIPE_SRC_STRIDE_B_P3(fb->pitches[3])); | 511 | MDP5_PIPE_SRC_STRIDE_B_P3(fb->pitches[3])); |
| 512 | 512 | ||
| 513 | mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC0_ADDR(pipe), | 513 | mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC0_ADDR(pipe), |
| 514 | msm_framebuffer_iova(fb, kms->id, 0)); | 514 | msm_framebuffer_iova(fb, kms->aspace, 0)); |
| 515 | mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC1_ADDR(pipe), | 515 | mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC1_ADDR(pipe), |
| 516 | msm_framebuffer_iova(fb, kms->id, 1)); | 516 | msm_framebuffer_iova(fb, kms->aspace, 1)); |
| 517 | mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC2_ADDR(pipe), | 517 | mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC2_ADDR(pipe), |
| 518 | msm_framebuffer_iova(fb, kms->id, 2)); | 518 | msm_framebuffer_iova(fb, kms->aspace, 2)); |
| 519 | mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC3_ADDR(pipe), | 519 | mdp5_write(mdp5_kms, REG_MDP5_PIPE_SRC3_ADDR(pipe), |
| 520 | msm_framebuffer_iova(fb, kms->id, 3)); | 520 | msm_framebuffer_iova(fb, kms->aspace, 3)); |
| 521 | } | 521 | } |
| 522 | 522 | ||
| 523 | /* Note: mdp5_plane->pipe_lock must be locked */ | 523 | /* Note: mdp5_plane->pipe_lock must be locked */ |
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index beb4f6b3ac70..a9c3c6b813d3 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c | |||
| @@ -51,6 +51,7 @@ static const struct drm_mode_config_funcs mode_config_funcs = { | |||
| 51 | .atomic_state_free = msm_atomic_state_free, | 51 | .atomic_state_free = msm_atomic_state_free, |
| 52 | }; | 52 | }; |
| 53 | 53 | ||
| 54 | #include "msm_gem.h" /* temporary */ | ||
| 54 | int msm_register_address_space(struct drm_device *dev, | 55 | int msm_register_address_space(struct drm_device *dev, |
| 55 | struct msm_gem_address_space *aspace) | 56 | struct msm_gem_address_space *aspace) |
| 56 | { | 57 | { |
| @@ -61,7 +62,9 @@ int msm_register_address_space(struct drm_device *dev, | |||
| 61 | 62 | ||
| 62 | priv->aspace[priv->num_aspaces] = aspace; | 63 | priv->aspace[priv->num_aspaces] = aspace; |
| 63 | 64 | ||
| 64 | return priv->num_aspaces++; | 65 | aspace->id = priv->num_aspaces++; |
| 66 | |||
| 67 | return aspace->id; | ||
| 65 | } | 68 | } |
| 66 | 69 | ||
| 67 | #ifdef CONFIG_DRM_MSM_REGISTER_LOGGING | 70 | #ifdef CONFIG_DRM_MSM_REGISTER_LOGGING |
| @@ -707,7 +710,7 @@ static int msm_ioctl_gem_info_iova(struct drm_device *dev, | |||
| 707 | if (!priv->gpu) | 710 | if (!priv->gpu) |
| 708 | return -EINVAL; | 711 | return -EINVAL; |
| 709 | 712 | ||
| 710 | return msm_gem_get_iova(obj, priv->gpu->id, iova); | 713 | return msm_gem_get_iova(obj, priv->gpu->aspace, iova); |
| 711 | } | 714 | } |
| 712 | 715 | ||
| 713 | static int msm_ioctl_gem_info(struct drm_device *dev, void *data, | 716 | static int msm_ioctl_gem_info(struct drm_device *dev, void *data, |
diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index 1b26ca626528..5570c5c91340 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h | |||
| @@ -209,13 +209,16 @@ int msm_gem_mmap_obj(struct drm_gem_object *obj, | |||
| 209 | int msm_gem_mmap(struct file *filp, struct vm_area_struct *vma); | 209 | int msm_gem_mmap(struct file *filp, struct vm_area_struct *vma); |
| 210 | int msm_gem_fault(struct vm_fault *vmf); | 210 | int msm_gem_fault(struct vm_fault *vmf); |
| 211 | uint64_t msm_gem_mmap_offset(struct drm_gem_object *obj); | 211 | uint64_t msm_gem_mmap_offset(struct drm_gem_object *obj); |
| 212 | int msm_gem_get_iova_locked(struct drm_gem_object *obj, int id, | 212 | int msm_gem_get_iova_locked(struct drm_gem_object *obj, |
| 213 | uint64_t *iova); | 213 | struct msm_gem_address_space *aspace, uint64_t *iova); |
| 214 | int msm_gem_get_iova(struct drm_gem_object *obj, int id, uint64_t *iova); | 214 | int msm_gem_get_iova(struct drm_gem_object *obj, |
| 215 | uint64_t msm_gem_iova(struct drm_gem_object *obj, int id); | 215 | struct msm_gem_address_space *aspace, uint64_t *iova); |
| 216 | uint64_t msm_gem_iova(struct drm_gem_object *obj, | ||
| 217 | struct msm_gem_address_space *aspace); | ||
| 216 | struct page **msm_gem_get_pages(struct drm_gem_object *obj); | 218 | struct page **msm_gem_get_pages(struct drm_gem_object *obj); |
| 217 | void msm_gem_put_pages(struct drm_gem_object *obj); | 219 | void msm_gem_put_pages(struct drm_gem_object *obj); |
| 218 | void msm_gem_put_iova(struct drm_gem_object *obj, int id); | 220 | void msm_gem_put_iova(struct drm_gem_object *obj, |
| 221 | struct msm_gem_address_space *aspace); | ||
| 219 | int msm_gem_dumb_create(struct drm_file *file, struct drm_device *dev, | 222 | int msm_gem_dumb_create(struct drm_file *file, struct drm_device *dev, |
| 220 | struct drm_mode_create_dumb *args); | 223 | struct drm_mode_create_dumb *args); |
| 221 | int msm_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev, | 224 | int msm_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev, |
| @@ -251,9 +254,12 @@ struct drm_gem_object *msm_gem_new(struct drm_device *dev, | |||
| 251 | struct drm_gem_object *msm_gem_import(struct drm_device *dev, | 254 | struct drm_gem_object *msm_gem_import(struct drm_device *dev, |
| 252 | struct dma_buf *dmabuf, struct sg_table *sgt); | 255 | struct dma_buf *dmabuf, struct sg_table *sgt); |
| 253 | 256 | ||
| 254 | int msm_framebuffer_prepare(struct drm_framebuffer *fb, int id); | 257 | int msm_framebuffer_prepare(struct drm_framebuffer *fb, |
| 255 | void msm_framebuffer_cleanup(struct drm_framebuffer *fb, int id); | 258 | struct msm_gem_address_space *aspace); |
| 256 | uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, int id, int plane); | 259 | void msm_framebuffer_cleanup(struct drm_framebuffer *fb, |
| 260 | struct msm_gem_address_space *aspace); | ||
| 261 | uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, | ||
| 262 | struct msm_gem_address_space *aspace, int plane); | ||
| 257 | struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane); | 263 | struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane); |
| 258 | const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb); | 264 | const struct msm_format *msm_framebuffer_format(struct drm_framebuffer *fb); |
| 259 | struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, | 265 | struct drm_framebuffer *msm_framebuffer_init(struct drm_device *dev, |
diff --git a/drivers/gpu/drm/msm/msm_fb.c b/drivers/gpu/drm/msm/msm_fb.c index ba2733a95a4f..6ecb7b170316 100644 --- a/drivers/gpu/drm/msm/msm_fb.c +++ b/drivers/gpu/drm/msm/msm_fb.c | |||
| @@ -84,14 +84,15 @@ void msm_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m) | |||
| 84 | * should be fine, since only the scanout (mdpN) side of things needs | 84 | * should be fine, since only the scanout (mdpN) side of things needs |
| 85 | * this, the gpu doesn't care about fb's. | 85 | * this, the gpu doesn't care about fb's. |
| 86 | */ | 86 | */ |
| 87 | int msm_framebuffer_prepare(struct drm_framebuffer *fb, int id) | 87 | int msm_framebuffer_prepare(struct drm_framebuffer *fb, |
| 88 | struct msm_gem_address_space *aspace) | ||
| 88 | { | 89 | { |
| 89 | struct msm_framebuffer *msm_fb = to_msm_framebuffer(fb); | 90 | struct msm_framebuffer *msm_fb = to_msm_framebuffer(fb); |
| 90 | int ret, i, n = fb->format->num_planes; | 91 | int ret, i, n = fb->format->num_planes; |
| 91 | uint64_t iova; | 92 | uint64_t iova; |
| 92 | 93 | ||
| 93 | for (i = 0; i < n; i++) { | 94 | for (i = 0; i < n; i++) { |
| 94 | ret = msm_gem_get_iova(msm_fb->planes[i], id, &iova); | 95 | ret = msm_gem_get_iova(msm_fb->planes[i], aspace, &iova); |
| 95 | DBG("FB[%u]: iova[%d]: %08llx (%d)", fb->base.id, i, iova, ret); | 96 | DBG("FB[%u]: iova[%d]: %08llx (%d)", fb->base.id, i, iova, ret); |
| 96 | if (ret) | 97 | if (ret) |
| 97 | return ret; | 98 | return ret; |
| @@ -100,21 +101,23 @@ int msm_framebuffer_prepare(struct drm_framebuffer *fb, int id) | |||
| 100 | return 0; | 101 | return 0; |
| 101 | } | 102 | } |
| 102 | 103 | ||
| 103 | void msm_framebuffer_cleanup(struct drm_framebuffer *fb, int id) | 104 | void msm_framebuffer_cleanup(struct drm_framebuffer *fb, |
| 105 | struct msm_gem_address_space *aspace) | ||
| 104 | { | 106 | { |
| 105 | struct msm_framebuffer *msm_fb = to_msm_framebuffer(fb); | 107 | struct msm_framebuffer *msm_fb = to_msm_framebuffer(fb); |
| 106 | int i, n = fb->format->num_planes; | 108 | int i, n = fb->format->num_planes; |
| 107 | 109 | ||
| 108 | for (i = 0; i < n; i++) | 110 | for (i = 0; i < n; i++) |
| 109 | msm_gem_put_iova(msm_fb->planes[i], id); | 111 | msm_gem_put_iova(msm_fb->planes[i], aspace); |
| 110 | } | 112 | } |
| 111 | 113 | ||
| 112 | uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, int id, int plane) | 114 | uint32_t msm_framebuffer_iova(struct drm_framebuffer *fb, |
| 115 | struct msm_gem_address_space *aspace, int plane) | ||
| 113 | { | 116 | { |
| 114 | struct msm_framebuffer *msm_fb = to_msm_framebuffer(fb); | 117 | struct msm_framebuffer *msm_fb = to_msm_framebuffer(fb); |
| 115 | if (!msm_fb->planes[plane]) | 118 | if (!msm_fb->planes[plane]) |
| 116 | return 0; | 119 | return 0; |
| 117 | return msm_gem_iova(msm_fb->planes[plane], id) + fb->offsets[plane]; | 120 | return msm_gem_iova(msm_fb->planes[plane], aspace) + fb->offsets[plane]; |
| 118 | } | 121 | } |
| 119 | 122 | ||
| 120 | struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane) | 123 | struct drm_gem_object *msm_framebuffer_bo(struct drm_framebuffer *fb, int plane) |
diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c index 3c08d6d35944..803ed272dc6d 100644 --- a/drivers/gpu/drm/msm/msm_fbdev.c +++ b/drivers/gpu/drm/msm/msm_fbdev.c | |||
| @@ -126,7 +126,7 @@ static int msm_fbdev_create(struct drm_fb_helper *helper, | |||
| 126 | * in panic (ie. lock-safe, etc) we could avoid pinning the | 126 | * in panic (ie. lock-safe, etc) we could avoid pinning the |
| 127 | * buffer now: | 127 | * buffer now: |
| 128 | */ | 128 | */ |
| 129 | ret = msm_gem_get_iova_locked(fbdev->bo, priv->kms->id, &paddr); | 129 | ret = msm_gem_get_iova_locked(fbdev->bo, priv->kms->aspace, &paddr); |
| 130 | if (ret) { | 130 | if (ret) { |
| 131 | dev_err(dev->dev, "failed to get buffer obj iova: %d\n", ret); | 131 | dev_err(dev->dev, "failed to get buffer obj iova: %d\n", ret); |
| 132 | goto fail_unlock; | 132 | goto fail_unlock; |
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 38fbaadccfb7..0a38c5b1a799 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c | |||
| @@ -308,10 +308,11 @@ put_iova(struct drm_gem_object *obj) | |||
| 308 | * That means when I do eventually need to add support for unpinning | 308 | * That means when I do eventually need to add support for unpinning |
| 309 | * the refcnt counter needs to be atomic_t. | 309 | * the refcnt counter needs to be atomic_t. |
| 310 | */ | 310 | */ |
| 311 | int msm_gem_get_iova_locked(struct drm_gem_object *obj, int id, | 311 | int msm_gem_get_iova_locked(struct drm_gem_object *obj, |
| 312 | uint64_t *iova) | 312 | struct msm_gem_address_space *aspace, uint64_t *iova) |
| 313 | { | 313 | { |
| 314 | struct msm_gem_object *msm_obj = to_msm_bo(obj); | 314 | struct msm_gem_object *msm_obj = to_msm_bo(obj); |
| 315 | int id = aspace ? aspace->id : 0; | ||
| 315 | int ret = 0; | 316 | int ret = 0; |
| 316 | 317 | ||
| 317 | WARN_ON(!mutex_is_locked(&obj->dev->struct_mutex)); | 318 | WARN_ON(!mutex_is_locked(&obj->dev->struct_mutex)); |
| @@ -338,9 +339,11 @@ int msm_gem_get_iova_locked(struct drm_gem_object *obj, int id, | |||
| 338 | } | 339 | } |
| 339 | 340 | ||
| 340 | /* get iova, taking a reference. Should have a matching put */ | 341 | /* get iova, taking a reference. Should have a matching put */ |
| 341 | int msm_gem_get_iova(struct drm_gem_object *obj, int id, uint64_t *iova) | 342 | int msm_gem_get_iova(struct drm_gem_object *obj, |
| 343 | struct msm_gem_address_space *aspace, uint64_t *iova) | ||
| 342 | { | 344 | { |
| 343 | struct msm_gem_object *msm_obj = to_msm_bo(obj); | 345 | struct msm_gem_object *msm_obj = to_msm_bo(obj); |
| 346 | int id = aspace ? aspace->id : 0; | ||
| 344 | int ret; | 347 | int ret; |
| 345 | 348 | ||
| 346 | /* this is safe right now because we don't unmap until the | 349 | /* this is safe right now because we don't unmap until the |
| @@ -353,7 +356,7 @@ int msm_gem_get_iova(struct drm_gem_object *obj, int id, uint64_t *iova) | |||
| 353 | } | 356 | } |
| 354 | 357 | ||
| 355 | mutex_lock(&obj->dev->struct_mutex); | 358 | mutex_lock(&obj->dev->struct_mutex); |
| 356 | ret = msm_gem_get_iova_locked(obj, id, iova); | 359 | ret = msm_gem_get_iova_locked(obj, aspace, iova); |
| 357 | mutex_unlock(&obj->dev->struct_mutex); | 360 | mutex_unlock(&obj->dev->struct_mutex); |
| 358 | return ret; | 361 | return ret; |
| 359 | } | 362 | } |
| @@ -361,14 +364,17 @@ int msm_gem_get_iova(struct drm_gem_object *obj, int id, uint64_t *iova) | |||
| 361 | /* get iova without taking a reference, used in places where you have | 364 | /* get iova without taking a reference, used in places where you have |
| 362 | * already done a 'msm_gem_get_iova()'. | 365 | * already done a 'msm_gem_get_iova()'. |
| 363 | */ | 366 | */ |
| 364 | uint64_t msm_gem_iova(struct drm_gem_object *obj, int id) | 367 | uint64_t msm_gem_iova(struct drm_gem_object *obj, |
| 368 | struct msm_gem_address_space *aspace) | ||
| 365 | { | 369 | { |
| 366 | struct msm_gem_object *msm_obj = to_msm_bo(obj); | 370 | struct msm_gem_object *msm_obj = to_msm_bo(obj); |
| 371 | int id = aspace ? aspace->id : 0; | ||
| 367 | WARN_ON(!msm_obj->domain[id].iova); | 372 | WARN_ON(!msm_obj->domain[id].iova); |
| 368 | return msm_obj->domain[id].iova; | 373 | return msm_obj->domain[id].iova; |
| 369 | } | 374 | } |
| 370 | 375 | ||
| 371 | void msm_gem_put_iova(struct drm_gem_object *obj, int id) | 376 | void msm_gem_put_iova(struct drm_gem_object *obj, |
| 377 | struct msm_gem_address_space *aspace) | ||
| 372 | { | 378 | { |
| 373 | // XXX TODO .. | 379 | // XXX TODO .. |
| 374 | // NOTE: probably don't need a _locked() version.. we wouldn't | 380 | // NOTE: probably don't need a _locked() version.. we wouldn't |
diff --git a/drivers/gpu/drm/msm/msm_gem.h b/drivers/gpu/drm/msm/msm_gem.h index 1b4cf20043ea..4b4b352b5718 100644 --- a/drivers/gpu/drm/msm/msm_gem.h +++ b/drivers/gpu/drm/msm/msm_gem.h | |||
| @@ -33,6 +33,7 @@ struct msm_gem_address_space { | |||
| 33 | struct drm_mm mm; | 33 | struct drm_mm mm; |
| 34 | struct msm_mmu *mmu; | 34 | struct msm_mmu *mmu; |
| 35 | struct kref kref; | 35 | struct kref kref; |
| 36 | int id; /* temporary */ | ||
| 36 | }; | 37 | }; |
| 37 | 38 | ||
| 38 | struct msm_gem_vma { | 39 | struct msm_gem_vma { |
diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c index 7832e6421d25..c8d01df993da 100644 --- a/drivers/gpu/drm/msm/msm_gem_submit.c +++ b/drivers/gpu/drm/msm/msm_gem_submit.c | |||
| @@ -158,7 +158,7 @@ static void submit_unlock_unpin_bo(struct msm_gem_submit *submit, int i) | |||
| 158 | struct msm_gem_object *msm_obj = submit->bos[i].obj; | 158 | struct msm_gem_object *msm_obj = submit->bos[i].obj; |
| 159 | 159 | ||
| 160 | if (submit->bos[i].flags & BO_PINNED) | 160 | if (submit->bos[i].flags & BO_PINNED) |
| 161 | msm_gem_put_iova(&msm_obj->base, submit->gpu->id); | 161 | msm_gem_put_iova(&msm_obj->base, submit->gpu->aspace); |
| 162 | 162 | ||
| 163 | if (submit->bos[i].flags & BO_LOCKED) | 163 | if (submit->bos[i].flags & BO_LOCKED) |
| 164 | ww_mutex_unlock(&msm_obj->resv->lock); | 164 | ww_mutex_unlock(&msm_obj->resv->lock); |
| @@ -246,7 +246,7 @@ static int submit_pin_objects(struct msm_gem_submit *submit) | |||
| 246 | 246 | ||
| 247 | /* if locking succeeded, pin bo: */ | 247 | /* if locking succeeded, pin bo: */ |
| 248 | ret = msm_gem_get_iova_locked(&msm_obj->base, | 248 | ret = msm_gem_get_iova_locked(&msm_obj->base, |
| 249 | submit->gpu->id, &iova); | 249 | submit->gpu->aspace, &iova); |
| 250 | 250 | ||
| 251 | if (ret) | 251 | if (ret) |
| 252 | break; | 252 | break; |
diff --git a/drivers/gpu/drm/msm/msm_gpu.c b/drivers/gpu/drm/msm/msm_gpu.c index ebbaed442e8a..36f0f1e5fc81 100644 --- a/drivers/gpu/drm/msm/msm_gpu.c +++ b/drivers/gpu/drm/msm/msm_gpu.c | |||
| @@ -416,7 +416,7 @@ static void retire_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit) | |||
| 416 | struct msm_gem_object *msm_obj = submit->bos[i].obj; | 416 | struct msm_gem_object *msm_obj = submit->bos[i].obj; |
| 417 | /* move to inactive: */ | 417 | /* move to inactive: */ |
| 418 | msm_gem_move_to_inactive(&msm_obj->base); | 418 | msm_gem_move_to_inactive(&msm_obj->base); |
| 419 | msm_gem_put_iova(&msm_obj->base, gpu->id); | 419 | msm_gem_put_iova(&msm_obj->base, gpu->aspace); |
| 420 | drm_gem_object_unreference(&msm_obj->base); | 420 | drm_gem_object_unreference(&msm_obj->base); |
| 421 | } | 421 | } |
| 422 | 422 | ||
| @@ -498,7 +498,7 @@ void msm_gpu_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit, | |||
| 498 | /* submit takes a reference to the bo and iova until retired: */ | 498 | /* submit takes a reference to the bo and iova until retired: */ |
| 499 | drm_gem_object_reference(&msm_obj->base); | 499 | drm_gem_object_reference(&msm_obj->base); |
| 500 | msm_gem_get_iova_locked(&msm_obj->base, | 500 | msm_gem_get_iova_locked(&msm_obj->base, |
| 501 | submit->gpu->id, &iova); | 501 | submit->gpu->aspace, &iova); |
| 502 | 502 | ||
| 503 | if (submit->bos[i].flags & MSM_SUBMIT_BO_WRITE) | 503 | if (submit->bos[i].flags & MSM_SUBMIT_BO_WRITE) |
| 504 | msm_gem_move_to_active(&msm_obj->base, gpu, true, submit->fence); | 504 | msm_gem_move_to_active(&msm_obj->base, gpu, true, submit->fence); |
| @@ -694,7 +694,7 @@ void msm_gpu_cleanup(struct msm_gpu *gpu) | |||
| 694 | 694 | ||
| 695 | if (gpu->rb) { | 695 | if (gpu->rb) { |
| 696 | if (gpu->rb_iova) | 696 | if (gpu->rb_iova) |
| 697 | msm_gem_put_iova(gpu->rb->bo, gpu->id); | 697 | msm_gem_put_iova(gpu->rb->bo, gpu->aspace); |
| 698 | msm_ringbuffer_destroy(gpu->rb); | 698 | msm_ringbuffer_destroy(gpu->rb); |
| 699 | } | 699 | } |
| 700 | 700 | ||
