• Prashanth Prakash's avatar
    cpuidle: Add new macro to enter a retention idle state · db50a74d
    Prashanth Prakash authored
    If a CPU is entering a low power idle state where it doesn't lose any
    context, then there is no need to call cpu_pm_enter()/cpu_pm_exit().
    Add a new macro(CPU_PM_CPU_IDLE_ENTER_RETENTION) to be used by cpuidle
    drivers when they are entering retention state. By not calling
    cpu_pm_enter and cpu_pm_exit we reduce the latency involved in
    entering and exiting the retention idle states.
    
    CPU_PM_CPU_IDLE_ENTER_RETENTION assumes that no state is lost and
    hence CPU PM notifiers will not be called. We may need a broader
    change if we need to support partial retention states effeciently.
    
    On ARM64 based Qualcomm Server Platform we measured below overhead for
    for calling cpu_pm_enter and cpu_pm_exit for retention states.
    
    workload: stress --hdd #CPUs --hdd-bytes 32M  -t 30
            Average overhead of cpu_pm_enter - 1.2us
            Average overhead of cpu_pm_exit  - 3.1us
    Acked-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: default avatarPrashanth Prakash <pprakash@codeaurora.org>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    db50a74d
cpuidle.h 8.97 KB