]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
Merge tag 'regulator-v5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_virt.c
index 2d51b7694d1fdf5806e0479efa39aaf34e74de88..5da04d45b63795a0305178719dcdbe2025a95cef 100644 (file)
@@ -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);
 }
 
@@ -571,8 +575,8 @@ void amdgpu_virt_fini_data_exchange(struct amdgpu_device *adev)
 {
        if (adev->virt.vf2pf_update_interval_ms != 0) {
                DRM_INFO("clean up the vf2pf work item\n");
-               flush_delayed_work(&adev->virt.vf2pf_work);
                cancel_delayed_work_sync(&adev->virt.vf2pf_work);
+               adev->virt.vf2pf_update_interval_ms = 0;
        }
 }
 
This page took 0.054079 seconds and 4 git commands to generate.