During idle injection period, CPU PM QOS class shall be ignored. This will indirectly influence the idle governors to choose the deepest idle states.
Signed-off-by: Jacob Pan <jacob.jun....@linux.intel.com> --- drivers/thermal/intel_powerclamp.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/thermal/intel_powerclamp.c b/drivers/thermal/intel_powerclamp.c index de90f89..62dbf95 100644 --- a/drivers/thermal/intel_powerclamp.c +++ b/drivers/thermal/intel_powerclamp.c @@ -51,6 +51,7 @@ #include <linux/debugfs.h> #include <linux/seq_file.h> #include <linux/sched/rt.h> +#include <linux/pm_qos.h> #include <asm/nmi.h> #include <asm/msr.h> @@ -483,6 +484,10 @@ static int start_power_clamp(void) clamping = true; schedule_delayed_work(&poll_pkg_cstate_work, 0); + /* Tell PM QOS all CPU constraints are ignored during idle injection */ + pm_qos_set_constraint_class_state(PM_QOS_CPU_DMA_LATENCY, + PM_QOS_CONSTRAINT_IGNORED); + /* start one thread per online cpu */ for_each_online_cpu(cpu) { struct task_struct **p = @@ -524,6 +529,9 @@ static void end_power_clamp(void) kthread_stop(thread); } } + /* make CPU PM QOS active again */ + pm_qos_set_constraint_class_state(PM_QOS_CPU_DMA_LATENCY, + PM_QOS_CONSTRAINT_AVAILABLE); } static int powerclamp_cpu_callback(struct notifier_block *nfb, -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/