Message ID | 1363035984-4861-3-git-send-email-alexdeucher@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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; > }
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; }