From eadb666be28a92b2459dfd2ef420c9c76676bd7e Mon Sep 17 00:00:00 2001 From: Zhen Chen Date: Mon, 11 Mar 2024 11:53:26 +0800 Subject: [PATCH] MALI: bifrost: quick_reset: Operate quick_reset_lock with spin_lock_irqsave/spin_unlock_irqrestore To avoid potential deadlock. Signed-off-by: Zhen Chen Change-Id: I5a9844f7702fbc063f1b090219f0e86f9431170d --- drivers/gpu/arm/bifrost/device/mali_kbase_device.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/arm/bifrost/device/mali_kbase_device.c b/drivers/gpu/arm/bifrost/device/mali_kbase_device.c index 9044b2af525b..5cf85517853d 100644 --- a/drivers/gpu/arm/bifrost/device/mali_kbase_device.c +++ b/drivers/gpu/arm/bifrost/device/mali_kbase_device.c @@ -348,22 +348,26 @@ void kbase_device_misc_term(struct kbase_device *kbdev) #if !MALI_USE_CSF void kbase_enable_quick_reset(struct kbase_device *kbdev) { - spin_lock(&kbdev->quick_reset_lock); + unsigned long flags; + + spin_lock_irqsave(&kbdev->quick_reset_lock, flags); kbdev->quick_reset_enabled = true; kbdev->num_of_atoms_hw_completed = 0; - spin_unlock(&kbdev->quick_reset_lock); + spin_unlock_irqrestore(&kbdev->quick_reset_lock, flags); } void kbase_disable_quick_reset(struct kbase_device *kbdev) { - spin_lock(&kbdev->quick_reset_lock); + unsigned long flags; + + spin_lock_irqsave(&kbdev->quick_reset_lock, flags); kbdev->quick_reset_enabled = false; kbdev->num_of_atoms_hw_completed = 0; - spin_unlock(&kbdev->quick_reset_lock); + spin_unlock_irqrestore(&kbdev->quick_reset_lock, flags); } bool kbase_is_quick_reset_enabled(struct kbase_device *kbdev)