From: Lijo Lazar Date: Mon, 7 Oct 2024 08:19:45 +0000 (+0530) Subject: drm/amdgpu: Wait for reset on init completion X-Git-Tag: microblaze-v6.16~490^2~20^2~81 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=d25d26b8a87a97ce3bd7f5db840f9ca72ba5d422;p=linux-2.6-microblaze.git 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 Reviewed-by: Ramesh Errabolu Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c index 63503719303c..fcdbcff57632 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c @@ -1548,6 +1548,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); @@ -1556,12 +1557,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; }