diff options
author | Pixel Ding <Pixel.Ding@amd.com> | 2017-02-06 04:32:22 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-03-29 23:52:38 -0400 |
commit | edcafc0294589d5ad1220565ffd674007337cdc7 (patch) | |
tree | 417eae0053def3f19dad2c34ab506f1a3174f6c9 | |
parent | 4726214c542d3b547bd48587cd741d00cdb5086b (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>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 7 |
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); |