From: Mukul Joshi Date: Wed, 24 Jan 2024 02:14:51 +0000 (+0800) Subject: drm/amdgpu: Fix module unload hang with RAS enabled X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=c84a7e21db79fa899b9ad2d56464779f182789cb;p=linux.git drm/amdgpu: Fix module unload hang with RAS enabled The driver unload hangs because the page retirement kthread cannot be stopped as it is sleeping and waiting on page retirement event to occur. Add kthread_should_stop() to the event condition to wake up the kthread when kthread stop is called during driver unload. Fixes: 3fdcd0a31d7a ("drm/amdgpu: Prepare for asynchronous processing of umc page retirement") Signed-off-by: Mukul Joshi Reviewed-by: Hawking Zhang Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c index a32e7eb313540..80816c4ec1f1b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c @@ -2670,8 +2670,12 @@ static int amdgpu_ras_page_retirement_thread(void *param) while (!kthread_should_stop()) { wait_event_interruptible(con->page_retirement_wq, + kthread_should_stop() || atomic_read(&con->page_retirement_req_cnt)); + if (kthread_should_stop()) + break; + dev_info(adev->dev, "Start processing page retirement. request:%d\n", atomic_read(&con->page_retirement_req_cnt));