aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/qxl/qxl_object.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/qxl/qxl_object.c')
-rw-r--r--drivers/gpu/drm/qxl/qxl_object.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl_object.c
index b95f144f0b49..cdeaf08fdc74 100644
--- a/drivers/gpu/drm/qxl/qxl_object.c
+++ b/drivers/gpu/drm/qxl/qxl_object.c
@@ -36,7 +36,6 @@ static void qxl_ttm_bo_destroy(struct ttm_buffer_object *tbo)
36 qdev = (struct qxl_device *)bo->gem_base.dev->dev_private; 36 qdev = (struct qxl_device *)bo->gem_base.dev->dev_private;
37 37
38 qxl_surface_evict(qdev, bo, false); 38 qxl_surface_evict(qdev, bo, false);
39 qxl_fence_fini(&bo->fence);
40 mutex_lock(&qdev->gem.mutex); 39 mutex_lock(&qdev->gem.mutex);
41 list_del_init(&bo->list); 40 list_del_init(&bo->list);
42 mutex_unlock(&qdev->gem.mutex); 41 mutex_unlock(&qdev->gem.mutex);
@@ -55,21 +54,24 @@ void qxl_ttm_placement_from_domain(struct qxl_bo *qbo, u32 domain, bool pinned)
55{ 54{
56 u32 c = 0; 55 u32 c = 0;
57 u32 pflag = pinned ? TTM_PL_FLAG_NO_EVICT : 0; 56 u32 pflag = pinned ? TTM_PL_FLAG_NO_EVICT : 0;
57 unsigned i;
58 58
59 qbo->placement.fpfn = 0;
60 qbo->placement.lpfn = 0;
61 qbo->placement.placement = qbo->placements; 59 qbo->placement.placement = qbo->placements;
62 qbo->placement.busy_placement = qbo->placements; 60 qbo->placement.busy_placement = qbo->placements;
63 if (domain == QXL_GEM_DOMAIN_VRAM) 61 if (domain == QXL_GEM_DOMAIN_VRAM)
64 qbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_VRAM | pflag; 62 qbo->placements[c++].flags = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_VRAM | pflag;
65 if (domain == QXL_GEM_DOMAIN_SURFACE) 63 if (domain == QXL_GEM_DOMAIN_SURFACE)
66 qbo->placements[c++] = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_PRIV0 | pflag; 64 qbo->placements[c++].flags = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_PRIV0 | pflag;
67 if (domain == QXL_GEM_DOMAIN_CPU) 65 if (domain == QXL_GEM_DOMAIN_CPU)
68 qbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM | pflag; 66 qbo->placements[c++].flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM | pflag;
69 if (!c) 67 if (!c)
70 qbo->placements[c++] = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; 68 qbo->placements[c++].flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
71 qbo->placement.num_placement = c; 69 qbo->placement.num_placement = c;
72 qbo->placement.num_busy_placement = c; 70 qbo->placement.num_busy_placement = c;
71 for (i = 0; i < c; ++i) {
72 qbo->placements[i].fpfn = 0;
73 qbo->placements[i].lpfn = 0;
74 }
73} 75}
74 76
75 77
@@ -99,7 +101,6 @@ int qxl_bo_create(struct qxl_device *qdev,
99 bo->type = domain; 101 bo->type = domain;
100 bo->pin_count = pinned ? 1 : 0; 102 bo->pin_count = pinned ? 1 : 0;
101 bo->surface_id = 0; 103 bo->surface_id = 0;
102 qxl_fence_init(qdev, &bo->fence);
103 INIT_LIST_HEAD(&bo->list); 104 INIT_LIST_HEAD(&bo->list);
104 105
105 if (surf) 106 if (surf)
@@ -109,7 +110,7 @@ int qxl_bo_create(struct qxl_device *qdev,
109 110
110 r = ttm_bo_init(&qdev->mman.bdev, &bo->tbo, size, type, 111 r = ttm_bo_init(&qdev->mman.bdev, &bo->tbo, size, type,
111 &bo->placement, 0, !kernel, NULL, size, 112 &bo->placement, 0, !kernel, NULL, size,
112 NULL, &qxl_ttm_bo_destroy); 113 NULL, NULL, &qxl_ttm_bo_destroy);
113 if (unlikely(r != 0)) { 114 if (unlikely(r != 0)) {
114 if (r != -ERESTARTSYS) 115 if (r != -ERESTARTSYS)
115 dev_err(qdev->dev, 116 dev_err(qdev->dev,
@@ -259,7 +260,7 @@ int qxl_bo_unpin(struct qxl_bo *bo)
259 if (bo->pin_count) 260 if (bo->pin_count)
260 return 0; 261 return 0;
261 for (i = 0; i < bo->placement.num_placement; i++) 262 for (i = 0; i < bo->placement.num_placement; i++)
262 bo->placements[i] &= ~TTM_PL_FLAG_NO_EVICT; 263 bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT;
263 r = ttm_bo_validate(&bo->tbo, &bo->placement, false, false); 264 r = ttm_bo_validate(&bo->tbo, &bo->placement, false, false);
264 if (unlikely(r != 0)) 265 if (unlikely(r != 0))
265 dev_err(qdev->dev, "%p validate failed for unpin\n", bo); 266 dev_err(qdev->dev, "%p validate failed for unpin\n", bo);