diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /drivers/gpu/drm/radeon/radeon_test.c | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff) |
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_test.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_test.c | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_test.c b/drivers/gpu/drm/radeon/radeon_test.c index f8a465d9a1cf..313c96bc09da 100644 --- a/drivers/gpu/drm/radeon/radeon_test.c +++ b/drivers/gpu/drm/radeon/radeon_test.c | |||
@@ -30,8 +30,8 @@ | |||
30 | /* Test BO GTT->VRAM and VRAM->GTT GPU copies across the whole GTT aperture */ | 30 | /* Test BO GTT->VRAM and VRAM->GTT GPU copies across the whole GTT aperture */ |
31 | void radeon_test_moves(struct radeon_device *rdev) | 31 | void radeon_test_moves(struct radeon_device *rdev) |
32 | { | 32 | { |
33 | struct radeon_object *vram_obj = NULL; | 33 | struct radeon_bo *vram_obj = NULL; |
34 | struct radeon_object **gtt_obj = NULL; | 34 | struct radeon_bo **gtt_obj = NULL; |
35 | struct radeon_fence *fence = NULL; | 35 | struct radeon_fence *fence = NULL; |
36 | uint64_t gtt_addr, vram_addr; | 36 | uint64_t gtt_addr, vram_addr; |
37 | unsigned i, n, size; | 37 | unsigned i, n, size; |
@@ -42,8 +42,8 @@ void radeon_test_moves(struct radeon_device *rdev) | |||
42 | /* Number of tests = | 42 | /* Number of tests = |
43 | * (Total GTT - IB pool - writeback page - ring buffer) / test size | 43 | * (Total GTT - IB pool - writeback page - ring buffer) / test size |
44 | */ | 44 | */ |
45 | n = (rdev->mc.gtt_size - RADEON_IB_POOL_SIZE*64*1024 - RADEON_GPU_PAGE_SIZE - | 45 | n = ((u32)(rdev->mc.gtt_size - RADEON_IB_POOL_SIZE*64*1024 - RADEON_GPU_PAGE_SIZE - |
46 | rdev->cp.ring_size) / size; | 46 | rdev->cp.ring_size)) / size; |
47 | 47 | ||
48 | gtt_obj = kzalloc(n * sizeof(*gtt_obj), GFP_KERNEL); | 48 | gtt_obj = kzalloc(n * sizeof(*gtt_obj), GFP_KERNEL); |
49 | if (!gtt_obj) { | 49 | if (!gtt_obj) { |
@@ -52,38 +52,42 @@ void radeon_test_moves(struct radeon_device *rdev) | |||
52 | goto out_cleanup; | 52 | goto out_cleanup; |
53 | } | 53 | } |
54 | 54 | ||
55 | r = radeon_object_create(rdev, NULL, size, true, RADEON_GEM_DOMAIN_VRAM, | 55 | r = radeon_bo_create(rdev, NULL, size, true, RADEON_GEM_DOMAIN_VRAM, |
56 | false, &vram_obj); | 56 | &vram_obj); |
57 | if (r) { | 57 | if (r) { |
58 | DRM_ERROR("Failed to create VRAM object\n"); | 58 | DRM_ERROR("Failed to create VRAM object\n"); |
59 | goto out_cleanup; | 59 | goto out_cleanup; |
60 | } | 60 | } |
61 | 61 | r = radeon_bo_reserve(vram_obj, false); | |
62 | r = radeon_object_pin(vram_obj, RADEON_GEM_DOMAIN_VRAM, &vram_addr); | 62 | if (unlikely(r != 0)) |
63 | goto out_cleanup; | ||
64 | r = radeon_bo_pin(vram_obj, RADEON_GEM_DOMAIN_VRAM, &vram_addr); | ||
63 | if (r) { | 65 | if (r) { |
64 | DRM_ERROR("Failed to pin VRAM object\n"); | 66 | DRM_ERROR("Failed to pin VRAM object\n"); |
65 | goto out_cleanup; | 67 | goto out_cleanup; |
66 | } | 68 | } |
67 | |||
68 | for (i = 0; i < n; i++) { | 69 | for (i = 0; i < n; i++) { |
69 | void *gtt_map, *vram_map; | 70 | void *gtt_map, *vram_map; |
70 | void **gtt_start, **gtt_end; | 71 | void **gtt_start, **gtt_end; |
71 | void **vram_start, **vram_end; | 72 | void **vram_start, **vram_end; |
72 | 73 | ||
73 | r = radeon_object_create(rdev, NULL, size, true, | 74 | r = radeon_bo_create(rdev, NULL, size, true, |
74 | RADEON_GEM_DOMAIN_GTT, false, gtt_obj + i); | 75 | RADEON_GEM_DOMAIN_GTT, gtt_obj + i); |
75 | if (r) { | 76 | if (r) { |
76 | DRM_ERROR("Failed to create GTT object %d\n", i); | 77 | DRM_ERROR("Failed to create GTT object %d\n", i); |
77 | goto out_cleanup; | 78 | goto out_cleanup; |
78 | } | 79 | } |
79 | 80 | ||
80 | r = radeon_object_pin(gtt_obj[i], RADEON_GEM_DOMAIN_GTT, >t_addr); | 81 | r = radeon_bo_reserve(gtt_obj[i], false); |
82 | if (unlikely(r != 0)) | ||
83 | goto out_cleanup; | ||
84 | r = radeon_bo_pin(gtt_obj[i], RADEON_GEM_DOMAIN_GTT, >t_addr); | ||
81 | if (r) { | 85 | if (r) { |
82 | DRM_ERROR("Failed to pin GTT object %d\n", i); | 86 | DRM_ERROR("Failed to pin GTT object %d\n", i); |
83 | goto out_cleanup; | 87 | goto out_cleanup; |
84 | } | 88 | } |
85 | 89 | ||
86 | r = radeon_object_kmap(gtt_obj[i], >t_map); | 90 | r = radeon_bo_kmap(gtt_obj[i], >t_map); |
87 | if (r) { | 91 | if (r) { |
88 | DRM_ERROR("Failed to map GTT object %d\n", i); | 92 | DRM_ERROR("Failed to map GTT object %d\n", i); |
89 | goto out_cleanup; | 93 | goto out_cleanup; |
@@ -94,7 +98,7 @@ void radeon_test_moves(struct radeon_device *rdev) | |||
94 | gtt_start++) | 98 | gtt_start++) |
95 | *gtt_start = gtt_start; | 99 | *gtt_start = gtt_start; |
96 | 100 | ||
97 | radeon_object_kunmap(gtt_obj[i]); | 101 | radeon_bo_kunmap(gtt_obj[i]); |
98 | 102 | ||
99 | r = radeon_fence_create(rdev, &fence); | 103 | r = radeon_fence_create(rdev, &fence); |
100 | if (r) { | 104 | if (r) { |
@@ -116,7 +120,7 @@ void radeon_test_moves(struct radeon_device *rdev) | |||
116 | 120 | ||
117 | radeon_fence_unref(&fence); | 121 | radeon_fence_unref(&fence); |
118 | 122 | ||
119 | r = radeon_object_kmap(vram_obj, &vram_map); | 123 | r = radeon_bo_kmap(vram_obj, &vram_map); |
120 | if (r) { | 124 | if (r) { |
121 | DRM_ERROR("Failed to map VRAM object after copy %d\n", i); | 125 | DRM_ERROR("Failed to map VRAM object after copy %d\n", i); |
122 | goto out_cleanup; | 126 | goto out_cleanup; |
@@ -131,13 +135,13 @@ void radeon_test_moves(struct radeon_device *rdev) | |||
131 | "expected 0x%p (GTT map 0x%p-0x%p)\n", | 135 | "expected 0x%p (GTT map 0x%p-0x%p)\n", |
132 | i, *vram_start, gtt_start, gtt_map, | 136 | i, *vram_start, gtt_start, gtt_map, |
133 | gtt_end); | 137 | gtt_end); |
134 | radeon_object_kunmap(vram_obj); | 138 | radeon_bo_kunmap(vram_obj); |
135 | goto out_cleanup; | 139 | goto out_cleanup; |
136 | } | 140 | } |
137 | *vram_start = vram_start; | 141 | *vram_start = vram_start; |
138 | } | 142 | } |
139 | 143 | ||
140 | radeon_object_kunmap(vram_obj); | 144 | radeon_bo_kunmap(vram_obj); |
141 | 145 | ||
142 | r = radeon_fence_create(rdev, &fence); | 146 | r = radeon_fence_create(rdev, &fence); |
143 | if (r) { | 147 | if (r) { |
@@ -159,7 +163,7 @@ void radeon_test_moves(struct radeon_device *rdev) | |||
159 | 163 | ||
160 | radeon_fence_unref(&fence); | 164 | radeon_fence_unref(&fence); |
161 | 165 | ||
162 | r = radeon_object_kmap(gtt_obj[i], >t_map); | 166 | r = radeon_bo_kmap(gtt_obj[i], >t_map); |
163 | if (r) { | 167 | if (r) { |
164 | DRM_ERROR("Failed to map GTT object after copy %d\n", i); | 168 | DRM_ERROR("Failed to map GTT object after copy %d\n", i); |
165 | goto out_cleanup; | 169 | goto out_cleanup; |
@@ -174,27 +178,33 @@ void radeon_test_moves(struct radeon_device *rdev) | |||
174 | "expected 0x%p (VRAM map 0x%p-0x%p)\n", | 178 | "expected 0x%p (VRAM map 0x%p-0x%p)\n", |
175 | i, *gtt_start, vram_start, vram_map, | 179 | i, *gtt_start, vram_start, vram_map, |
176 | vram_end); | 180 | vram_end); |
177 | radeon_object_kunmap(gtt_obj[i]); | 181 | radeon_bo_kunmap(gtt_obj[i]); |
178 | goto out_cleanup; | 182 | goto out_cleanup; |
179 | } | 183 | } |
180 | } | 184 | } |
181 | 185 | ||
182 | radeon_object_kunmap(gtt_obj[i]); | 186 | radeon_bo_kunmap(gtt_obj[i]); |
183 | 187 | ||
184 | DRM_INFO("Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0x%llx\n", | 188 | DRM_INFO("Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0x%llx\n", |
185 | gtt_addr - rdev->mc.gtt_location); | 189 | gtt_addr - rdev->mc.gtt_start); |
186 | } | 190 | } |
187 | 191 | ||
188 | out_cleanup: | 192 | out_cleanup: |
189 | if (vram_obj) { | 193 | if (vram_obj) { |
190 | radeon_object_unpin(vram_obj); | 194 | if (radeon_bo_is_reserved(vram_obj)) { |
191 | radeon_object_unref(&vram_obj); | 195 | radeon_bo_unpin(vram_obj); |
196 | radeon_bo_unreserve(vram_obj); | ||
197 | } | ||
198 | radeon_bo_unref(&vram_obj); | ||
192 | } | 199 | } |
193 | if (gtt_obj) { | 200 | if (gtt_obj) { |
194 | for (i = 0; i < n; i++) { | 201 | for (i = 0; i < n; i++) { |
195 | if (gtt_obj[i]) { | 202 | if (gtt_obj[i]) { |
196 | radeon_object_unpin(gtt_obj[i]); | 203 | if (radeon_bo_is_reserved(gtt_obj[i])) { |
197 | radeon_object_unref(>t_obj[i]); | 204 | radeon_bo_unpin(gtt_obj[i]); |
205 | radeon_bo_unreserve(gtt_obj[i]); | ||
206 | } | ||
207 | radeon_bo_unref(>t_obj[i]); | ||
198 | } | 208 | } |
199 | } | 209 | } |
200 | kfree(gtt_obj); | 210 | kfree(gtt_obj); |
@@ -206,4 +216,3 @@ out_cleanup: | |||
206 | printk(KERN_WARNING "Error while testing BO move.\n"); | 216 | printk(KERN_WARNING "Error while testing BO move.\n"); |
207 | } | 217 | } |
208 | } | 218 | } |
209 | |||