From 67cf0926399ee85101cfa582dc511965befb82c1 Mon Sep 17 00:00:00 2001 From: Debarshi Dutta Date: Mon, 7 Aug 2023 09:36:18 +0000 Subject: 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 --- mali_kbase/csf/mali_kbase_csf.c | 2 -- mali_kbase/csf/mali_kbase_csf.h | 2 +- mali_kbase/csf/mali_kbase_csf_firmware.c | 13 ++----------- 3 files changed, 3 insertions(+), 14 deletions(-) (limited to 'mali_kbase') 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); -- cgit v1.2.3