linux/arch/powerpc/platforms/powernv
Michael Ellerman e2186023f2 powerpc/powernv: Add support for POWER8 split core on powernv
Upcoming POWER8 chips support a concept called split core. This is where the
core can be split into subcores that although not full cores, are able to
appear as full cores to a guest.

The splitting & unsplitting procedure is mildly complicated, and explained at
length in the comments within the patch.

One notable detail is that when splitting or unsplitting we need to pull
offline cpus out of their offline state to do work as part of the procedure.

The interface for changing the split mode is via a sysfs file, eg:

 $ echo 2 > /sys/devices/system/cpu/subcores_per_core

Currently supported values are '1', '2' and '4'. And indicate respectively that
the core should be unsplit, split in half, and split in quarters. These modes
correspond to threads_per_subcore of 8, 4 and 2.

We do not allow changing the split mode while KVM VMs are active. This is to
prevent the value changing while userspace is configuring the VM, and also to
prevent the mode being changed in such a way that existing guests are unable to
be run.

CPU hotplug fixes by Srivatsa.  max_cpus fixes by Mahesh.  cpuset fixes by
benh.  Fix for irq race by paulus.  The rest by mikey and mpe.

Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2014-05-28 13:35:37 +10:00
..
eeh-ioda.c Revert "powerpc/powernv: Fundamental reset on PLX ports" 2014-05-20 10:20:49 +10:00
eeh-powernv.c powerpc/eeh: Use cached capability for log dump 2014-04-28 17:34:19 +10:00
Kconfig cpufreq: powernv: Select CPUFreq related Kconfig options for powernv 2014-04-07 14:35:28 +02:00
Makefile powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
opal-async.c powerpc/powernv: Fix endian issues with OPAL async code 2014-04-07 10:34:27 +10:00
opal-dump.c powerpc/powernv: Fix little endian issues in OPAL dump code 2014-04-28 13:11:24 +10:00
opal-elog.c powerpc/powernv: Fix little endian issues in OPAL error log code 2014-04-28 13:11:23 +10:00
opal-flash.c powerpc/powernv: Return secondary CPUs to firmware before FW update 2014-04-28 17:36:34 +10:00
opal-lpc.c powerpc/powernv: Fix OPAL LPC access in Little Endian 2013-12-13 15:55:15 +11:00
opal-memory-errors.c powerpc/powernv: Get FSP memory errors and plumb into memory poison infrastructure. 2013-12-09 11:41:14 +11:00
opal-msglog.c powerpc/powernv: Add OPAL message log interface 2014-04-09 12:53:19 +10:00
opal-nvram.c powerpc/powernv: Make OPAL NVRAM device tree accesses endian safe 2013-10-11 16:48:47 +11:00
opal-rtc.c powernv: Remove get/set_rtc_time when they are not present 2013-12-05 16:08:22 +11:00
opal-sensor.c powerpc/powernv: Fix endian issues with sensor code 2014-04-09 12:52:49 +10:00
opal-sysparam.c powerpc/powernv: Check sysparam size before creation 2014-04-28 13:08:49 +10:00
opal-takeover.S powerpc: Fix unsafe accesses to parameter area in ELFv2 2014-04-23 10:05:24 +10:00
opal-wrappers.S powerpc: Remove superflous function descriptors in assembly only code 2014-04-23 10:05:17 +10:00
opal-xscom.c powerpc/powernv: Fix indirect XSCOM unmangling 2014-02-28 19:15:49 +11:00
opal.c powerpc/powernv: Create OPAL sglist helper functions and fix endian issues 2014-04-28 13:11:23 +10:00
pci-ioda.c powerpc/powernv: Don't use pe->pbus to get the domain number 2014-04-28 17:35:14 +10:00
pci-p5ioc2.c PPC: POWERNV: move iommu_add_device earlier 2013-12-05 16:08:17 +11:00
pci.c powerpc/eeh: No hotplug on permanently removed dev 2014-04-28 17:34:32 +10:00
pci.h powrpc/powernv: Reset PHB in kdump kernel 2014-04-28 17:34:57 +10:00
powernv.h powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
rng.c powerpc: Make cpu_to_chip_id() available when SMP=n 2013-11-21 10:33:44 +11:00
setup.c powerpc: powernv: Implement ppc_md.get_proc_freq() 2014-04-28 17:36:43 +10:00
smp.c powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
subcore-asm.S powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
subcore.c powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
subcore.h powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00