aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
diff options
context:
space:
mode:
authorJay Cornwall <Jay.Cornwall@amd.com>2017-04-26 15:51:57 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-07-14 11:06:37 -0400
commit9f57f7b47d4c9559ae85666eeaf9ffd150096574 (patch)
treee9128b65bbe0972237ab71b57fab173a0f490e56 /drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
parentba997709a6135355a1f311336c7c4a6c0e37dfe9 (diff)
drm/amdgpu: Send no-retry XNACK for all fault types
A subset of VM fault types currently send retry XNACK to the client. This causes a storm of interrupts from the VM to the host. Until the storm is throttled by other means send no-retry XNACK for all fault types instead. No change in behavior to the client which will stall indefinitely with the current configuration in any case. Improves system stability under GC or MMHUB faults. Signed-off-by: Jay Cornwall <Jay.Cornwall@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: John Bridgman <John.Bridgman@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Acked-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
index 3ff786cfc947..008ad3dc4afd 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
@@ -206,6 +206,9 @@ static void gfxhub_v1_0_setup_vmid_config(struct amdgpu_device *adev)
206 tmp = REG_SET_FIELD(tmp, VM_CONTEXT1_CNTL, 206 tmp = REG_SET_FIELD(tmp, VM_CONTEXT1_CNTL,
207 PAGE_TABLE_BLOCK_SIZE, 207 PAGE_TABLE_BLOCK_SIZE,
208 adev->vm_manager.block_size - 9); 208 adev->vm_manager.block_size - 9);
209 /* Send no-retry XNACK on fault to suppress VM fault storm. */
210 tmp = REG_SET_FIELD(tmp, VM_CONTEXT1_CNTL,
211 RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0);
209 WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT1_CNTL, i, tmp); 212 WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT1_CNTL, i, tmp);
210 WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32, i*2, 0); 213 WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT1_PAGE_TABLE_START_ADDR_LO32, i*2, 0);
211 WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32, i*2, 0); 214 WREG32_SOC15_OFFSET(GC, 0, mmVM_CONTEXT1_PAGE_TABLE_START_ADDR_HI32, i*2, 0);