drm/amdgpu: make IB test synchronize with init for SRIOV(v2)
authorMonk Liu <Monk.Liu@amd.com>
Mon, 29 Jun 2020 09:32:16 +0000 (17:32 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 2 Jul 2020 16:02:55 +0000 (12:02 -0400)
issue:
originally we kickoff IB test asynchronously with driver's
init, thus
the IB test may still running when the driver loading
done (modprobe amdgpu done).
if we shutdown VM immediately after amdgpu driver
loaded then GPU may
hang because the IB test is still running

fix:
flush the delayed_init routine at the bottom of device_init
to avoid driver loading done prior to the IB test completes

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index 457f5d2cb4cbbfe95ce7ebf276d0bcd8f9c7f752..7a4e9656d74ffe3328deed5253821eb7a90e4c17 100644 (file)
@@ -3295,6 +3295,9 @@ fence_driver_init:
        queue_delayed_work(system_wq, &adev->delayed_init_work,
                           msecs_to_jiffies(AMDGPU_RESUME_MS));
 
+       if (amdgpu_sriov_vf(adev))
+               flush_delayed_work(&adev->delayed_init_work);
+
        r = sysfs_create_files(&adev->dev->kobj, amdgpu_dev_attributes);
        if (r) {
                dev_err(adev->dev, "Could not create amdgpu device attr\n");