X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=kernel%2Fdrivers%2Fgpu%2Fdrm%2Fradeon%2Fcik_sdma.c;fp=kernel%2Fdrivers%2Fgpu%2Fdrm%2Fradeon%2Fcik_sdma.c;h=d16f2eebd95e6b2df5412d072023a89d43d32ae2;hb=fdb8b20906f3546ba6c2f9f0686d8a5189516ba3;hp=f86eb54e7763d65341006c4ff25f4e8f8076760c;hpb=cc84a1f21026270463b580f2564f9d71912b20db;p=kvmfornfv.git diff --git a/kernel/drivers/gpu/drm/radeon/cik_sdma.c b/kernel/drivers/gpu/drm/radeon/cik_sdma.c index f86eb54e7..d16f2eebd 100644 --- a/kernel/drivers/gpu/drm/radeon/cik_sdma.c +++ b/kernel/drivers/gpu/drm/radeon/cik_sdma.c @@ -268,6 +268,17 @@ static void cik_sdma_gfx_stop(struct radeon_device *rdev) } rdev->ring[R600_RING_TYPE_DMA_INDEX].ready = false; rdev->ring[CAYMAN_RING_TYPE_DMA1_INDEX].ready = false; + + /* FIXME use something else than big hammer but after few days can not + * seem to find good combination so reset SDMA blocks as it seems we + * do not shut them down properly. This fix hibernation and does not + * affect suspend to ram. + */ + WREG32(SRBM_SOFT_RESET, SOFT_RESET_SDMA | SOFT_RESET_SDMA1); + (void)RREG32(SRBM_SOFT_RESET); + udelay(50); + WREG32(SRBM_SOFT_RESET, 0); + (void)RREG32(SRBM_SOFT_RESET); } /**