diff options
-rw-r--r-- | drivers/gpu/drm/radeon/evergreen.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/ni.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r100.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r300.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r420.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r520.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/r600.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_ring.c | 30 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rs400.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rs600.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rs690.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rv515.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/rv770.c | 7 |
14 files changed, 57 insertions, 60 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index eed7acefb492..8b7a01b85374 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c | |||
@@ -3376,12 +3376,9 @@ static int evergreen_startup(struct radeon_device *rdev) | |||
3376 | if (r) | 3376 | if (r) |
3377 | return r; | 3377 | return r; |
3378 | 3378 | ||
3379 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 3379 | r = radeon_ib_ring_tests(rdev); |
3380 | if (r) { | 3380 | if (r) |
3381 | DRM_ERROR("radeon: failed testing IB (%d).\n", r); | ||
3382 | rdev->accel_working = false; | ||
3383 | return r; | 3381 | return r; |
3384 | } | ||
3385 | 3382 | ||
3386 | r = r600_audio_init(rdev); | 3383 | r = r600_audio_init(rdev); |
3387 | if (r) { | 3384 | if (r) { |
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c index a48ca53fcd6a..01464289d32c 100644 --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c | |||
@@ -1601,12 +1601,9 @@ static int cayman_startup(struct radeon_device *rdev) | |||
1601 | if (r) | 1601 | if (r) |
1602 | return r; | 1602 | return r; |
1603 | 1603 | ||
1604 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 1604 | r = radeon_ib_ring_tests(rdev); |
1605 | if (r) { | 1605 | if (r) |
1606 | DRM_ERROR("radeon: failed testing IB (%d).\n", r); | ||
1607 | rdev->accel_working = false; | ||
1608 | return r; | 1606 | return r; |
1609 | } | ||
1610 | 1607 | ||
1611 | r = radeon_vm_manager_start(rdev); | 1608 | r = radeon_vm_manager_start(rdev); |
1612 | if (r) | 1609 | if (r) |
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c index a0b44a557bfd..825f11774491 100644 --- a/drivers/gpu/drm/radeon/r100.c +++ b/drivers/gpu/drm/radeon/r100.c | |||
@@ -3968,12 +3968,9 @@ static int r100_startup(struct radeon_device *rdev) | |||
3968 | if (r) | 3968 | if (r) |
3969 | return r; | 3969 | return r; |
3970 | 3970 | ||
3971 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 3971 | r = radeon_ib_ring_tests(rdev); |
3972 | if (r) { | 3972 | if (r) |
3973 | dev_err(rdev->dev, "failed testing IB (%d).\n", r); | ||
3974 | rdev->accel_working = false; | ||
3975 | return r; | 3973 | return r; |
3976 | } | ||
3977 | 3974 | ||
3978 | return 0; | 3975 | return 0; |
3979 | } | 3976 | } |
diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c index a63f4324f0da..26e0db87beb5 100644 --- a/drivers/gpu/drm/radeon/r300.c +++ b/drivers/gpu/drm/radeon/r300.c | |||
@@ -1417,12 +1417,9 @@ static int r300_startup(struct radeon_device *rdev) | |||
1417 | if (r) | 1417 | if (r) |
1418 | return r; | 1418 | return r; |
1419 | 1419 | ||
1420 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 1420 | r = radeon_ib_ring_tests(rdev); |
1421 | if (r) { | 1421 | if (r) |
1422 | dev_err(rdev->dev, "failed testing IB (%d).\n", r); | ||
1423 | rdev->accel_working = false; | ||
1424 | return r; | 1422 | return r; |
1425 | } | ||
1426 | 1423 | ||
1427 | return 0; | 1424 | return 0; |
1428 | } | 1425 | } |
diff --git a/drivers/gpu/drm/radeon/r420.c b/drivers/gpu/drm/radeon/r420.c index f3fcaacfea01..99137be7a300 100644 --- a/drivers/gpu/drm/radeon/r420.c +++ b/drivers/gpu/drm/radeon/r420.c | |||
@@ -279,12 +279,9 @@ static int r420_startup(struct radeon_device *rdev) | |||
279 | if (r) | 279 | if (r) |
280 | return r; | 280 | return r; |
281 | 281 | ||
282 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 282 | r = radeon_ib_ring_tests(rdev); |
283 | if (r) { | 283 | if (r) |
284 | dev_err(rdev->dev, "failed testing IB (%d).\n", r); | ||
285 | rdev->accel_working = false; | ||
286 | return r; | 284 | return r; |
287 | } | ||
288 | 285 | ||
289 | return 0; | 286 | return 0; |
290 | } | 287 | } |
diff --git a/drivers/gpu/drm/radeon/r520.c b/drivers/gpu/drm/radeon/r520.c index ebcc15b03c9f..b5cf8375cd25 100644 --- a/drivers/gpu/drm/radeon/r520.c +++ b/drivers/gpu/drm/radeon/r520.c | |||
@@ -207,12 +207,10 @@ static int r520_startup(struct radeon_device *rdev) | |||
207 | if (r) | 207 | if (r) |
208 | return r; | 208 | return r; |
209 | 209 | ||
210 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 210 | r = radeon_ib_ring_tests(rdev); |
211 | if (r) { | 211 | if (r) |
212 | dev_err(rdev->dev, "failed testing IB (%d).\n", r); | ||
213 | rdev->accel_working = false; | ||
214 | return r; | 212 | return r; |
215 | } | 213 | |
216 | return 0; | 214 | return 0; |
217 | } | 215 | } |
218 | 216 | ||
diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index 222245d0138a..6070f9099507 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c | |||
@@ -2494,12 +2494,9 @@ int r600_startup(struct radeon_device *rdev) | |||
2494 | if (r) | 2494 | if (r) |
2495 | return r; | 2495 | return r; |
2496 | 2496 | ||
2497 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 2497 | r = radeon_ib_ring_tests(rdev); |
2498 | if (r) { | 2498 | if (r) |
2499 | DRM_ERROR("radeon: failed testing IB (%d).\n", r); | ||
2500 | rdev->accel_working = false; | ||
2501 | return r; | 2499 | return r; |
2502 | } | ||
2503 | 2500 | ||
2504 | return 0; | 2501 | return 0; |
2505 | } | 2502 | } |
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index c76724be8b80..65855af290a6 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -802,6 +802,7 @@ int radeon_ib_pool_init(struct radeon_device *rdev); | |||
802 | void radeon_ib_pool_fini(struct radeon_device *rdev); | 802 | void radeon_ib_pool_fini(struct radeon_device *rdev); |
803 | int radeon_ib_pool_start(struct radeon_device *rdev); | 803 | int radeon_ib_pool_start(struct radeon_device *rdev); |
804 | int radeon_ib_pool_suspend(struct radeon_device *rdev); | 804 | int radeon_ib_pool_suspend(struct radeon_device *rdev); |
805 | int radeon_ib_ring_tests(struct radeon_device *rdev); | ||
805 | /* Ring access between begin & end cannot sleep */ | 806 | /* Ring access between begin & end cannot sleep */ |
806 | int radeon_ring_index(struct radeon_device *rdev, struct radeon_ring *cp); | 807 | int radeon_ring_index(struct radeon_device *rdev, struct radeon_ring *cp); |
807 | void radeon_ring_free_size(struct radeon_device *rdev, struct radeon_ring *cp); | 808 | void radeon_ring_free_size(struct radeon_device *rdev, struct radeon_ring *cp); |
diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c index b6eb1d2a7679..1b020ef7fcdd 100644 --- a/drivers/gpu/drm/radeon/radeon_ring.c +++ b/drivers/gpu/drm/radeon/radeon_ring.c | |||
@@ -267,6 +267,36 @@ int radeon_ib_pool_suspend(struct radeon_device *rdev) | |||
267 | return radeon_sa_bo_manager_suspend(rdev, &rdev->ib_pool.sa_manager); | 267 | return radeon_sa_bo_manager_suspend(rdev, &rdev->ib_pool.sa_manager); |
268 | } | 268 | } |
269 | 269 | ||
270 | int radeon_ib_ring_tests(struct radeon_device *rdev) | ||
271 | { | ||
272 | unsigned i; | ||
273 | int r; | ||
274 | |||
275 | for (i = 0; i < RADEON_NUM_RINGS; ++i) { | ||
276 | struct radeon_ring *ring = &rdev->ring[i]; | ||
277 | |||
278 | if (!ring->ready) | ||
279 | continue; | ||
280 | |||
281 | r = radeon_ib_test(rdev, i, ring); | ||
282 | if (r) { | ||
283 | ring->ready = false; | ||
284 | |||
285 | if (i == RADEON_RING_TYPE_GFX_INDEX) { | ||
286 | /* oh, oh, that's really bad */ | ||
287 | DRM_ERROR("radeon: failed testing IB on GFX ring (%d).\n", r); | ||
288 | rdev->accel_working = false; | ||
289 | return r; | ||
290 | |||
291 | } else { | ||
292 | /* still not good, but we can live with it */ | ||
293 | DRM_ERROR("radeon: failed testing IB on ring %d (%d).\n", i, r); | ||
294 | } | ||
295 | } | ||
296 | } | ||
297 | return 0; | ||
298 | } | ||
299 | |||
270 | /* | 300 | /* |
271 | * Ring. | 301 | * Ring. |
272 | */ | 302 | */ |
diff --git a/drivers/gpu/drm/radeon/rs400.c b/drivers/gpu/drm/radeon/rs400.c index 4cf381b3a6d8..a464eb5e2df2 100644 --- a/drivers/gpu/drm/radeon/rs400.c +++ b/drivers/gpu/drm/radeon/rs400.c | |||
@@ -430,12 +430,9 @@ static int rs400_startup(struct radeon_device *rdev) | |||
430 | if (r) | 430 | if (r) |
431 | return r; | 431 | return r; |
432 | 432 | ||
433 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 433 | r = radeon_ib_ring_tests(rdev); |
434 | if (r) { | 434 | if (r) |
435 | dev_err(rdev->dev, "failed testing IB (%d).\n", r); | ||
436 | rdev->accel_working = false; | ||
437 | return r; | 435 | return r; |
438 | } | ||
439 | 436 | ||
440 | return 0; | 437 | return 0; |
441 | } | 438 | } |
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c index 7fb3b1f2ed15..25f9eef12c42 100644 --- a/drivers/gpu/drm/radeon/rs600.c +++ b/drivers/gpu/drm/radeon/rs600.c | |||
@@ -918,12 +918,9 @@ static int rs600_startup(struct radeon_device *rdev) | |||
918 | if (r) | 918 | if (r) |
919 | return r; | 919 | return r; |
920 | 920 | ||
921 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 921 | r = radeon_ib_ring_tests(rdev); |
922 | if (r) { | 922 | if (r) |
923 | dev_err(rdev->dev, "failed testing IB (%d).\n", r); | ||
924 | rdev->accel_working = false; | ||
925 | return r; | 923 | return r; |
926 | } | ||
927 | 924 | ||
928 | return 0; | 925 | return 0; |
929 | } | 926 | } |
diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c index f2c3b9d75f18..3277ddecfe9f 100644 --- a/drivers/gpu/drm/radeon/rs690.c +++ b/drivers/gpu/drm/radeon/rs690.c | |||
@@ -647,12 +647,9 @@ static int rs690_startup(struct radeon_device *rdev) | |||
647 | if (r) | 647 | if (r) |
648 | return r; | 648 | return r; |
649 | 649 | ||
650 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 650 | r = radeon_ib_ring_tests(rdev); |
651 | if (r) { | 651 | if (r) |
652 | dev_err(rdev->dev, "failed testing IB (%d).\n", r); | ||
653 | rdev->accel_working = false; | ||
654 | return r; | 652 | return r; |
655 | } | ||
656 | 653 | ||
657 | return 0; | 654 | return 0; |
658 | } | 655 | } |
diff --git a/drivers/gpu/drm/radeon/rv515.c b/drivers/gpu/drm/radeon/rv515.c index d8d78fe17946..7f08cedb5333 100644 --- a/drivers/gpu/drm/radeon/rv515.c +++ b/drivers/gpu/drm/radeon/rv515.c | |||
@@ -412,12 +412,10 @@ static int rv515_startup(struct radeon_device *rdev) | |||
412 | if (r) | 412 | if (r) |
413 | return r; | 413 | return r; |
414 | 414 | ||
415 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 415 | r = radeon_ib_ring_tests(rdev); |
416 | if (r) { | 416 | if (r) |
417 | dev_err(rdev->dev, "failed testing IB (%d).\n", r); | ||
418 | rdev->accel_working = false; | ||
419 | return r; | 417 | return r; |
420 | } | 418 | |
421 | return 0; | 419 | return 0; |
422 | } | 420 | } |
423 | 421 | ||
diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index c62ae4be3845..cacec0e20ae3 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c | |||
@@ -1114,12 +1114,9 @@ static int rv770_startup(struct radeon_device *rdev) | |||
1114 | if (r) | 1114 | if (r) |
1115 | return r; | 1115 | return r; |
1116 | 1116 | ||
1117 | r = radeon_ib_test(rdev, RADEON_RING_TYPE_GFX_INDEX, &rdev->ring[RADEON_RING_TYPE_GFX_INDEX]); | 1117 | r = radeon_ib_ring_tests(rdev); |
1118 | if (r) { | 1118 | if (r) |
1119 | dev_err(rdev->dev, "IB test failed (%d).\n", r); | ||
1120 | rdev->accel_working = false; | ||
1121 | return r; | 1119 | return r; |
1122 | } | ||
1123 | 1120 | ||
1124 | return 0; | 1121 | return 0; |
1125 | } | 1122 | } |