drm/amd: Disable XNACK on SRIOV environment
The purpose of this patch is to disable XNACK or set XNACK OFF mode on SRIOV platform which doesn't support it. This will prevent user-space application to fail or result into unexpected behaviour whenever the application need to run test-case in XNACK ON mode. Signed-off-by: Surbhi Kakarya <surbhi.kakarya@amd.com> Reviewed-by: Shaoyun Liu <shaoyun.liu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
9ccde17d46
commit
9256e8d47a
@ -826,7 +826,10 @@ void amdgpu_gmc_noretry_set(struct amdgpu_device *adev)
|
|||||||
gc_ver == IP_VERSION(9, 4, 3) ||
|
gc_ver == IP_VERSION(9, 4, 3) ||
|
||||||
gc_ver >= IP_VERSION(10, 3, 0));
|
gc_ver >= IP_VERSION(10, 3, 0));
|
||||||
|
|
||||||
gmc->noretry = (amdgpu_noretry == -1) ? noretry_default : amdgpu_noretry;
|
if (!amdgpu_sriov_xnack_support(adev))
|
||||||
|
gmc->noretry = 1;
|
||||||
|
else
|
||||||
|
gmc->noretry = (amdgpu_noretry == -1) ? noretry_default : amdgpu_noretry;
|
||||||
}
|
}
|
||||||
|
|
||||||
void amdgpu_gmc_set_vm_fault_masks(struct amdgpu_device *adev, int hub_type,
|
void amdgpu_gmc_set_vm_fault_masks(struct amdgpu_device *adev, int hub_type,
|
||||||
|
@ -1093,3 +1093,13 @@ u32 amdgpu_sriov_rreg(struct amdgpu_device *adev,
|
|||||||
else
|
else
|
||||||
return RREG32(offset);
|
return RREG32(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool amdgpu_sriov_xnack_support(struct amdgpu_device *adev)
|
||||||
|
{
|
||||||
|
bool xnack_mode = true;
|
||||||
|
|
||||||
|
if (amdgpu_sriov_vf(adev) && adev->ip_versions[GC_HWIP][0] == IP_VERSION(9, 4, 2))
|
||||||
|
xnack_mode = false;
|
||||||
|
|
||||||
|
return xnack_mode;
|
||||||
|
}
|
||||||
|
@ -365,4 +365,5 @@ u32 amdgpu_sriov_rreg(struct amdgpu_device *adev,
|
|||||||
bool amdgpu_virt_fw_load_skip_check(struct amdgpu_device *adev,
|
bool amdgpu_virt_fw_load_skip_check(struct amdgpu_device *adev,
|
||||||
uint32_t ucode_id);
|
uint32_t ucode_id);
|
||||||
void amdgpu_virt_post_reset(struct amdgpu_device *adev);
|
void amdgpu_virt_post_reset(struct amdgpu_device *adev);
|
||||||
|
bool amdgpu_sriov_xnack_support(struct amdgpu_device *adev);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1416,8 +1416,13 @@ bool kfd_process_xnack_mode(struct kfd_process *p, bool supported)
|
|||||||
* per-process XNACK mode selection. But let the dev->noretry
|
* per-process XNACK mode selection. But let the dev->noretry
|
||||||
* setting still influence the default XNACK mode.
|
* setting still influence the default XNACK mode.
|
||||||
*/
|
*/
|
||||||
if (supported && KFD_SUPPORT_XNACK_PER_PROCESS(dev))
|
if (supported && KFD_SUPPORT_XNACK_PER_PROCESS(dev)) {
|
||||||
|
if (!amdgpu_sriov_xnack_support(dev->kfd->adev)) {
|
||||||
|
pr_debug("SRIOV platform xnack not supported\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* GFXv10 and later GPUs do not support shader preemption
|
/* GFXv10 and later GPUs do not support shader preemption
|
||||||
* during page faults. This can lead to poor QoS for queue
|
* during page faults. This can lead to poor QoS for queue
|
||||||
|
Loading…
x
Reference in New Issue
Block a user