linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH V3 0/3] PM/CPU: Parallel enalbing nonboot cpus with resume devices
@ 2014-09-25  8:32 Lan Tianyu
  2014-09-25  8:32 ` [RFC PATCH V3 1/3] " Lan Tianyu
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Lan Tianyu @ 2014-09-25  8:32 UTC (permalink / raw)
  To: peterz, mingo, rafael.j.wysocki, toshi.kani, akpm, tianyu.lan,
	ktkhai, fabf, laijs, srivatsa.bhat, ego, srivatsa, viresh.kumar
  Cc: todd.e.brandt, tipbot, wangyun, linux-kernel, linux-pm

This patchset is to parallel enabling nonboot cpus with resuming devices
during system resume in order to accelerate S2RAM. From test result on
a 8 logical core Haswell machine, system resume time reduces from 347ms
to 217ms with this patchset.

In the current world, all nonboot cpus are enabled serially during system
resume. System resume sequence is that boot cpu enables nonboot cpu one by
one and then resume devices. Before resuming devices, there are few tasks
assigned to nonboot cpus after they are brought up. This wastes cpu usage.

This patchset is to allow boot cpu to go forward to resume devices after
bringing up one nonboot cpu and starting a thread. The thread will be in
charge of bringing up other frozen cpus. The thread will be scheduled to
the first online cpu to run . This makes enabling cpu2~x parallel with
resuming devices.

Patch 2 is to change the policy of init MTRR/PAT for nonboot cpus. Original
code is to init all nonboot cpus' MTRR/PAT after all nonboot cpus coming online
during system resume. Now parallel enabling nonboot cpus with resuming devices and
nonboot cpus will be assigned with tasks before all cpus are online. So
it's necessary to do init MTRR/PAT just after one nonboot cpus comes online
just like dynamic single cpu online. 

Patch 3 is to guarantee that all cpus are online before changing cpufreq_suspended
flag in the cpufreq_resume() to avoid breaking cpufreq subsystem.

Lan Tianyu (3):
  PM/CPU: Parallel enalbing nonboot cpus with resume devices
  X86/CPU: Initialize MTRR/PAT when each cpu is online during system
    resume.
  Cpufreq: Hold cpu_add_remove_lock before change cpufreq_suspended flag

 drivers/cpufreq/cpufreq.c |  2 ++
 kernel/cpu.c              | 64 +++++++++++++++++++++++++++++++++++++++--------
 2 files changed, 55 insertions(+), 11 deletions(-)

-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-10-22  6:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-25  8:32 [RFC PATCH V3 0/3] PM/CPU: Parallel enalbing nonboot cpus with resume devices Lan Tianyu
2014-09-25  8:32 ` [RFC PATCH V3 1/3] " Lan Tianyu
2014-09-25  8:32 ` [RFC PATCH V2 2/3] X86/CPU: Initialize MTRR/PAT when each cpu is online during system resume Lan Tianyu
2014-09-25  8:32 ` [RFC PATCH V3 3/3] Cpufreq: Hold cpu_add_remove_lock before change cpufreq_suspended flag Lan Tianyu
2014-10-08 20:54 ` [RFC PATCH V3 0/3] PM/CPU: Parallel enalbing nonboot cpus with resume devices Peter Zijlstra
2014-10-08 22:01   ` Rafael J. Wysocki
2014-10-09  1:18   ` Lan Tianyu
2014-10-22  6:06     ` Lan Tianyu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).