diff options
Diffstat (limited to 'drivers/gpu/drm/vmwgfx')
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 11 | ||||
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_fence.c | 39 | ||||
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_shader.c | 2 |
8 files changed, 25 insertions, 41 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c index 25f3c250fd98..7b5d22110f25 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | |||
@@ -889,8 +889,7 @@ static int vmw_driver_unload(struct drm_device *dev) | |||
889 | 889 | ||
890 | if (dev_priv->ctx.res_ht_initialized) | 890 | if (dev_priv->ctx.res_ht_initialized) |
891 | drm_ht_remove(&dev_priv->ctx.res_ht); | 891 | drm_ht_remove(&dev_priv->ctx.res_ht); |
892 | if (dev_priv->ctx.cmd_bounce) | 892 | vfree(dev_priv->ctx.cmd_bounce); |
893 | vfree(dev_priv->ctx.cmd_bounce); | ||
894 | if (dev_priv->enable_fb) { | 893 | if (dev_priv->enable_fb) { |
895 | vmw_fb_close(dev_priv); | 894 | vmw_fb_close(dev_priv); |
896 | vmw_kms_restore_vga(dev_priv); | 895 | vmw_kms_restore_vga(dev_priv); |
@@ -1063,8 +1062,12 @@ static long vmw_generic_ioctl(struct file *filp, unsigned int cmd, | |||
1063 | 1062 | ||
1064 | vmaster = vmw_master_check(dev, file_priv, flags); | 1063 | vmaster = vmw_master_check(dev, file_priv, flags); |
1065 | if (unlikely(IS_ERR(vmaster))) { | 1064 | if (unlikely(IS_ERR(vmaster))) { |
1066 | DRM_INFO("IOCTL ERROR %d\n", nr); | 1065 | ret = PTR_ERR(vmaster); |
1067 | return PTR_ERR(vmaster); | 1066 | |
1067 | if (ret != -ERESTARTSYS) | ||
1068 | DRM_INFO("IOCTL ERROR Command %d, Error %ld.\n", | ||
1069 | nr, ret); | ||
1070 | return ret; | ||
1068 | } | 1071 | } |
1069 | 1072 | ||
1070 | ret = ioctl_func(filp, cmd, arg); | 1073 | ret = ioctl_func(filp, cmd, arg); |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c index 596cd6dafd33..33176d05db35 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | |||
@@ -2487,7 +2487,8 @@ int vmw_execbuf_process(struct drm_file *file_priv, | |||
2487 | if (unlikely(ret != 0)) | 2487 | if (unlikely(ret != 0)) |
2488 | goto out_err_nores; | 2488 | goto out_err_nores; |
2489 | 2489 | ||
2490 | ret = ttm_eu_reserve_buffers(&ticket, &sw_context->validate_nodes, true); | 2490 | ret = ttm_eu_reserve_buffers(&ticket, &sw_context->validate_nodes, |
2491 | true, NULL); | ||
2491 | if (unlikely(ret != 0)) | 2492 | if (unlikely(ret != 0)) |
2492 | goto out_err; | 2493 | goto out_err; |
2493 | 2494 | ||
@@ -2677,7 +2678,8 @@ void __vmw_execbuf_release_pinned_bo(struct vmw_private *dev_priv, | |||
2677 | query_val.shared = false; | 2678 | query_val.shared = false; |
2678 | list_add_tail(&query_val.head, &validate_list); | 2679 | list_add_tail(&query_val.head, &validate_list); |
2679 | 2680 | ||
2680 | ret = ttm_eu_reserve_buffers(&ticket, &validate_list, false); | 2681 | ret = ttm_eu_reserve_buffers(&ticket, &validate_list, |
2682 | false, NULL); | ||
2681 | if (unlikely(ret != 0)) { | 2683 | if (unlikely(ret != 0)) { |
2682 | vmw_execbuf_unpin_panic(dev_priv); | 2684 | vmw_execbuf_unpin_panic(dev_priv); |
2683 | goto out_no_reserve; | 2685 | goto out_no_reserve; |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c index 197164fd7803..b7594cb758af 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c | |||
@@ -545,35 +545,19 @@ void vmw_fence_obj_flush(struct vmw_fence_obj *fence) | |||
545 | 545 | ||
546 | static void vmw_fence_destroy(struct vmw_fence_obj *fence) | 546 | static void vmw_fence_destroy(struct vmw_fence_obj *fence) |
547 | { | 547 | { |
548 | struct vmw_fence_manager *fman = fman_from_fence(fence); | ||
549 | |||
550 | fence_free(&fence->base); | 548 | fence_free(&fence->base); |
551 | |||
552 | /* | ||
553 | * Free kernel space accounting. | ||
554 | */ | ||
555 | ttm_mem_global_free(vmw_mem_glob(fman->dev_priv), | ||
556 | fman->fence_size); | ||
557 | } | 549 | } |
558 | 550 | ||
559 | int vmw_fence_create(struct vmw_fence_manager *fman, | 551 | int vmw_fence_create(struct vmw_fence_manager *fman, |
560 | uint32_t seqno, | 552 | uint32_t seqno, |
561 | struct vmw_fence_obj **p_fence) | 553 | struct vmw_fence_obj **p_fence) |
562 | { | 554 | { |
563 | struct ttm_mem_global *mem_glob = vmw_mem_glob(fman->dev_priv); | ||
564 | struct vmw_fence_obj *fence; | 555 | struct vmw_fence_obj *fence; |
565 | int ret; | 556 | int ret; |
566 | 557 | ||
567 | ret = ttm_mem_global_alloc(mem_glob, fman->fence_size, | ||
568 | false, false); | ||
569 | if (unlikely(ret != 0)) | ||
570 | return ret; | ||
571 | |||
572 | fence = kzalloc(sizeof(*fence), GFP_KERNEL); | 558 | fence = kzalloc(sizeof(*fence), GFP_KERNEL); |
573 | if (unlikely(fence == NULL)) { | 559 | if (unlikely(fence == NULL)) |
574 | ret = -ENOMEM; | 560 | return -ENOMEM; |
575 | goto out_no_object; | ||
576 | } | ||
577 | 561 | ||
578 | ret = vmw_fence_obj_init(fman, fence, seqno, | 562 | ret = vmw_fence_obj_init(fman, fence, seqno, |
579 | vmw_fence_destroy); | 563 | vmw_fence_destroy); |
@@ -585,8 +569,6 @@ int vmw_fence_create(struct vmw_fence_manager *fman, | |||
585 | 569 | ||
586 | out_err_init: | 570 | out_err_init: |
587 | kfree(fence); | 571 | kfree(fence); |
588 | out_no_object: | ||
589 | ttm_mem_global_free(mem_glob, fman->fence_size); | ||
590 | return ret; | 572 | return ret; |
591 | } | 573 | } |
592 | 574 | ||
@@ -1105,6 +1087,8 @@ static int vmw_event_fence_action_create(struct drm_file *file_priv, | |||
1105 | if (ret != 0) | 1087 | if (ret != 0) |
1106 | goto out_no_queue; | 1088 | goto out_no_queue; |
1107 | 1089 | ||
1090 | return 0; | ||
1091 | |||
1108 | out_no_queue: | 1092 | out_no_queue: |
1109 | event->base.destroy(&event->base); | 1093 | event->base.destroy(&event->base); |
1110 | out_no_event: | 1094 | out_no_event: |
@@ -1180,17 +1164,10 @@ int vmw_fence_event_ioctl(struct drm_device *dev, void *data, | |||
1180 | 1164 | ||
1181 | BUG_ON(fence == NULL); | 1165 | BUG_ON(fence == NULL); |
1182 | 1166 | ||
1183 | if (arg->flags & DRM_VMW_FE_FLAG_REQ_TIME) | 1167 | ret = vmw_event_fence_action_create(file_priv, fence, |
1184 | ret = vmw_event_fence_action_create(file_priv, fence, | 1168 | arg->flags, |
1185 | arg->flags, | 1169 | arg->user_data, |
1186 | arg->user_data, | 1170 | true); |
1187 | true); | ||
1188 | else | ||
1189 | ret = vmw_event_fence_action_create(file_priv, fence, | ||
1190 | arg->flags, | ||
1191 | arg->user_data, | ||
1192 | true); | ||
1193 | |||
1194 | if (unlikely(ret != 0)) { | 1171 | if (unlikely(ret != 0)) { |
1195 | if (ret != -ERESTARTSYS) | 1172 | if (ret != -ERESTARTSYS) |
1196 | DRM_ERROR("Failed to attach event to fence.\n"); | 1173 | DRM_ERROR("Failed to attach event to fence.\n"); |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 941a7bc0b791..3725b521d931 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | |||
@@ -252,7 +252,7 @@ int vmw_du_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv, | |||
252 | ret = 0; | 252 | ret = 0; |
253 | out: | 253 | out: |
254 | drm_modeset_unlock_all(dev_priv->dev); | 254 | drm_modeset_unlock_all(dev_priv->dev); |
255 | drm_modeset_lock_crtc(crtc); | 255 | drm_modeset_lock_crtc(crtc, crtc->cursor); |
256 | 256 | ||
257 | return ret; | 257 | return ret; |
258 | } | 258 | } |
@@ -281,7 +281,7 @@ int vmw_du_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) | |||
281 | du->cursor_y + du->hotspot_y); | 281 | du->cursor_y + du->hotspot_y); |
282 | 282 | ||
283 | drm_modeset_unlock_all(dev_priv->dev); | 283 | drm_modeset_unlock_all(dev_priv->dev); |
284 | drm_modeset_lock_crtc(crtc); | 284 | drm_modeset_lock_crtc(crtc, crtc->cursor); |
285 | 285 | ||
286 | return 0; | 286 | return 0; |
287 | } | 287 | } |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c index 15e185ae4c99..5c289f748ab4 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | |||
@@ -26,6 +26,7 @@ | |||
26 | **************************************************************************/ | 26 | **************************************************************************/ |
27 | 27 | ||
28 | #include "vmwgfx_kms.h" | 28 | #include "vmwgfx_kms.h" |
29 | #include <drm/drm_plane_helper.h> | ||
29 | 30 | ||
30 | 31 | ||
31 | #define vmw_crtc_to_ldu(x) \ | 32 | #define vmw_crtc_to_ldu(x) \ |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c index 026de7cea0f6..210ef15b1d09 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | |||
@@ -1222,7 +1222,7 @@ vmw_resource_check_buffer(struct vmw_resource *res, | |||
1222 | val_buf->bo = ttm_bo_reference(&res->backup->base); | 1222 | val_buf->bo = ttm_bo_reference(&res->backup->base); |
1223 | val_buf->shared = false; | 1223 | val_buf->shared = false; |
1224 | list_add_tail(&val_buf->head, &val_list); | 1224 | list_add_tail(&val_buf->head, &val_list); |
1225 | ret = ttm_eu_reserve_buffers(NULL, &val_list, interruptible); | 1225 | ret = ttm_eu_reserve_buffers(NULL, &val_list, interruptible, NULL); |
1226 | if (unlikely(ret != 0)) | 1226 | if (unlikely(ret != 0)) |
1227 | goto out_no_reserve; | 1227 | goto out_no_reserve; |
1228 | 1228 | ||
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c index b295463a60b3..7dc591d04d9a 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | |||
@@ -26,6 +26,7 @@ | |||
26 | **************************************************************************/ | 26 | **************************************************************************/ |
27 | 27 | ||
28 | #include "vmwgfx_kms.h" | 28 | #include "vmwgfx_kms.h" |
29 | #include <drm/drm_plane_helper.h> | ||
29 | 30 | ||
30 | 31 | ||
31 | #define vmw_crtc_to_sou(x) \ | 32 | #define vmw_crtc_to_sou(x) \ |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c index 8719fb3cccc9..6a4584a43aa6 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c | |||
@@ -198,7 +198,7 @@ static int vmw_gb_shader_bind(struct vmw_resource *res, | |||
198 | cmd->header.size = sizeof(cmd->body); | 198 | cmd->header.size = sizeof(cmd->body); |
199 | cmd->body.shid = res->id; | 199 | cmd->body.shid = res->id; |
200 | cmd->body.mobid = bo->mem.start; | 200 | cmd->body.mobid = bo->mem.start; |
201 | cmd->body.offsetInBytes = 0; | 201 | cmd->body.offsetInBytes = res->backup_offset; |
202 | res->backup_dirty = false; | 202 | res->backup_dirty = false; |
203 | vmw_fifo_commit(dev_priv, sizeof(*cmd)); | 203 | vmw_fifo_commit(dev_priv, sizeof(*cmd)); |
204 | 204 | ||