From: "Christian König" <deathsimple@vodafone.de>
To: alexdeucher@gmail.com
Cc: Alex Deucher <alexander.deucher@amd.com>,
stable@vger.kernel.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 2/2] drm/radeon: tear down the IB pool on suspend
Date: Tue, 12 Mar 2013 09:52:04 +0100 [thread overview]
Message-ID: <513EECB4.4010906@vodafone.de> (raw)
In-Reply-To: <1363035984-4861-3-git-send-email-alexdeucher@gmail.com>
NAK! I removed this on purpose some time ago, the IB pool is in GART
memory, which essential is system memory.
So we don't need to unlock/unpin the IB pool on suspend.
Ontop of this it is quite dangerous to do so in a case of a GPU reset,
cause then there still might be IBs in the fly and if you call
radeon_ib_fini all of the addresses stitched together so far become
invalid because of the unlock/unpin/free of the sa bo.
Christian.
Am 11.03.2013 22:06, schrieb alexdeucher@gmail.com:
> From: Alex Deucher <alexander.deucher@amd.com>
>
> Otherwise we may end up with stale MC addresses
> after resume.
>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> Cc: stable@vger.kernel.org
> ---
> drivers/gpu/drm/radeon/evergreen.c | 1 +
> drivers/gpu/drm/radeon/ni.c | 1 +
> drivers/gpu/drm/radeon/r100.c | 1 +
> drivers/gpu/drm/radeon/r300.c | 1 +
> drivers/gpu/drm/radeon/r420.c | 1 +
> drivers/gpu/drm/radeon/r600.c | 1 +
> drivers/gpu/drm/radeon/rs400.c | 1 +
> drivers/gpu/drm/radeon/rs600.c | 1 +
> drivers/gpu/drm/radeon/rs690.c | 1 +
> drivers/gpu/drm/radeon/rv515.c | 1 +
> drivers/gpu/drm/radeon/rv770.c | 1 +
> drivers/gpu/drm/radeon/si.c | 1 +
> 12 files changed, 12 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
> index 305a657..f0e64a4 100644
> --- a/drivers/gpu/drm/radeon/evergreen.c
> +++ b/drivers/gpu/drm/radeon/evergreen.c
> @@ -3720,6 +3720,7 @@ int evergreen_suspend(struct radeon_device *rdev)
> r600_dma_stop(rdev);
> evergreen_irq_suspend(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> evergreen_pcie_gart_disable(rdev);
>
> return 0;
> diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
> index e6f3989..367b7a1 100644
> --- a/drivers/gpu/drm/radeon/ni.c
> +++ b/drivers/gpu/drm/radeon/ni.c
> @@ -1785,6 +1785,7 @@ int cayman_suspend(struct radeon_device *rdev)
> cayman_dma_stop(rdev);
> evergreen_irq_suspend(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> cayman_pcie_gart_disable(rdev);
> return 0;
> }
> diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
> index 9db5853..691dc93 100644
> --- a/drivers/gpu/drm/radeon/r100.c
> +++ b/drivers/gpu/drm/radeon/r100.c
> @@ -3892,6 +3892,7 @@ int r100_suspend(struct radeon_device *rdev)
> {
> r100_cp_disable(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> r100_irq_disable(rdev);
> if (rdev->flags & RADEON_IS_PCI)
> r100_pci_gart_disable(rdev);
> diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
> index c60350e..28ff068 100644
> --- a/drivers/gpu/drm/radeon/r300.c
> +++ b/drivers/gpu/drm/radeon/r300.c
> @@ -1436,6 +1436,7 @@ int r300_suspend(struct radeon_device *rdev)
> {
> r100_cp_disable(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> r100_irq_disable(rdev);
> if (rdev->flags & RADEON_IS_PCIE)
> rv370_pcie_gart_disable(rdev);
> diff --git a/drivers/gpu/drm/radeon/r420.c b/drivers/gpu/drm/radeon/r420.c
> index 6fce2eb..6edecc8 100644
> --- a/drivers/gpu/drm/radeon/r420.c
> +++ b/drivers/gpu/drm/radeon/r420.c
> @@ -325,6 +325,7 @@ int r420_suspend(struct radeon_device *rdev)
> r420_cp_errata_fini(rdev);
> r100_cp_disable(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> r100_irq_disable(rdev);
> if (rdev->flags & RADEON_IS_PCIE)
> rv370_pcie_gart_disable(rdev);
> diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
> index 0740db3..6166c7e 100644
> --- a/drivers/gpu/drm/radeon/r600.c
> +++ b/drivers/gpu/drm/radeon/r600.c
> @@ -3031,6 +3031,7 @@ int r600_suspend(struct radeon_device *rdev)
> r600_dma_stop(rdev);
> r600_irq_suspend(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> r600_pcie_gart_disable(rdev);
>
> return 0;
> diff --git a/drivers/gpu/drm/radeon/rs400.c b/drivers/gpu/drm/radeon/rs400.c
> index 73051ce..5eaf41f 100644
> --- a/drivers/gpu/drm/radeon/rs400.c
> +++ b/drivers/gpu/drm/radeon/rs400.c
> @@ -470,6 +470,7 @@ int rs400_suspend(struct radeon_device *rdev)
> {
> r100_cp_disable(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> r100_irq_disable(rdev);
> rs400_gart_disable(rdev);
> return 0;
> diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
> index 5a0fc74..8f70d78 100644
> --- a/drivers/gpu/drm/radeon/rs600.c
> +++ b/drivers/gpu/drm/radeon/rs600.c
> @@ -945,6 +945,7 @@ int rs600_suspend(struct radeon_device *rdev)
> r600_audio_fini(rdev);
> r100_cp_disable(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> rs600_irq_disable(rdev);
> rs600_gart_disable(rdev);
> return 0;
> diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c
> index 5706d2a..a9e7890 100644
> --- a/drivers/gpu/drm/radeon/rs690.c
> +++ b/drivers/gpu/drm/radeon/rs690.c
> @@ -686,6 +686,7 @@ int rs690_suspend(struct radeon_device *rdev)
> r600_audio_fini(rdev);
> r100_cp_disable(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> rs600_irq_disable(rdev);
> rs400_gart_disable(rdev);
> return 0;
> diff --git a/drivers/gpu/drm/radeon/rv515.c b/drivers/gpu/drm/radeon/rv515.c
> index 435ed35..73ce8a3 100644
> --- a/drivers/gpu/drm/radeon/rv515.c
> +++ b/drivers/gpu/drm/radeon/rv515.c
> @@ -530,6 +530,7 @@ int rv515_suspend(struct radeon_device *rdev)
> {
> r100_cp_disable(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> rs600_irq_disable(rdev);
> if (rdev->flags & RADEON_IS_PCIE)
> rv370_pcie_gart_disable(rdev);
> diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
> index d63fe1d..021a056 100644
> --- a/drivers/gpu/drm/radeon/rv770.c
> +++ b/drivers/gpu/drm/radeon/rv770.c
> @@ -1119,6 +1119,7 @@ int rv770_suspend(struct radeon_device *rdev)
> r600_dma_stop(rdev);
> r600_irq_suspend(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> rv770_pcie_gart_disable(rdev);
>
> return 0;
> diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
> index bafbe32..23f4ab99 100644
> --- a/drivers/gpu/drm/radeon/si.c
> +++ b/drivers/gpu/drm/radeon/si.c
> @@ -4474,6 +4474,7 @@ int si_suspend(struct radeon_device *rdev)
> cayman_dma_stop(rdev);
> si_irq_suspend(rdev);
> radeon_wb_disable(rdev);
> + radeon_ib_pool_fini(rdev);
> si_pcie_gart_disable(rdev);
> return 0;
> }
prev parent reply other threads:[~2013-03-12 8:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-11 21:06 [PATCH 0/2] Properly suspend/resume sub-allocator alexdeucher
2013-03-11 21:06 ` [PATCH 1/2] drm/radeon: fix S/R on VM systems (cayman/TN/SI) alexdeucher
2013-03-12 8:59 ` Christian König
2013-03-11 21:06 ` [PATCH 2/2] drm/radeon: tear down the IB pool on suspend alexdeucher
2013-03-12 8:52 ` Christian König [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=513EECB4.4010906@vodafone.de \
--to=deathsimple@vodafone.de \
--cc=alexander.deucher@amd.com \
--cc=alexdeucher@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.