summaryrefslogtreecommitdiff
path: root/mali_kbase
diff options
context:
space:
mode:
authorDebarshi Dutta <debarshid@google.com>2023-08-07 09:36:18 +0000
committerDebarshi Dutta <debarshid@google.com>2023-08-07 11:34:20 +0000
commit67cf0926399ee85101cfa582dc511965befb82c1 (patch)
treea5aaad3e54004aa6f883015a972b01d3e8eb1641 /mali_kbase
parentb7705dc18e5925f2acce2c60620723a3ae1127b5 (diff)
downloadgpu-67cf0926399ee85101cfa582dc511965befb82c1.tar.gz
mali_kbase: restore hysteresis time.
An accidental change back to a lower hysteresis time as a part of the R43P0 merge commit resulted in GPU powering on and off more frequently and regressing previously established perf. Restore the same to a value that was previously determined and set in our downstream driver. Bug 292157710 Bug 278174418 Change-Id: Id44337bc1fd672722a5edaf27aaca16f320b7ad0 Signed-off-by: Debarshi Dutta <debarshid@google.com>
Diffstat (limited to 'mali_kbase')
-rw-r--r--mali_kbase/csf/mali_kbase_csf.c2
-rw-r--r--mali_kbase/csf/mali_kbase_csf.h2
-rw-r--r--mali_kbase/csf/mali_kbase_csf_firmware.c13
3 files changed, 3 insertions, 14 deletions
diff --git a/mali_kbase/csf/mali_kbase_csf.c b/mali_kbase/csf/mali_kbase_csf.c
index 639c6da..c3d34b3 100644
--- a/mali_kbase/csf/mali_kbase_csf.c
+++ b/mali_kbase/csf/mali_kbase_csf.c
@@ -3160,8 +3160,6 @@ void kbase_csf_interrupt(struct kbase_device *kbdev, u32 val)
kbase_csf_firmware_global_input_mask(
global_iface, GLB_REQ, glb_ack,
GLB_REQ_IDLE_EVENT_MASK);
-
- kbase_csf_scheduler_process_gpu_idle_event(kbdev);
#endif
glb_idle_irq_received = true;
diff --git a/mali_kbase/csf/mali_kbase_csf.h b/mali_kbase/csf/mali_kbase_csf.h
index d2d4163..35d0331 100644
--- a/mali_kbase/csf/mali_kbase_csf.h
+++ b/mali_kbase/csf/mali_kbase_csf.h
@@ -50,7 +50,7 @@
/* 60ms optimizes power while minimizing latency impact for UI test cases. */
#define MALI_HOST_CONTROLS_SC_RAILS_IDLE_TIMER_US (600)
-#define FIRMWARE_IDLE_HYSTERESIS_TIME_USEC (10000) /* Default 10 milliseconds */
+#define FIRMWARE_IDLE_HYSTERESIS_TIME_USEC (60000) /* Default 60 milliseconds */
/* Idle hysteresis time can be scaled down when GPU sleep feature is used */
#define FIRMWARE_IDLE_HYSTERESIS_GPU_SLEEP_SCALER (5)
diff --git a/mali_kbase/csf/mali_kbase_csf_firmware.c b/mali_kbase/csf/mali_kbase_csf_firmware.c
index 0b1dae1..a4f561b 100644
--- a/mali_kbase/csf/mali_kbase_csf_firmware.c
+++ b/mali_kbase/csf/mali_kbase_csf_firmware.c
@@ -2097,22 +2097,13 @@ u32 kbase_csf_firmware_get_gpu_idle_hysteresis_time(struct kbase_device *kbdev)
return dur;
}
-#ifndef CONFIG_MALI_HOST_CONTROLS_SC_RAILS
-static inline u32 msec_to_usec_saturate(u32 ms) {
-#define MILLISECONDS_PER_SECOND 1000
- if (ms > U32_MAX / MILLISECONDS_PER_SECOND)
- return U32_MAX;
- return ms * MILLISECONDS_PER_SECOND;
-}
-#endif
-
u32 kbase_csf_firmware_set_gpu_idle_hysteresis_time(struct kbase_device *kbdev, u32 dur)
{
unsigned long flags;
#ifdef CONFIG_MALI_HOST_CONTROLS_SC_RAILS
const u32 hysteresis_val = convert_dur_to_idle_count(kbdev, MALI_HOST_CONTROLS_SC_RAILS_IDLE_TIMER_US);
#else
- const u32 hysteresis_val = convert_dur_to_idle_count(kbdev, msec_to_usec_saturate(dur));
+ const u32 hysteresis_val = convert_dur_to_idle_count(kbdev, dur);
#endif
/* The 'fw_load_lock' is taken to synchronize against the deferred
@@ -2182,7 +2173,7 @@ u32 kbase_csf_firmware_set_gpu_idle_hysteresis_time(struct kbase_device *kbdev,
mutex_unlock(&kbdev->csf.reg_lock);
#endif
- dev_dbg(kbdev->dev, "GPU suspend timeout updated: %i ms (0x%.8x)",
+ dev_dbg(kbdev->dev, "GPU suspend timeout updated: %i us (0x%.8x)",
kbdev->csf.gpu_idle_hysteresis_us,
kbdev->csf.gpu_idle_dur_count);
kbase_csf_scheduler_pm_idle(kbdev);