diff options
author | Emily Deng <Emily.Deng@amd.com> | 2018-12-29 04:46:05 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-01-14 15:04:24 -0500 |
commit | d3c117e564bfbfe3c4568aca136be3880ddf4200 (patch) | |
tree | c8b0eb347f35be8ed955658d4b57a013be53ddea /drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |
parent | c27c9778a19e050628689d03604941c7039685a3 (diff) |
drm/amdgpu/sriov:Correct pfvf exchange logic
The pfvf exchange need be in exclusive mode. And add pfvf exchange in gpu
reset.
Signed-off-by: Emily Deng <Emily.Deng@amd.com>
Reviewed-By: Xiangliang Yu <Xiangliang.Yu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_device.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 98df8e4704eb..7ff3a28fc903 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |||
@@ -1701,8 +1701,10 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) | |||
1701 | amdgpu_xgmi_add_device(adev); | 1701 | amdgpu_xgmi_add_device(adev); |
1702 | amdgpu_amdkfd_device_init(adev); | 1702 | amdgpu_amdkfd_device_init(adev); |
1703 | 1703 | ||
1704 | if (amdgpu_sriov_vf(adev)) | 1704 | if (amdgpu_sriov_vf(adev)) { |
1705 | amdgpu_virt_init_data_exchange(adev); | ||
1705 | amdgpu_virt_release_full_gpu(adev, true); | 1706 | amdgpu_virt_release_full_gpu(adev, true); |
1707 | } | ||
1706 | 1708 | ||
1707 | return 0; | 1709 | return 0; |
1708 | } | 1710 | } |
@@ -2632,9 +2634,6 @@ fence_driver_init: | |||
2632 | goto failed; | 2634 | goto failed; |
2633 | } | 2635 | } |
2634 | 2636 | ||
2635 | if (amdgpu_sriov_vf(adev)) | ||
2636 | amdgpu_virt_init_data_exchange(adev); | ||
2637 | |||
2638 | amdgpu_fbdev_init(adev); | 2637 | amdgpu_fbdev_init(adev); |
2639 | 2638 | ||
2640 | r = amdgpu_pm_sysfs_init(adev); | 2639 | r = amdgpu_pm_sysfs_init(adev); |
@@ -3226,6 +3225,7 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device *adev, | |||
3226 | r = amdgpu_ib_ring_tests(adev); | 3225 | r = amdgpu_ib_ring_tests(adev); |
3227 | 3226 | ||
3228 | error: | 3227 | error: |
3228 | amdgpu_virt_init_data_exchange(adev); | ||
3229 | amdgpu_virt_release_full_gpu(adev, true); | 3229 | amdgpu_virt_release_full_gpu(adev, true); |
3230 | if (!r && adev->virt.gim_feature & AMDGIM_FEATURE_GIM_FLR_VRAMLOST) { | 3230 | if (!r && adev->virt.gim_feature & AMDGIM_FEATURE_GIM_FLR_VRAMLOST) { |
3231 | atomic_inc(&adev->vram_lost_counter); | 3231 | atomic_inc(&adev->vram_lost_counter); |