diff options
Diffstat (limited to 'drivers/gpu/drm/vmwgfx/vmwgfx_mob.c')
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c index 4910e7b81811..04a64b8cd3cd 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | |||
@@ -134,6 +134,7 @@ static int vmw_setup_otable_base(struct vmw_private *dev_priv, | |||
134 | cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); | 134 | cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); |
135 | if (unlikely(cmd == NULL)) { | 135 | if (unlikely(cmd == NULL)) { |
136 | DRM_ERROR("Failed reserving FIFO space for OTable setup.\n"); | 136 | DRM_ERROR("Failed reserving FIFO space for OTable setup.\n"); |
137 | ret = -ENOMEM; | ||
137 | goto out_no_fifo; | 138 | goto out_no_fifo; |
138 | } | 139 | } |
139 | 140 | ||
@@ -187,18 +188,20 @@ static void vmw_takedown_otable_base(struct vmw_private *dev_priv, | |||
187 | 188 | ||
188 | bo = otable->page_table->pt_bo; | 189 | bo = otable->page_table->pt_bo; |
189 | cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); | 190 | cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); |
190 | if (unlikely(cmd == NULL)) | 191 | if (unlikely(cmd == NULL)) { |
191 | DRM_ERROR("Failed reserving FIFO space for OTable setup.\n"); | 192 | DRM_ERROR("Failed reserving FIFO space for OTable " |
192 | 193 | "takedown.\n"); | |
193 | memset(cmd, 0, sizeof(*cmd)); | 194 | } else { |
194 | cmd->header.id = SVGA_3D_CMD_SET_OTABLE_BASE; | 195 | memset(cmd, 0, sizeof(*cmd)); |
195 | cmd->header.size = sizeof(cmd->body); | 196 | cmd->header.id = SVGA_3D_CMD_SET_OTABLE_BASE; |
196 | cmd->body.type = type; | 197 | cmd->header.size = sizeof(cmd->body); |
197 | cmd->body.baseAddress = 0; | 198 | cmd->body.type = type; |
198 | cmd->body.sizeInBytes = 0; | 199 | cmd->body.baseAddress = 0; |
199 | cmd->body.validSizeInBytes = 0; | 200 | cmd->body.sizeInBytes = 0; |
200 | cmd->body.ptDepth = SVGA3D_MOBFMT_INVALID; | 201 | cmd->body.validSizeInBytes = 0; |
201 | vmw_fifo_commit(dev_priv, sizeof(*cmd)); | 202 | cmd->body.ptDepth = SVGA3D_MOBFMT_INVALID; |
203 | vmw_fifo_commit(dev_priv, sizeof(*cmd)); | ||
204 | } | ||
202 | 205 | ||
203 | if (bo) { | 206 | if (bo) { |
204 | int ret; | 207 | int ret; |
@@ -561,11 +564,12 @@ void vmw_mob_unbind(struct vmw_private *dev_priv, | |||
561 | if (unlikely(cmd == NULL)) { | 564 | if (unlikely(cmd == NULL)) { |
562 | DRM_ERROR("Failed reserving FIFO space for Memory " | 565 | DRM_ERROR("Failed reserving FIFO space for Memory " |
563 | "Object unbinding.\n"); | 566 | "Object unbinding.\n"); |
567 | } else { | ||
568 | cmd->header.id = SVGA_3D_CMD_DESTROY_GB_MOB; | ||
569 | cmd->header.size = sizeof(cmd->body); | ||
570 | cmd->body.mobid = mob->id; | ||
571 | vmw_fifo_commit(dev_priv, sizeof(*cmd)); | ||
564 | } | 572 | } |
565 | cmd->header.id = SVGA_3D_CMD_DESTROY_GB_MOB; | ||
566 | cmd->header.size = sizeof(cmd->body); | ||
567 | cmd->body.mobid = mob->id; | ||
568 | vmw_fifo_commit(dev_priv, sizeof(*cmd)); | ||
569 | if (bo) { | 573 | if (bo) { |
570 | vmw_fence_single_bo(bo, NULL); | 574 | vmw_fence_single_bo(bo, NULL); |
571 | ttm_bo_unreserve(bo); | 575 | ttm_bo_unreserve(bo); |