[PATCH 1/2] drm/radeon/kms: fix evergreen asic reset

2010-12-20 Thread Jerome Glisse
On Mon, Dec 20, 2010 at 12:35 PM, Alex Deucher  wrote:
> Only reset the grbm blocks, srbm tends to lock the GPU
> if not done properly and in most cases is not necessary.
> Also, no need to call asic init after reset the grbm blocks.
>
> Signed-off-by: Alex Deucher 
> Cc: stable at kernel.org
> ---

Reviewed-by: Jerome Glisse 

> ?drivers/gpu/drm/radeon/evergreen.c | ? 15 ---
> ?1 files changed, 0 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/evergreen.c 
> b/drivers/gpu/drm/radeon/evergreen.c
> index 901f366..8b82749 100644
> --- a/drivers/gpu/drm/radeon/evergreen.c
> +++ b/drivers/gpu/drm/radeon/evergreen.c
> @@ -2036,7 +2036,6 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
> ?static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
> ?{
> ? ? ? ?struct evergreen_mc_save save;
> - ? ? ? u32 srbm_reset = 0;
> ? ? ? ?u32 grbm_reset = 0;
>
> ? ? ? ?dev_info(rdev->dev, "GPU softreset \n");
> @@ -2075,16 +2074,6 @@ static int evergreen_gpu_soft_reset(struct 
> radeon_device *rdev)
> ? ? ? ?udelay(50);
> ? ? ? ?WREG32(GRBM_SOFT_RESET, 0);
> ? ? ? ?(void)RREG32(GRBM_SOFT_RESET);
> -
> - ? ? ? /* reset all the system blocks */
> - ? ? ? srbm_reset = SRBM_SOFT_RESET_ALL_MASK;
> -
> - ? ? ? dev_info(rdev->dev, " ?SRBM_SOFT_RESET=0x%08X\n", srbm_reset);
> - ? ? ? WREG32(SRBM_SOFT_RESET, srbm_reset);
> - ? ? ? (void)RREG32(SRBM_SOFT_RESET);
> - ? ? ? udelay(50);
> - ? ? ? WREG32(SRBM_SOFT_RESET, 0);
> - ? ? ? (void)RREG32(SRBM_SOFT_RESET);
> ? ? ? ?/* Wait a little for things to settle down */
> ? ? ? ?udelay(50);
> ? ? ? ?dev_info(rdev->dev, " ?GRBM_STATUS=0x%08X\n",
> @@ -2095,10 +2084,6 @@ static int evergreen_gpu_soft_reset(struct 
> radeon_device *rdev)
> ? ? ? ? ? ? ? ?RREG32(GRBM_STATUS_SE1));
> ? ? ? ?dev_info(rdev->dev, " ?SRBM_STATUS=0x%08X\n",
> ? ? ? ? ? ? ? ?RREG32(SRBM_STATUS));
> - ? ? ? /* After reset we need to reinit the asic as GPU often endup in an
> - ? ? ? ?* incoherent state.
> - ? ? ? ?*/
> - ? ? ? atom_asic_init(rdev->mode_info.atom_context);
> ? ? ? ?evergreen_mc_resume(rdev, );
> ? ? ? ?return 0;
> ?}
> --
> 1.7.2.3
>
> ___
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>


[PATCH 1/2] drm/radeon/kms: fix evergreen asic reset

2010-12-20 Thread Alex Deucher
Only reset the grbm blocks, srbm tends to lock the GPU
if not done properly and in most cases is not necessary.
Also, no need to call asic init after reset the grbm blocks.

Signed-off-by: Alex Deucher 
Cc: stable at kernel.org
---
 drivers/gpu/drm/radeon/evergreen.c |   15 ---
 1 files changed, 0 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/radeon/evergreen.c 
b/drivers/gpu/drm/radeon/evergreen.c
index 901f366..8b82749 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -2036,7 +2036,6 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
 static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
 {
struct evergreen_mc_save save;
-   u32 srbm_reset = 0;
u32 grbm_reset = 0;

dev_info(rdev->dev, "GPU softreset \n");
@@ -2075,16 +2074,6 @@ static int evergreen_gpu_soft_reset(struct radeon_device 
*rdev)
udelay(50);
WREG32(GRBM_SOFT_RESET, 0);
(void)RREG32(GRBM_SOFT_RESET);
-
-   /* reset all the system blocks */
-   srbm_reset = SRBM_SOFT_RESET_ALL_MASK;
-
-   dev_info(rdev->dev, "  SRBM_SOFT_RESET=0x%08X\n", srbm_reset);
-   WREG32(SRBM_SOFT_RESET, srbm_reset);
-   (void)RREG32(SRBM_SOFT_RESET);
-   udelay(50);
-   WREG32(SRBM_SOFT_RESET, 0);
-   (void)RREG32(SRBM_SOFT_RESET);
/* Wait a little for things to settle down */
udelay(50);
dev_info(rdev->dev, "  GRBM_STATUS=0x%08X\n",
@@ -2095,10 +2084,6 @@ static int evergreen_gpu_soft_reset(struct radeon_device 
*rdev)
RREG32(GRBM_STATUS_SE1));
dev_info(rdev->dev, "  SRBM_STATUS=0x%08X\n",
RREG32(SRBM_STATUS));
-   /* After reset we need to reinit the asic as GPU often endup in an
-* incoherent state.
-*/
-   atom_asic_init(rdev->mode_info.atom_context);
evergreen_mc_resume(rdev, );
return 0;
 }
