drm/amdgpu: Disable retry faults in VMID0
authorFelix Kuehling <Felix.Kuehling@amd.com>
Wed, 4 Sep 2019 23:26:16 +0000 (19:26 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 16 Sep 2019 14:54:34 +0000 (09:54 -0500)
There is no point retrying page faults in VMID0. Those faults are
always fatal.

Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-and-Tested-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c
drivers/gpu/drm/amd/amdgpu/gfxhub_v2_0.c
drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
drivers/gpu/drm/amd/amdgpu/mmhub_v2_0.c
drivers/gpu/drm/amd/amdgpu/mmhub_v9_4.c

index 6ce37ce77d14ab519eaca87a02886d59aa5be6b7..9ec4297e61e5d46301fc9e22cd70ecf1a5959ae5 100644 (file)
@@ -178,6 +178,8 @@ static void gfxhub_v1_0_enable_system_domain(struct amdgpu_device *adev)
        tmp = RREG32_SOC15(GC, 0, mmVM_CONTEXT0_CNTL);
        tmp = REG_SET_FIELD(tmp, VM_CONTEXT0_CNTL, ENABLE_CONTEXT, 1);
        tmp = REG_SET_FIELD(tmp, VM_CONTEXT0_CNTL, PAGE_TABLE_DEPTH, 0);
+       tmp = REG_SET_FIELD(tmp, VM_CONTEXT0_CNTL,
+                           RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0);
        WREG32_SOC15(GC, 0, mmVM_CONTEXT0_CNTL, tmp);
 }
 
index 8b789f750b72b0ecba603bb2982cd4e8ada03d60..a9238735d361923e3917eb2a60f1c645955426b3 100644 (file)
@@ -166,6 +166,8 @@ static void gfxhub_v2_0_enable_system_domain(struct amdgpu_device *adev)
        tmp = RREG32_SOC15(GC, 0, mmGCVM_CONTEXT0_CNTL);
        tmp = REG_SET_FIELD(tmp, GCVM_CONTEXT0_CNTL, ENABLE_CONTEXT, 1);
        tmp = REG_SET_FIELD(tmp, GCVM_CONTEXT0_CNTL, PAGE_TABLE_DEPTH, 0);
+       tmp = REG_SET_FIELD(tmp, GCVM_CONTEXT0_CNTL,
+                           RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0);
        WREG32_SOC15(GC, 0, mmGCVM_CONTEXT0_CNTL, tmp);
 }
 
index b9d6c0bfa594382fb8310378a9572208cdb20802..4c7e8c64a94e36ba03712d42fcdb1838728ecfb5 100644 (file)
@@ -207,6 +207,8 @@ static void mmhub_v1_0_enable_system_domain(struct amdgpu_device *adev)
        tmp = RREG32_SOC15(MMHUB, 0, mmVM_CONTEXT0_CNTL);
        tmp = REG_SET_FIELD(tmp, VM_CONTEXT0_CNTL, ENABLE_CONTEXT, 1);
        tmp = REG_SET_FIELD(tmp, VM_CONTEXT0_CNTL, PAGE_TABLE_DEPTH, 0);
+       tmp = REG_SET_FIELD(tmp, VM_CONTEXT0_CNTL,
+                           RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0);
        WREG32_SOC15(MMHUB, 0, mmVM_CONTEXT0_CNTL, tmp);
 }
 
index 3542c203c3c8f487a0f4dad537fc5f52cdbdf072..86ed8cb915a865fbb4354c3b1a04713319bbca1f 100644 (file)
@@ -152,6 +152,8 @@ static void mmhub_v2_0_enable_system_domain(struct amdgpu_device *adev)
        tmp = RREG32_SOC15(MMHUB, 0, mmMMVM_CONTEXT0_CNTL);
        tmp = REG_SET_FIELD(tmp, MMVM_CONTEXT0_CNTL, ENABLE_CONTEXT, 1);
        tmp = REG_SET_FIELD(tmp, MMVM_CONTEXT0_CNTL, PAGE_TABLE_DEPTH, 0);
+       tmp = REG_SET_FIELD(tmp, MMVM_CONTEXT0_CNTL,
+                           RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0);
        WREG32_SOC15(MMHUB, 0, mmMMVM_CONTEXT0_CNTL, tmp);
 }
 
index 0cf7ef44b4b5c7015d018612a872fb32596b3a54..657970f9ebfbe8621ad5309f7308a0ab6e426fa5 100644 (file)
@@ -240,6 +240,8 @@ static void mmhub_v9_4_enable_system_domain(struct amdgpu_device *adev,
                                  hubid * MMHUB_INSTANCE_REGISTER_OFFSET);
        tmp = REG_SET_FIELD(tmp, VML2VC0_VM_CONTEXT0_CNTL, ENABLE_CONTEXT, 1);
        tmp = REG_SET_FIELD(tmp, VML2VC0_VM_CONTEXT0_CNTL, PAGE_TABLE_DEPTH, 0);
+       tmp = REG_SET_FIELD(tmp, VML2VC0_VM_CONTEXT0_CNTL,
+                           RETRY_PERMISSION_OR_INVALID_PAGE_FAULT, 0);
        WREG32_SOC15_OFFSET(MMHUB, 0, mmVML2VC0_VM_CONTEXT0_CNTL,
                            hubid * MMHUB_INSTANCE_REGISTER_OFFSET, tmp);
 }