Commit d25d26b8 authored by Lijo Lazar's avatar Lijo Lazar Committed by Alex Deucher
Browse files

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: default avatarLijo Lazar <lijo.lazar@amd.com>
Reviewed-by: default avatarRamesh Errabolu <ramesh.errabolu@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 98c0b0ef
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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;
}