From b4d4fb25b9fbf1c40d46a8a1abfec57b2ce1ac70 Mon Sep 17 00:00:00 2001 From: Raghavendra Kakarla Date: Mon, 14 Sep 2020 22:06:56 +0530 Subject: [PATCH] cpuidle: lpm-levels: Core isolation check to get PM QoS latency Check the core isolation to get PM QoS request on that core while it going to lpm. If its an isolated core pass long latency so that core can select deeper lpm state. Change-Id: Iafbfb75c484d602eb37bcd702e83371fd97362fd Signed-off-by: Raghavendra Kakarla --- drivers/cpuidle/lpm-levels.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/cpuidle/lpm-levels.c b/drivers/cpuidle/lpm-levels.c index 12953e396fd4..2a800fd0fed1 100644 --- a/drivers/cpuidle/lpm-levels.c +++ b/drivers/cpuidle/lpm-levels.c @@ -149,7 +149,8 @@ static int lpm_cpu_qos_notify(struct notifier_block *nb, int cpu = nb - dev_pm_qos_nb; preempt_disable(); - if (cpu != smp_processor_id() && cpu_online(cpu)) + if (cpu != smp_processor_id() && cpu_online(cpu) && + !check_cpu_isolated(cpu)) wake_up_if_idle(cpu); preempt_enable(); @@ -657,6 +658,8 @@ static inline uint32_t get_cpus_qos(const struct cpumask *mask) uint32_t latency = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE; for_each_cpu(cpu, mask) { + if (check_cpu_isolated(cpu)) + continue; n = cpuidle_governor_latency_req(cpu); if (n < latency) latency = n;