|
@@ -188,18 +188,20 @@ static void vmw_takedown_otable_base(struct vmw_private *dev_priv,
|
|
|
|
|
|
bo = otable->page_table->pt_bo;
|
|
|
cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd));
|
|
|
- if (unlikely(cmd == NULL))
|
|
|
- DRM_ERROR("Failed reserving FIFO space for OTable setup.\n");
|
|
|
-
|
|
|
- memset(cmd, 0, sizeof(*cmd));
|
|
|
- cmd->header.id = SVGA_3D_CMD_SET_OTABLE_BASE;
|
|
|
- cmd->header.size = sizeof(cmd->body);
|
|
|
- cmd->body.type = type;
|
|
|
- cmd->body.baseAddress = 0;
|
|
|
- cmd->body.sizeInBytes = 0;
|
|
|
- cmd->body.validSizeInBytes = 0;
|
|
|
- cmd->body.ptDepth = SVGA3D_MOBFMT_INVALID;
|
|
|
- vmw_fifo_commit(dev_priv, sizeof(*cmd));
|
|
|
+ if (unlikely(cmd == NULL)) {
|
|
|
+ DRM_ERROR("Failed reserving FIFO space for OTable "
|
|
|
+ "takedown.\n");
|
|
|
+ } else {
|
|
|
+ memset(cmd, 0, sizeof(*cmd));
|
|
|
+ cmd->header.id = SVGA_3D_CMD_SET_OTABLE_BASE;
|
|
|
+ cmd->header.size = sizeof(cmd->body);
|
|
|
+ cmd->body.type = type;
|
|
|
+ cmd->body.baseAddress = 0;
|
|
|
+ cmd->body.sizeInBytes = 0;
|
|
|
+ cmd->body.validSizeInBytes = 0;
|
|
|
+ cmd->body.ptDepth = SVGA3D_MOBFMT_INVALID;
|
|
|
+ vmw_fifo_commit(dev_priv, sizeof(*cmd));
|
|
|
+ }
|
|
|
|
|
|
if (bo) {
|
|
|
int ret;
|
|
@@ -562,11 +564,12 @@ void vmw_mob_unbind(struct vmw_private *dev_priv,
|
|
|
if (unlikely(cmd == NULL)) {
|
|
|
DRM_ERROR("Failed reserving FIFO space for Memory "
|
|
|
"Object unbinding.\n");
|
|
|
+ } else {
|
|
|
+ cmd->header.id = SVGA_3D_CMD_DESTROY_GB_MOB;
|
|
|
+ cmd->header.size = sizeof(cmd->body);
|
|
|
+ cmd->body.mobid = mob->id;
|
|
|
+ vmw_fifo_commit(dev_priv, sizeof(*cmd));
|
|
|
}
|
|
|
- cmd->header.id = SVGA_3D_CMD_DESTROY_GB_MOB;
|
|
|
- cmd->header.size = sizeof(cmd->body);
|
|
|
- cmd->body.mobid = mob->id;
|
|
|
- vmw_fifo_commit(dev_priv, sizeof(*cmd));
|
|
|
if (bo) {
|
|
|
vmw_fence_single_bo(bo, NULL);
|
|
|
ttm_bo_unreserve(bo);
|