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

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

 



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