drm/radeon: fix regression in dynpm due to multi-ring rework
Not all asics have all rings, so make sure the ring is ready before attempting to check it in the dynpm work handler. Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=43367 Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Jerome Glisse <jglisse@redhat.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Родитель
f8fee8f5ac
Коммит
0ec0612a80
|
@ -801,9 +801,13 @@ static void radeon_dynpm_idle_work_handler(struct work_struct *work)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < RADEON_NUM_RINGS; ++i) {
|
for (i = 0; i < RADEON_NUM_RINGS; ++i) {
|
||||||
not_processed += radeon_fence_count_emitted(rdev, i);
|
struct radeon_ring *ring = &rdev->ring[i];
|
||||||
if (not_processed >= 3)
|
|
||||||
break;
|
if (ring->ready) {
|
||||||
|
not_processed += radeon_fence_count_emitted(rdev, i);
|
||||||
|
if (not_processed >= 3)
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (not_processed >= 3) { /* should upclock */
|
if (not_processed >= 3) { /* should upclock */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче