One user visible fix to stop misreport GPU hangs and subsequent resets. * 'drm-fixes-3.10' of git://people.freedesktop.org/~agd5f/linux: drm/radeon: update lockup tracking when scheduling in empty ring
Unified · Split
| @@ -402,6 +402,13 @@ int radeon_ring_alloc(struct radeon_device *rdev, struct radeon_ring *ring, unsi · 401 unmodified lines | ||
| 402 | 402 | return -ENOMEM; |
| 403 | 403 | /* Align requested size with padding so unlock_commit can |
| 404 | 404 | * pad safely */ |
| 405 | + radeon_ring_free_size(rdev, ring); | |
| 406 | + if (ring->ring_free_dw == (ring->ring_size / 4)) { | |
| 407 | + /* This is an empty ring update lockup info to avoid | |
| 408 | + * false positive. | |
| 409 | + */ | |
| 410 | + radeon_ring_lockup_update(ring); | |
| 411 | + } | |
| 405 | 412 | ndw = (ndw + ring->align_mask) & ~ring->align_mask; |
| 406 | 413 | while (ndw > (ring->ring_free_dw - 1)) { |
| 407 | 414 | radeon_ring_free_size(rdev, ring); |