|
@@ -339,16 +339,16 @@ void rs600_bm_disable(struct radeon_device *rdev)
|
|
|
|
|
|
int rs600_asic_reset(struct radeon_device *rdev)
|
|
int rs600_asic_reset(struct radeon_device *rdev)
|
|
{
|
|
{
|
|
- u32 status, tmp;
|
|
|
|
-
|
|
|
|
struct rv515_mc_save save;
|
|
struct rv515_mc_save save;
|
|
|
|
+ u32 status, tmp;
|
|
|
|
+ int ret = 0;
|
|
|
|
|
|
- /* Stops all mc clients */
|
|
|
|
- rv515_mc_stop(rdev, &save);
|
|
|
|
status = RREG32(R_000E40_RBBM_STATUS);
|
|
status = RREG32(R_000E40_RBBM_STATUS);
|
|
if (!G_000E40_GUI_ACTIVE(status)) {
|
|
if (!G_000E40_GUI_ACTIVE(status)) {
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
+ /* Stops all mc clients */
|
|
|
|
+ rv515_mc_stop(rdev, &save);
|
|
status = RREG32(R_000E40_RBBM_STATUS);
|
|
status = RREG32(R_000E40_RBBM_STATUS);
|
|
dev_info(rdev->dev, "(%s:%d) RBBM_STATUS=0x%08X\n", __func__, __LINE__, status);
|
|
dev_info(rdev->dev, "(%s:%d) RBBM_STATUS=0x%08X\n", __func__, __LINE__, status);
|
|
/* stop CP */
|
|
/* stop CP */
|
|
@@ -392,11 +392,11 @@ int rs600_asic_reset(struct radeon_device *rdev)
|
|
if (G_000E40_GA_BUSY(status) || G_000E40_VAP_BUSY(status)) {
|
|
if (G_000E40_GA_BUSY(status) || G_000E40_VAP_BUSY(status)) {
|
|
dev_err(rdev->dev, "failed to reset GPU\n");
|
|
dev_err(rdev->dev, "failed to reset GPU\n");
|
|
rdev->gpu_lockup = true;
|
|
rdev->gpu_lockup = true;
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
|
|
+ ret = -1;
|
|
|
|
+ } else
|
|
|
|
+ dev_info(rdev->dev, "GPU reset succeed\n");
|
|
rv515_mc_resume(rdev, &save);
|
|
rv515_mc_resume(rdev, &save);
|
|
- dev_info(rdev->dev, "GPU reset succeed\n");
|
|
|
|
- return 0;
|
|
|
|
|
|
+ return ret;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|