On Fri, 14 Oct 2011 alexdeucher at gmail.com wrote:

> From: Alex Deucher <alexander.deucher at amd.com>
>
> r600-NI shared the same blit suspend code.  Clean it up
> and make it a shared function.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> Cc: Ilija Hadzic <ihadzic at research.bell-labs.com>

Thanks, this one slipped my eye in my cleanup. Correctness should be 
obvious, so as much as my review is worth
Reviewed-by: Ilija Hadzic <ihadzic at research.bell-labs.com>


> ---
> drivers/gpu/drm/radeon/evergreen.c |   10 +---------
> drivers/gpu/drm/radeon/ni.c        |   10 +---------
> drivers/gpu/drm/radeon/r600.c      |   26 ++++++++++++++++----------
> drivers/gpu/drm/radeon/radeon.h    |    2 ++
> drivers/gpu/drm/radeon/rv770.c     |   12 ++----------
> 5 files changed, 22 insertions(+), 38 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreen.c 
> b/drivers/gpu/drm/radeon/evergreen.c
> index 80c4ee3..5c515f2 100644
> --- a/drivers/gpu/drm/radeon/evergreen.c
> +++ b/drivers/gpu/drm/radeon/evergreen.c
> @@ -3107,21 +3107,13 @@ int evergreen_resume(struct radeon_device *rdev)
>
> int evergreen_suspend(struct radeon_device *rdev)
> {
> -     int r;
> -
>       /* FIXME: we should wait for ring to be empty */
>       r700_cp_stop(rdev);
>       rdev->cp.ready = false;
>       evergreen_irq_suspend(rdev);
>       radeon_wb_disable(rdev);
>       evergreen_pcie_gart_disable(rdev);
> -
> -     /* unpin shaders bo */
> -     r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
> -     if (likely(r == 0)) {
> -             radeon_bo_unpin(rdev->r600_blit.shader_obj);
> -             radeon_bo_unreserve(rdev->r600_blit.shader_obj);
> -     }
> +     r600_blit_suspend(rdev);
>
>       return 0;
> }
> diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
> index cc0e911..e560da5 100644
> --- a/drivers/gpu/drm/radeon/ni.c
> +++ b/drivers/gpu/drm/radeon/ni.c
> @@ -1423,21 +1423,13 @@ int cayman_resume(struct radeon_device *rdev)
>
> int cayman_suspend(struct radeon_device *rdev)
> {
> -     int r;
> -
>       /* FIXME: we should wait for ring to be empty */
>       cayman_cp_enable(rdev, false);
>       rdev->cp.ready = false;
>       evergreen_irq_suspend(rdev);
>       radeon_wb_disable(rdev);
>       cayman_pcie_gart_disable(rdev);
> -
> -     /* unpin shaders bo */
> -     r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
> -     if (likely(r == 0)) {
> -             radeon_bo_unpin(rdev->r600_blit.shader_obj);
> -             radeon_bo_unreserve(rdev->r600_blit.shader_obj);
> -     }
> +     r600_blit_suspend(rdev);
>
>       return 0;
> }
> diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c
> index c2f0dbe..f7f693a 100644
> --- a/drivers/gpu/drm/radeon/r600.c
> +++ b/drivers/gpu/drm/radeon/r600.c
> @@ -2375,6 +2375,20 @@ int r600_copy_blit(struct radeon_device *rdev,
>       return 0;
> }
>
> +void r600_blit_suspend(struct radeon_device *rdev)
> +{
> +     int r;
> +
> +     /* unpin shaders bo */
> +     if (rdev->r600_blit.shader_obj) {
> +             r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
> +             if (!r) {
> +                     radeon_bo_unpin(rdev->r600_blit.shader_obj);
> +                     radeon_bo_unreserve(rdev->r600_blit.shader_obj);
> +             }
> +     }
> +}
> +
> int r600_set_surface_reg(struct radeon_device *rdev, int reg,
>                        uint32_t tiling_flags, uint32_t pitch,
>                        uint32_t offset, uint32_t obj_size)
> @@ -2494,8 +2508,6 @@ int r600_resume(struct radeon_device *rdev)
>
> int r600_suspend(struct radeon_device *rdev)
> {
> -     int r;
> -
>       r600_audio_fini(rdev);
>       /* FIXME: we should wait for ring to be empty */
>       r600_cp_stop(rdev);
> @@ -2503,14 +2515,8 @@ int r600_suspend(struct radeon_device *rdev)
>       r600_irq_suspend(rdev);
>       radeon_wb_disable(rdev);
>       r600_pcie_gart_disable(rdev);
> -     /* unpin shaders bo */
> -     if (rdev->r600_blit.shader_obj) {
> -             r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
> -             if (!r) {
> -                     radeon_bo_unpin(rdev->r600_blit.shader_obj);
> -                     radeon_bo_unreserve(rdev->r600_blit.shader_obj);
> -             }
> -     }
> +     r600_blit_suspend(rdev);
> +
>       return 0;
> }
>
> diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
> index 7b0cb74..93768f5 100644
> --- a/drivers/gpu/drm/radeon/radeon.h
> +++ b/drivers/gpu/drm/radeon/radeon.h
> @@ -555,6 +555,8 @@ struct r600_blit {
>       struct radeon_ib *vb_ib;
> };
>
> +void r600_blit_suspend(struct radeon_device *rdev);
> +
> int radeon_ib_get(struct radeon_device *rdev, struct radeon_ib **ib);
> void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib);
> int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib);
> diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c
> index b13c2ee..4901837 100644
> --- a/drivers/gpu/drm/radeon/rv770.c
> +++ b/drivers/gpu/drm/radeon/rv770.c
> @@ -1184,8 +1184,6 @@ int rv770_resume(struct radeon_device *rdev)
>
> int rv770_suspend(struct radeon_device *rdev)
> {
> -     int r;
> -
>       r600_audio_fini(rdev);
>       /* FIXME: we should wait for ring to be empty */
>       r700_cp_stop(rdev);
> @@ -1193,14 +1191,8 @@ int rv770_suspend(struct radeon_device *rdev)
>       r600_irq_suspend(rdev);
>       radeon_wb_disable(rdev);
>       rv770_pcie_gart_disable(rdev);
> -     /* unpin shaders bo */
> -     if (rdev->r600_blit.shader_obj) {
> -             r = radeon_bo_reserve(rdev->r600_blit.shader_obj, false);
> -             if (likely(r == 0)) {
> -                     radeon_bo_unpin(rdev->r600_blit.shader_obj);
> -                     radeon_bo_unreserve(rdev->r600_blit.shader_obj);
> -             }
> -     }
> +     r600_blit_suspend(rdev);
> +
>       return 0;
> }
>
> -- 
> 1.7.1.1
>
>

Reply via email to