drm/amdgpu: Add a mutex lock to protect poison injection

When poison is triggered multiple times, competition will occur.
Add a mutex lock to protect poison injection

Signed-off-by: Ce Sun <cesun102@amd.com>
Reviewed-by: Yang Wang <kevinyang.wang@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Ce Sun
2025-08-19 14:47:05 +08:00
committed by Alex Deucher
parent 907813e5d7
commit 0989b764f4
2 changed files with 5 additions and 0 deletions

View File

@@ -3512,6 +3512,7 @@ static int amdgpu_ras_page_retirement_thread(void *param)
if (kthread_should_stop())
break;
mutex_lock(&con->poison_lock);
gpu_reset = 0;
do {
@@ -3568,6 +3569,7 @@ static int amdgpu_ras_page_retirement_thread(void *param)
/* Wake up work to save bad pages to eeprom */
schedule_delayed_work(&con->page_retirement_dwork, 0);
}
mutex_unlock(&con->poison_lock);
}
return 0;
@@ -3648,6 +3650,7 @@ int amdgpu_ras_recovery_init(struct amdgpu_device *adev, bool init_bp_info)
}
mutex_init(&con->recovery_lock);
mutex_init(&con->poison_lock);
INIT_WORK(&con->recovery_work, amdgpu_ras_do_recovery);
atomic_set(&con->in_recovery, 0);
atomic_set(&con->rma_in_recovery, 0);

View File

@@ -587,6 +587,8 @@ struct amdgpu_ras {
struct list_head critical_region_head;
struct mutex critical_region_lock;
/* Protect poison injection */
struct mutex poison_lock;
};
struct ras_fs_data {