summaryrefslogtreecommitdiff
path: root/mali_kbase/backend
diff options
context:
space:
mode:
authorVarad Gautam <varadgautam@google.com>2023-01-05 16:38:10 +0000
committerVarad Gautam <varadgautam@google.com>2023-01-18 10:27:38 +0000
commit21851be1ab020a628b7d2313d851cd2c90bc2d10 (patch)
tree708828d49c5c31abd60ea8a825c6f503f8d6bfea /mali_kbase/backend
parent5833a0028c701290fb26566c2615af25f20556c9 (diff)
downloadgpu-21851be1ab020a628b7d2313d851cd2c90bc2d10.tar.gz
mali_kbase: Unmask RESET_COMPLETED irq before resetting the GPU
kbase_pm_do_reset issues GPU_COMMAND_SOFT_RESET before unmasking GPU_CONTROL.GPU_IRQ_RAWSTAT.RESET_COMPLETED, which leaves a tiny race window for missing this interrupt. Avoid this by unmasking the irq before writing to the reset register. kbase upstreaming: WIP: b/243522189#comment23 Change-Id: I2dcec3ef431c4461b99bfbb389665492ddd02188 Signed-off-by: Varad Gautam <varadgautam@google.com> Bug: 241217496 Test: SST ~2500h (b/265003962)
Diffstat (limited to 'mali_kbase/backend')
-rw-r--r--mali_kbase/backend/gpu/mali_kbase_pm_driver.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/mali_kbase/backend/gpu/mali_kbase_pm_driver.c b/mali_kbase/backend/gpu/mali_kbase_pm_driver.c
index 1864240..d998ae5 100644
--- a/mali_kbase/backend/gpu/mali_kbase_pm_driver.c
+++ b/mali_kbase/backend/gpu/mali_kbase_pm_driver.c
@@ -3176,6 +3176,9 @@ static int kbase_pm_do_reset(struct kbase_device *kbdev)
}
#endif
+ /* Unmask the reset complete interrupt only */
+ kbase_reg_write(kbdev, GPU_CONTROL_REG(GPU_IRQ_MASK), RESET_COMPLETED);
+
if (kbdev->pm.backend.callback_soft_reset) {
ret = kbdev->pm.backend.callback_soft_reset(kbdev);
if (ret < 0)
@@ -3187,9 +3190,6 @@ static int kbase_pm_do_reset(struct kbase_device *kbdev)
GPU_COMMAND_SOFT_RESET);
}
- /* Unmask the reset complete interrupt only */
- kbase_reg_write(kbdev, GPU_CONTROL_REG(GPU_IRQ_MASK), RESET_COMPLETED);
-
/* Initialize a structure for tracking the status of the reset */
rtdata.kbdev = kbdev;
rtdata.timed_out = false;