powerpc/pseries: Add hooks to put the CPU into an appropriate offline state
authorGautham R Shenoy <ego@in.ibm.com>
Thu, 29 Oct 2009 19:22:53 +0000 (19:22 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 24 Nov 2009 03:33:04 +0000 (14:33 +1100)
commit3aa565f53c396914a9406388efaa238e9c937fc6
treec5860c47cb1c6545a07aad87004fd97af25959a4
parent69ddb57cbea0b3dd851ea5f1edd1e609ad4da04e
powerpc/pseries: Add hooks to put the CPU into an appropriate offline state

When a CPU is offlined on POWER currently, we call rtas_stop_self() and hand
the CPU back to the resource pool. This path is used for DLPAR which will
cause a change in the LPAR configuration which will be visible outside.

This patch changes the default state a CPU is put into when it is offlined.
On platforms which support ceding the processor to the hypervisor with
latency hint specifier value, during a cpu offline operation,
instead of calling rtas_stop_self(), we cede the vCPU to the hypervisor
while passing a latency hint specifier value. The Hypervisor can use this hint
to provide better energy savings. Also, during the offline
operation, the control of the vCPU remains with the LPAR as oppposed to
returning it to the resource pool.

The patch achieves this by creating an infrastructure to set the
preferred_offline_state() which can be either
- CPU_STATE_OFFLINE: which is the current behaviour of calling
  rtas_stop_self()

- CPU_STATE_INACTIVE: which cedes the vCPU to the hypervisor with the latency
  hint specifier.

The codepath which wants to perform a DLPAR operation can set the
preferred_offline_state() of a CPU to CPU_STATE_OFFLINE before invoking
cpu_down().

The patch also provides a boot-time command line argument to disable/enable
CPU_STATE_INACTIVE.

Signed-off-by: Gautham R Shenoy <ego@in.ibm.com>
Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Documentation/cpu-hotplug.txt
arch/powerpc/platforms/pseries/hotplug-cpu.c
arch/powerpc/platforms/pseries/offline_states.h [new file with mode: 0644]
arch/powerpc/platforms/pseries/smp.c