aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/cik.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/cik.c')
-rw-r--r--drivers/gpu/drm/radeon/cik.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 2e48f902e3b5..e8544758b569 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -72,6 +72,8 @@ static void cik_pcie_gen3_enable(struct radeon_device *rdev);
72static void cik_program_aspm(struct radeon_device *rdev); 72static void cik_program_aspm(struct radeon_device *rdev);
73static void cik_init_pg(struct radeon_device *rdev); 73static void cik_init_pg(struct radeon_device *rdev);
74static void cik_init_cg(struct radeon_device *rdev); 74static void cik_init_cg(struct radeon_device *rdev);
75static void cik_fini_pg(struct radeon_device *rdev);
76static void cik_fini_cg(struct radeon_device *rdev);
75static void cik_enable_gui_idle_interrupt(struct radeon_device *rdev, 77static void cik_enable_gui_idle_interrupt(struct radeon_device *rdev,
76 bool enable); 78 bool enable);
77 79
@@ -1687,6 +1689,7 @@ static int cik_init_microcode(struct radeon_device *rdev)
1687 fw_name); 1689 fw_name);
1688 release_firmware(rdev->smc_fw); 1690 release_firmware(rdev->smc_fw);
1689 rdev->smc_fw = NULL; 1691 rdev->smc_fw = NULL;
1692 err = 0;
1690 } else if (rdev->smc_fw->size != smc_req_size) { 1693 } else if (rdev->smc_fw->size != smc_req_size) {
1691 printk(KERN_ERR 1694 printk(KERN_ERR
1692 "cik_smc: Bogus length %zu in firmware \"%s\"\n", 1695 "cik_smc: Bogus length %zu in firmware \"%s\"\n",
@@ -3254,6 +3257,7 @@ int cik_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
3254 r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256); 3257 r = radeon_ib_get(rdev, ring->idx, &ib, NULL, 256);
3255 if (r) { 3258 if (r) {
3256 DRM_ERROR("radeon: failed to get ib (%d).\n", r); 3259 DRM_ERROR("radeon: failed to get ib (%d).\n", r);
3260 radeon_scratch_free(rdev, scratch);
3257 return r; 3261 return r;
3258 } 3262 }
3259 ib.ptr[0] = PACKET3(PACKET3_SET_UCONFIG_REG, 1); 3263 ib.ptr[0] = PACKET3(PACKET3_SET_UCONFIG_REG, 1);
@@ -3270,6 +3274,8 @@ int cik_ib_test(struct radeon_device *rdev, struct radeon_ring *ring)
3270 r = radeon_fence_wait(ib.fence, false); 3274 r = radeon_fence_wait(ib.fence, false);
3271 if (r) { 3275 if (r) {
3272 DRM_ERROR("radeon: fence wait failed (%d).\n", r); 3276 DRM_ERROR("radeon: fence wait failed (%d).\n", r);
3277 radeon_scratch_free(rdev, scratch);
3278 radeon_ib_free(rdev, &ib);
3273 return r; 3279 return r;
3274 } 3280 }
3275 for (i = 0; i < rdev->usec_timeout; i++) { 3281 for (i = 0; i < rdev->usec_timeout; i++) {
@@ -4259,6 +4265,10 @@ static void cik_gpu_soft_reset(struct radeon_device *rdev, u32 reset_mask)
4259 dev_info(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n", 4265 dev_info(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n",
4260 RREG32(VM_CONTEXT1_PROTECTION_FAULT_STATUS)); 4266 RREG32(VM_CONTEXT1_PROTECTION_FAULT_STATUS));
4261 4267
4268 /* disable CG/PG */
4269 cik_fini_pg(rdev);
4270 cik_fini_cg(rdev);
4271
4262 /* stop the rlc */ 4272 /* stop the rlc */
4263 cik_rlc_stop(rdev); 4273 cik_rlc_stop(rdev);
4264 4274