| From 08bad15c274515b1e23ee74489581fb2e5985bc6 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 19 Jan 2021 16:54:50 +0800 |
| Subject: drm/amd/amdgpu: add error handling to amdgpu_virt_read_pf2vf_data |
| |
| From: Jingwen Chen <Jingwen.Chen2@amd.com> |
| |
| [ Upstream commit 64dcf2f01d59cf9fad19b1a387bd39736a8f4d69 ] |
| |
| [Why] |
| when vram lost happened in guest, try to write vram can lead to |
| kernel stuck. |
| |
| [How] |
| When the readback data is invalid, don't do write work, directly |
| reschedule a new work. |
| |
| Signed-off-by: Jingwen Chen <Jingwen.Chen2@amd.com> |
| Reviewed-by: Monk Liu<monk.liu@amd.com> |
| Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 6 +++++- |
| 1 file changed, 5 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c |
| index 2d51b7694d1f..572153d08ad1 100644 |
| --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c |
| +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c |
| @@ -560,10 +560,14 @@ static int amdgpu_virt_write_vf2pf_data(struct amdgpu_device *adev) |
| static void amdgpu_virt_update_vf2pf_work_item(struct work_struct *work) |
| { |
| struct amdgpu_device *adev = container_of(work, struct amdgpu_device, virt.vf2pf_work.work); |
| + int ret; |
| |
| - amdgpu_virt_read_pf2vf_data(adev); |
| + ret = amdgpu_virt_read_pf2vf_data(adev); |
| + if (ret) |
| + goto out; |
| amdgpu_virt_write_vf2pf_data(adev); |
| |
| +out: |
| schedule_delayed_work(&(adev->virt.vf2pf_work), adev->virt.vf2pf_update_interval_ms); |
| } |
| |
| -- |
| 2.30.1 |
| |