-- 
1.7.2.3



[PATCH 1/2] drm/radeon/kms: fix evergreen asic reset

2010-12-20 Thread Alex Deucher
Only reset the grbm blocks, srbm tends to lock the GPU
if not done properly and in most cases is not necessary.
Also, no need to call asic init after reset the grbm blocks.

Signed-off-by: Alex Deucher alexdeuc...@gmail.com
Cc: sta...@kernel.org
---
 drivers/gpu/drm/radeon/evergreen.c |   15 ---
 1 files changed, 0 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/radeon/evergreen.c 
b/drivers/gpu/drm/radeon/evergreen.c
index 901f366..8b82749 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -2036,7 +2036,6 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
 static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
 {
struct evergreen_mc_save save;
-   u32 srbm_reset = 0;
u32 grbm_reset = 0;
 
dev_info(rdev-dev, GPU softreset \n);
@@ -2075,16 +2074,6 @@ static int evergreen_gpu_soft_reset(struct radeon_device 
*rdev)
udelay(50);
WREG32(GRBM_SOFT_RESET, 0);
(void)RREG32(GRBM_SOFT_RESET);
-
-   /* reset all the system blocks */
-   srbm_reset = SRBM_SOFT_RESET_ALL_MASK;
-
-   dev_info(rdev-dev,   SRBM_SOFT_RESET=0x%08X\n, srbm_reset);
-   WREG32(SRBM_SOFT_RESET, srbm_reset);
-   (void)RREG32(SRBM_SOFT_RESET);
-   udelay(50);
-   WREG32(SRBM_SOFT_RESET, 0);
-   (void)RREG32(SRBM_SOFT_RESET);
/* Wait a little for things to settle down */
udelay(50);
dev_info(rdev-dev,   GRBM_STATUS=0x%08X\n,
@@ -2095,10 +2084,6 @@ static int evergreen_gpu_soft_reset(struct radeon_device 
*rdev)
RREG32(GRBM_STATUS_SE1));
dev_info(rdev-dev,   SRBM_STATUS=0x%08X\n,
RREG32(SRBM_STATUS));
-   /* After reset we need to reinit the asic as GPU often endup in an
-* incoherent state.
-*/
-   atom_asic_init(rdev-mode_info.atom_context);
evergreen_mc_resume(rdev, save);
return 0;
 }
-- 
1.7.2.3

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 1/2] drm/radeon/kms: fix evergreen asic reset

2010-12-20 Thread Jerome Glisse
On Mon, Dec 20, 2010 at 12:35 PM, Alex Deucher alexdeuc...@gmail.com wrote:
 Only reset the grbm blocks, srbm tends to lock the GPU
 if not done properly and in most cases is not necessary.
 Also, no need to call asic init after reset the grbm blocks.

 Signed-off-by: Alex Deucher alexdeuc...@gmail.com
 Cc: sta...@kernel.org
 ---

Reviewed-by: Jerome Glisse jgli...@redhat.com

  drivers/gpu/drm/radeon/evergreen.c |   15 ---
  1 files changed, 0 insertions(+), 15 deletions(-)

 diff --git a/drivers/gpu/drm/radeon/evergreen.c 
 b/drivers/gpu/drm/radeon/evergreen.c
 index 901f366..8b82749 100644
 --- a/drivers/gpu/drm/radeon/evergreen.c
 +++ b/drivers/gpu/drm/radeon/evergreen.c
 @@ -2036,7 +2036,6 @@ bool evergreen_gpu_is_lockup(struct radeon_device *rdev)
  static int evergreen_gpu_soft_reset(struct radeon_device *rdev)
  {
        struct evergreen_mc_save save;
 -       u32 srbm_reset = 0;
        u32 grbm_reset = 0;

        dev_info(rdev-dev, GPU softreset \n);
 @@ -2075,16 +2074,6 @@ static int evergreen_gpu_soft_reset(struct 
 radeon_device *rdev)
        udelay(50);
        WREG32(GRBM_SOFT_RESET, 0);
        (void)RREG32(GRBM_SOFT_RESET);
 -
 -       /* reset all the system blocks */
 -       srbm_reset = SRBM_SOFT_RESET_ALL_MASK;
 -
 -       dev_info(rdev-dev,   SRBM_SOFT_RESET=0x%08X\n, srbm_reset);
 -       WREG32(SRBM_SOFT_RESET, srbm_reset);
 -       (void)RREG32(SRBM_SOFT_RESET);
 -       udelay(50);
 -       WREG32(SRBM_SOFT_RESET, 0);
 -       (void)RREG32(SRBM_SOFT_RESET);
        /* Wait a little for things to settle down */
        udelay(50);
        dev_info(rdev-dev,   GRBM_STATUS=0x%08X\n,
 @@ -2095,10 +2084,6 @@ static int evergreen_gpu_soft_reset(struct 
 radeon_device *rdev)
                RREG32(GRBM_STATUS_SE1));
        dev_info(rdev-dev,   SRBM_STATUS=0x%08X\n,
                RREG32(SRBM_STATUS));
 -       /* After reset we need to reinit the asic as GPU often endup in an
 -        * incoherent state.
 -        */
 -       atom_asic_init(rdev-mode_info.atom_context);
        evergreen_mc_resume(rdev, save);
        return 0;
  }
 --
 1.7.2.3

 ___
 dri-devel mailing list
 dri-devel@lists.freedesktop.org
 http://lists.freedesktop.org/mailman/listinfo/dri-devel

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel