aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorPixel Ding <Pixel.Ding@amd.com>2017-02-06 04:32:22 -0500
committerAlex Deucher <alexander.deucher@amd.com>2017-03-29 23:52:38 -0400
commitedcafc0294589d5ad1220565ffd674007337cdc7 (patch)
tree417eae0053def3f19dad2c34ab506f1a3174f6c9 /drivers/gpu/drm/amd/amdgpu
parent4726214c542d3b547bd48587cd741d00cdb5086b (diff)
drm/amdgpu/virt: skip VM fault handler for VF
VF uses KIQ to access registers. When VM fault occurs, the driver can't get back the fence of KIQ submission and runs into CPU soft lockup. Signed-off-by: Pixel Ding <Pixel.Ding@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Reviewed-by: Junwei Zhang <Jerry.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
index 7669b3259f35..65025080a4b8 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
@@ -1237,6 +1237,13 @@ static int gmc_v8_0_process_interrupt(struct amdgpu_device *adev,
1237{ 1237{
1238 u32 addr, status, mc_client; 1238 u32 addr, status, mc_client;
1239 1239
1240 if (amdgpu_sriov_vf(adev)) {
1241 dev_err(adev->dev, "GPU fault detected: %d 0x%08x\n",
1242 entry->src_id, entry->src_data);
1243 dev_err(adev->dev, " Can't decode VM fault info here on SRIOV VF\n");
1244 return 0;
1245 }
1246
1240 addr = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_ADDR); 1247 addr = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_ADDR);
1241 status = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_STATUS); 1248 status = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_STATUS);
1242 mc_client = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_MCCLIENT); 1249 mc_client = RREG32(mmVM_CONTEXT1_PROTECTION_FAULT_MCCLIENT);