|
@@ -203,6 +203,7 @@ static void r420_clock_resume(struct radeon_device *rdev)
|
|
|
|
|
|
static void r420_cp_errata_init(struct radeon_device *rdev)
|
|
|
{
|
|
|
+ int r;
|
|
|
struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
|
|
|
|
|
|
/* RV410 and R420 can lock up if CP DMA to host memory happens
|
|
@@ -212,7 +213,8 @@ static void r420_cp_errata_init(struct radeon_device *rdev)
|
|
|
* of the CP init, apparently.
|
|
|
*/
|
|
|
radeon_scratch_get(rdev, &rdev->config.r300.resync_scratch);
|
|
|
- radeon_ring_lock(rdev, ring, 8);
|
|
|
+ r = radeon_ring_lock(rdev, ring, 8);
|
|
|
+ WARN_ON(r);
|
|
|
radeon_ring_write(ring, PACKET0(R300_CP_RESYNC_ADDR, 1));
|
|
|
radeon_ring_write(ring, rdev->config.r300.resync_scratch);
|
|
|
radeon_ring_write(ring, 0xDEADBEEF);
|
|
@@ -221,12 +223,14 @@ static void r420_cp_errata_init(struct radeon_device *rdev)
|
|
|
|
|
|
static void r420_cp_errata_fini(struct radeon_device *rdev)
|
|
|
{
|
|
|
+ int r;
|
|
|
struct radeon_ring *ring = &rdev->ring[RADEON_RING_TYPE_GFX_INDEX];
|
|
|
|
|
|
/* Catch the RESYNC we dispatched all the way back,
|
|
|
* at the very beginning of the CP init.
|
|
|
*/
|
|
|
- radeon_ring_lock(rdev, ring, 8);
|
|
|
+ r = radeon_ring_lock(rdev, ring, 8);
|
|
|
+ WARN_ON(r);
|
|
|
radeon_ring_write(ring, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
|
|
|
radeon_ring_write(ring, R300_RB3D_DC_FINISH);
|
|
|
radeon_ring_unlock_commit(rdev, ring, false);
|