mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 09:09:55 -04:00
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:
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user