RE: [PATCH] drm/amdgpu: Wait for reset on init completion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[AMD Official Use Only - AMD Internal Distribution Only]

Reviewed-by: Ramesh Errabolu <ramesh.errabolu@xxxxxxx>

Regards,
Ramesh

-----Original Message-----
From: Lazar, Lijo <Lijo.Lazar@xxxxxxx>
Sent: Monday, October 7, 2024 4:33 AM
To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: Zhang, Hawking <Hawking.Zhang@xxxxxxx>; Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Bhardwaj, Rajneesh <Rajneesh.Bhardwaj@xxxxxxx>; Errabolu, Ramesh <Ramesh.Errabolu@xxxxxxx>; Xu, Feifei <Feifei.Xu@xxxxxxx>
Subject: [PATCH] drm/amdgpu: Wait for reset on init completion

When reset on initialization is requested, wait for the reset to finish.
In cases where module is loaded after boot, this makes sure all initialization work is done after a successful return of modprobe.

Signed-off-by: Lijo Lazar <lijo.lazar@xxxxxxx>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
index 6532b7530a5c..8e697273d2ac 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
@@ -1554,6 +1554,7 @@ static void amdgpu_xgmi_schedule_reset_on_init(struct amdgpu_hive_info *hive)  int amdgpu_xgmi_reset_on_init(struct amdgpu_device *adev)  {
        struct amdgpu_hive_info *hive;
+       bool reset_scheduled;
        int num_devs;

        hive = amdgpu_get_xgmi_hive(adev);
@@ -1562,12 +1563,18 @@ int amdgpu_xgmi_reset_on_init(struct amdgpu_device *adev)

        mutex_lock(&hive->hive_lock);
        num_devs = atomic_read(&hive->number_devices);
-       if (num_devs == adev->gmc.xgmi.num_physical_nodes)
+       reset_scheduled = false;
+       if (num_devs == adev->gmc.xgmi.num_physical_nodes) {
                amdgpu_xgmi_schedule_reset_on_init(hive);
+               reset_scheduled = true;
+       }

        mutex_unlock(&hive->hive_lock);
        amdgpu_put_xgmi_hive(hive);

+       if (reset_scheduled)
+               flush_work(&hive->reset_on_init_work);
+
        return 0;
 }

--
2.25.1





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux