[PATCH 2/2] drm/radeon: SDMA fix hibernation (CI GPU family).
Alex Deucher
alexdeucher at gmail.com
Thu Jun 25 07:56:06 PDT 2015
On Fri, Jun 19, 2015 at 10:32 AM, <j.glisse at gmail.com> wrote:
> From: Jérôme Glisse <jglisse at redhat.com>
>
> In order for hibernation to reliably work we need to properly turn
> off the SDMA block, sadly after numerous attemps i haven't not found
> proper sequence for clean and full shutdown. So simply reset both
> SDMA block, this makes hibernation works reliably on sea island GPU
> family (CI)
>
> Hibernation and suspend to ram were tested (several times) on :
> Bonaire
> Hawaii
> Mullins
> Kaveri
> Kabini
>
> Cc: stable at vger.kernel.org
> Signed-off-by: Jérôme Glisse <jglisse at redhat.com>
> Reviewed-by: Christian König <christian.koenig at amd.com>
Applied the series. thanks!
Alex
> ---
> drivers/gpu/drm/radeon/cik_sdma.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/gpu/drm/radeon/cik_sdma.c b/drivers/gpu/drm/radeon/cik_sdma.c
> index f86eb54..d16f2ee 100644
> --- a/drivers/gpu/drm/radeon/cik_sdma.c
> +++ b/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);
> }
>
> /**
> --
> 2.1.0
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
More information about the dri-devel
mailing list