aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/vmwgfx
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/vmwgfx')
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_drv.c11
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c6
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_fence.c39
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_kms.c4
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c1
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_resource.c2
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c1
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_shader.c2
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
546static void vmw_fence_destroy(struct vmw_fence_obj *fence) 546static 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
559int vmw_fence_create(struct vmw_fence_manager *fman, 551int 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
586out_err_init: 570out_err_init:
587 kfree(fence); 571 kfree(fence);
588out_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
1108out_no_queue: 1092out_no_queue:
1109 event->base.destroy(&event->base); 1093 event->base.destroy(&event->base);
1110out_no_event: 1094out_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;
253out: 253out:
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