summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
diff options
context:
space:
mode:
authorAndrey Grodzovsky <andrey.grodzovsky@amd.com>2022-01-25 11:32:47 -0500
committerAndrey Grodzovsky <andrey.grodzovsky@amd.com>2022-02-09 12:18:39 -0500
commite923be9934a9c54a94e443f9e77bda5b9fbd1ce5 (patch)
tree575b0a1d0a6467d1771c5994092fef714b28515f /drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
parent89a7a87093d67e2c633e1ed400ba00ffd15bdae5 (diff)
downloadlinux-e923be9934a9c54a94e443f9e77bda5b9fbd1ce5.tar.bz2
drm/amdgpu: Rework amdgpu_device_lock_adev
This functions needs to be split into 2 parts where one is called only once for locking single instance of reset_domain's sem and reset flag and the other part which handles MP1 states should still be called for each device in XGMI hive. Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Link: https://www.spinics.net/lists/amd-gfx/msg74118.html
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
index 5ab72c3bfbda..9b18ad0b77ab 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
@@ -137,5 +137,24 @@ struct amdgpu_reset_domain *amdgpu_reset_create_reset_domain(enum amdgpu_reset_d
return reset_domain;
}
+void amdgpu_device_lock_reset_domain(struct amdgpu_reset_domain *reset_domain,
+ struct amdgpu_hive_info *hive)
+{
+ atomic_set(&reset_domain->in_gpu_reset, 1);
+
+ if (hive) {
+ down_write_nest_lock(&reset_domain->sem, &hive->hive_lock);
+ } else {
+ down_write(&reset_domain->sem);
+ }
+}
+
+
+void amdgpu_device_unlock_reset_domain(struct amdgpu_reset_domain *reset_domain)
+{
+ atomic_set(&reset_domain->in_gpu_reset, 0);
+ up_write(&reset_domain->sem);
+}
+