Loading drivers/gpu/drm/msm/adreno/adreno_gpu.c +3 −4 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ int adreno_hw_init(struct msm_gpu *gpu) DBG("%s", gpu->name); ret = msm_gem_get_iova(gpu->rb->bo, gpu->id, &gpu->rb_iova); ret = msm_gem_get_iova(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); Loading Loading @@ -406,7 +406,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); Loading @@ -423,8 +423,7 @@ void adreno_gpu_cleanup(struct adreno_gpu *gpu) msm_gem_put_vaddr(gpu->memptrs_bo); if (gpu->memptrs_iova) msm_gem_put_iova(gpu->memptrs_bo, gpu->base.id); msm_gem_put_iova(gpu->memptrs_bo, gpu->base.aspace); drm_gem_object_unreference_unlocked(gpu->memptrs_bo); } release_firmware(gpu->pm4); Loading drivers/gpu/drm/msm/dsi-staging/dsi_ctrl.c +29 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "msm_drv.h" #include "msm_kms.h" #include "msm_gpu.h" #include "msm_mmu.h" #include "dsi_ctrl.h" #include "dsi_ctrl_hw.h" #include "dsi_clk.h" Loading Loading @@ -252,6 +253,16 @@ static int dsi_ctrl_debugfs_deinit(struct dsi_ctrl *dsi_ctrl) return 0; } static inline struct msm_gem_address_space* dsi_ctrl_get_aspace(struct dsi_ctrl *dsi_ctrl, int domain) { if (!dsi_ctrl || !dsi_ctrl->drm_dev) return NULL; return msm_gem_smmu_address_space_get(dsi_ctrl->drm_dev, domain); } static int dsi_ctrl_check_state(struct dsi_ctrl *dsi_ctrl, enum dsi_ctrl_driver_ops op, u32 op_state) Loading Loading @@ -1170,8 +1181,17 @@ static int dsi_ctrl_drv_state_init(struct dsi_ctrl *dsi_ctrl) static int dsi_ctrl_buffer_deinit(struct dsi_ctrl *dsi_ctrl) { struct msm_gem_address_space *aspace = NULL; if (dsi_ctrl->tx_cmd_buf) { msm_gem_put_iova(dsi_ctrl->tx_cmd_buf, 0); aspace = dsi_ctrl_get_aspace(dsi_ctrl, MSM_SMMU_DOMAIN_UNSECURE); if (!aspace) { pr_err("failed to get address space\n"); return -ENOMEM; } msm_gem_put_iova(dsi_ctrl->tx_cmd_buf, aspace); msm_gem_free_object(dsi_ctrl->tx_cmd_buf); dsi_ctrl->tx_cmd_buf = NULL; Loading @@ -1184,6 +1204,13 @@ int dsi_ctrl_buffer_init(struct dsi_ctrl *dsi_ctrl) { int rc = 0; u32 iova = 0; struct msm_gem_address_space *aspace = NULL; aspace = dsi_ctrl_get_aspace(dsi_ctrl, MSM_SMMU_DOMAIN_UNSECURE); if (!aspace) { pr_err("failed to get address space\n"); return -ENOMEM; } dsi_ctrl->tx_cmd_buf = msm_gem_new(dsi_ctrl->drm_dev, SZ_4K, Loading @@ -1198,7 +1225,7 @@ int dsi_ctrl_buffer_init(struct dsi_ctrl *dsi_ctrl) dsi_ctrl->cmd_buffer_size = SZ_4K; rc = msm_gem_get_iova(dsi_ctrl->tx_cmd_buf, 0, &iova); rc = msm_gem_get_iova(dsi_ctrl->tx_cmd_buf, aspace, &iova); if (rc) { pr_err("failed to get iova, rc=%d\n", rc); (void)dsi_ctrl_buffer_deinit(dsi_ctrl); Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.c +13 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "msm_drv.h" #include "sde_connector.h" #include "msm_mmu.h" #include "dsi_display.h" #include "dsi_panel.h" #include "dsi_ctrl.h" Loading Loading @@ -1321,6 +1322,7 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, { struct dsi_display *display = to_dsi_display(host); struct dsi_display_ctrl *display_ctrl; struct msm_gem_address_space *aspace = NULL; int rc = 0, cnt = 0; if (!host || !msg) { Loading Loading @@ -1363,7 +1365,16 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, pr_err("value of display->tx_cmd_buf is NULL"); goto error_disable_cmd_engine; } rc = msm_gem_get_iova(display->tx_cmd_buf, 0, aspace = msm_gem_smmu_address_space_get(display->drm_dev, MSM_SMMU_DOMAIN_UNSECURE); if (!aspace) { pr_err("failed to get aspace\n"); rc = -EINVAL; goto free_gem; } rc = msm_gem_get_iova(display->tx_cmd_buf, aspace, &(display->cmd_buffer_iova)); if (rc) { pr_err("failed to get the iova rc %d\n", rc); Loading Loading @@ -1419,7 +1430,7 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, } return rc; put_iova: msm_gem_put_iova(display->tx_cmd_buf, 0); msm_gem_put_iova(display->tx_cmd_buf, aspace); free_gem: msm_gem_free_object(display->tx_cmd_buf); error: Loading drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c +4 −3 Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ static void unref_cursor_worker(struct drm_flip_work *work, void *val) container_of(work, struct mdp4_crtc, unref_cursor_work); struct mdp4_kms *mdp4_kms = get_kms(&mdp4_crtc->base); msm_gem_put_iova(val, mdp4_kms->id); msm_gem_put_iova(val, mdp4_kms->aspace); drm_gem_object_unreference_unlocked(val); } Loading Loading @@ -378,7 +378,8 @@ 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, mdp4_kms->id, &iova); msm_gem_get_iova_locked(next_bo, mdp4_kms->aspace, &iova); /* enable cursor: */ mdp4_write(mdp4_kms, REG_MDP4_DMA_CURSOR_SIZE(dma), Loading Loading @@ -435,7 +436,7 @@ static int mdp4_crtc_cursor_set(struct drm_crtc *crtc, } if (cursor_bo) { ret = msm_gem_get_iova(cursor_bo, mdp4_kms->id, &iova); ret = msm_gem_get_iova(cursor_bo, mdp4_kms->aspace, &iova); if (ret) goto fail; } else { Loading drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c +2 −9 Original line number Diff line number Diff line Loading @@ -184,7 +184,7 @@ static void mdp4_destroy(struct msm_kms *kms) } if (mdp4_kms->blank_cursor_iova) msm_gem_put_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->id); msm_gem_put_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->aspace); drm_gem_object_unreference_unlocked(mdp4_kms->blank_cursor_bo); if (mdp4_kms->rpm_enabled) Loading Loading @@ -582,13 +582,6 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev) aspace = NULL; } mdp4_kms->id = msm_register_address_space(dev, aspace); if (mdp4_kms->id < 0) { ret = mdp4_kms->id; dev_err(dev->dev, "failed to register mdp4 iommu: %d\n", ret); goto fail; } ret = modeset_init(mdp4_kms); if (ret) { dev_err(dev->dev, "modeset_init failed: %d\n", ret); Loading @@ -605,7 +598,7 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev) goto fail; } ret = msm_gem_get_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->id, ret = msm_gem_get_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->aspace, &mdp4_kms->blank_cursor_iova); if (ret) { dev_err(dev->dev, "could not pin blank-cursor bo: %d\n", ret); Loading Loading
drivers/gpu/drm/msm/adreno/adreno_gpu.c +3 −4 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ int adreno_hw_init(struct msm_gpu *gpu) DBG("%s", gpu->name); ret = msm_gem_get_iova(gpu->rb->bo, gpu->id, &gpu->rb_iova); ret = msm_gem_get_iova(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); Loading Loading @@ -406,7 +406,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); Loading @@ -423,8 +423,7 @@ void adreno_gpu_cleanup(struct adreno_gpu *gpu) msm_gem_put_vaddr(gpu->memptrs_bo); if (gpu->memptrs_iova) msm_gem_put_iova(gpu->memptrs_bo, gpu->base.id); msm_gem_put_iova(gpu->memptrs_bo, gpu->base.aspace); drm_gem_object_unreference_unlocked(gpu->memptrs_bo); } release_firmware(gpu->pm4); Loading
drivers/gpu/drm/msm/dsi-staging/dsi_ctrl.c +29 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include "msm_drv.h" #include "msm_kms.h" #include "msm_gpu.h" #include "msm_mmu.h" #include "dsi_ctrl.h" #include "dsi_ctrl_hw.h" #include "dsi_clk.h" Loading Loading @@ -252,6 +253,16 @@ static int dsi_ctrl_debugfs_deinit(struct dsi_ctrl *dsi_ctrl) return 0; } static inline struct msm_gem_address_space* dsi_ctrl_get_aspace(struct dsi_ctrl *dsi_ctrl, int domain) { if (!dsi_ctrl || !dsi_ctrl->drm_dev) return NULL; return msm_gem_smmu_address_space_get(dsi_ctrl->drm_dev, domain); } static int dsi_ctrl_check_state(struct dsi_ctrl *dsi_ctrl, enum dsi_ctrl_driver_ops op, u32 op_state) Loading Loading @@ -1170,8 +1181,17 @@ static int dsi_ctrl_drv_state_init(struct dsi_ctrl *dsi_ctrl) static int dsi_ctrl_buffer_deinit(struct dsi_ctrl *dsi_ctrl) { struct msm_gem_address_space *aspace = NULL; if (dsi_ctrl->tx_cmd_buf) { msm_gem_put_iova(dsi_ctrl->tx_cmd_buf, 0); aspace = dsi_ctrl_get_aspace(dsi_ctrl, MSM_SMMU_DOMAIN_UNSECURE); if (!aspace) { pr_err("failed to get address space\n"); return -ENOMEM; } msm_gem_put_iova(dsi_ctrl->tx_cmd_buf, aspace); msm_gem_free_object(dsi_ctrl->tx_cmd_buf); dsi_ctrl->tx_cmd_buf = NULL; Loading @@ -1184,6 +1204,13 @@ int dsi_ctrl_buffer_init(struct dsi_ctrl *dsi_ctrl) { int rc = 0; u32 iova = 0; struct msm_gem_address_space *aspace = NULL; aspace = dsi_ctrl_get_aspace(dsi_ctrl, MSM_SMMU_DOMAIN_UNSECURE); if (!aspace) { pr_err("failed to get address space\n"); return -ENOMEM; } dsi_ctrl->tx_cmd_buf = msm_gem_new(dsi_ctrl->drm_dev, SZ_4K, Loading @@ -1198,7 +1225,7 @@ int dsi_ctrl_buffer_init(struct dsi_ctrl *dsi_ctrl) dsi_ctrl->cmd_buffer_size = SZ_4K; rc = msm_gem_get_iova(dsi_ctrl->tx_cmd_buf, 0, &iova); rc = msm_gem_get_iova(dsi_ctrl->tx_cmd_buf, aspace, &iova); if (rc) { pr_err("failed to get iova, rc=%d\n", rc); (void)dsi_ctrl_buffer_deinit(dsi_ctrl); Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.c +13 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "msm_drv.h" #include "sde_connector.h" #include "msm_mmu.h" #include "dsi_display.h" #include "dsi_panel.h" #include "dsi_ctrl.h" Loading Loading @@ -1321,6 +1322,7 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, { struct dsi_display *display = to_dsi_display(host); struct dsi_display_ctrl *display_ctrl; struct msm_gem_address_space *aspace = NULL; int rc = 0, cnt = 0; if (!host || !msg) { Loading Loading @@ -1363,7 +1365,16 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, pr_err("value of display->tx_cmd_buf is NULL"); goto error_disable_cmd_engine; } rc = msm_gem_get_iova(display->tx_cmd_buf, 0, aspace = msm_gem_smmu_address_space_get(display->drm_dev, MSM_SMMU_DOMAIN_UNSECURE); if (!aspace) { pr_err("failed to get aspace\n"); rc = -EINVAL; goto free_gem; } rc = msm_gem_get_iova(display->tx_cmd_buf, aspace, &(display->cmd_buffer_iova)); if (rc) { pr_err("failed to get the iova rc %d\n", rc); Loading Loading @@ -1419,7 +1430,7 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_host *host, } return rc; put_iova: msm_gem_put_iova(display->tx_cmd_buf, 0); msm_gem_put_iova(display->tx_cmd_buf, aspace); free_gem: msm_gem_free_object(display->tx_cmd_buf); error: Loading
drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c +4 −3 Original line number Diff line number Diff line Loading @@ -133,7 +133,7 @@ static void unref_cursor_worker(struct drm_flip_work *work, void *val) container_of(work, struct mdp4_crtc, unref_cursor_work); struct mdp4_kms *mdp4_kms = get_kms(&mdp4_crtc->base); msm_gem_put_iova(val, mdp4_kms->id); msm_gem_put_iova(val, mdp4_kms->aspace); drm_gem_object_unreference_unlocked(val); } Loading Loading @@ -378,7 +378,8 @@ 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, mdp4_kms->id, &iova); msm_gem_get_iova_locked(next_bo, mdp4_kms->aspace, &iova); /* enable cursor: */ mdp4_write(mdp4_kms, REG_MDP4_DMA_CURSOR_SIZE(dma), Loading Loading @@ -435,7 +436,7 @@ static int mdp4_crtc_cursor_set(struct drm_crtc *crtc, } if (cursor_bo) { ret = msm_gem_get_iova(cursor_bo, mdp4_kms->id, &iova); ret = msm_gem_get_iova(cursor_bo, mdp4_kms->aspace, &iova); if (ret) goto fail; } else { Loading
drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c +2 −9 Original line number Diff line number Diff line Loading @@ -184,7 +184,7 @@ static void mdp4_destroy(struct msm_kms *kms) } if (mdp4_kms->blank_cursor_iova) msm_gem_put_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->id); msm_gem_put_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->aspace); drm_gem_object_unreference_unlocked(mdp4_kms->blank_cursor_bo); if (mdp4_kms->rpm_enabled) Loading Loading @@ -582,13 +582,6 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev) aspace = NULL; } mdp4_kms->id = msm_register_address_space(dev, aspace); if (mdp4_kms->id < 0) { ret = mdp4_kms->id; dev_err(dev->dev, "failed to register mdp4 iommu: %d\n", ret); goto fail; } ret = modeset_init(mdp4_kms); if (ret) { dev_err(dev->dev, "modeset_init failed: %d\n", ret); Loading @@ -605,7 +598,7 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev) goto fail; } ret = msm_gem_get_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->id, ret = msm_gem_get_iova(mdp4_kms->blank_cursor_bo, mdp4_kms->aspace, &mdp4_kms->blank_cursor_iova); if (ret) { dev_err(dev->dev, "could not pin blank-cursor bo: %d\n", ret); Loading