Message ID | 1559536263-16472-1-git-send-email-pkondeti@codeaurora.org (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | cpu/hotplug: Abort disabling secondary CPUs if wakeup is pending | expand |
Hi Rafael/Thomas, On Mon, Jun 3, 2019 at 10:03 AM Pavankumar Kondeti <pkondeti@codeaurora.org> wrote: > > When "deep" suspend is enabled, all CPUs except the primary CPU > are hotplugged out. Since CPU hotplug is a costly operation, > check if we have to abort the suspend in between each CPU > hotplug. This would improve the system suspend abort latency > upon detecting a wakeup condition. > Please let me know if you have any comments on this patch. Thanks, Pavan
diff --git a/kernel/cpu.c b/kernel/cpu.c index f2ef104..784b33d 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -1221,6 +1221,13 @@ int freeze_secondary_cpus(int primary) for_each_online_cpu(cpu) { if (cpu == primary) continue; + + if (pm_wakeup_pending()) { + pr_info("Aborting disabling non-boot CPUs..\n"); + error = -EBUSY; + break; + } + trace_suspend_resume(TPS("CPU_OFF"), cpu, true); error = _cpu_down(cpu, 1, CPUHP_OFFLINE); trace_suspend_resume(TPS("CPU_OFF"), cpu, false);
When "deep" suspend is enabled, all CPUs except the primary CPU are hotplugged out. Since CPU hotplug is a costly operation, check if we have to abort the suspend in between each CPU hotplug. This would improve the system suspend abort latency upon detecting a wakeup condition. Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org> --- kernel/cpu.c | 7 +++++++ 1 file changed, 7 insertions(+)