linux/arch/powerpc
Paul Mackerras ec25716508 KVM: PPC: Book3S HV: Make use of unused threads when running guests
When running a virtual core of a guest that is configured with fewer
threads per core than the physical cores have, the extra physical
threads are currently unused.  This makes it possible to use them to
run one or more other virtual cores from the same guest when certain
conditions are met.  This applies on POWER7, and on POWER8 to guests
with one thread per virtual core.  (It doesn't apply to POWER8 guests
with multiple threads per vcore because they require a 1-1 virtual to
physical thread mapping in order to be able to use msgsndp and the
TIR.)

The idea is that we maintain a list of preempted vcores for each
physical cpu (i.e. each core, since the host runs single-threaded).
Then, when a vcore is about to run, it checks to see if there are
any vcores on the list for its physical cpu that could be
piggybacked onto this vcore's execution.  If so, those additional
vcores are put into state VCORE_PIGGYBACK and their runnable VCPU
threads are started as well as the original vcore, which is called
the master vcore.

After the vcores have exited the guest, the extra ones are put back
onto the preempted list if any of their VCPUs are still runnable and
not idle.

This means that vcpu->arch.ptid is no longer necessarily the same as
the physical thread that the vcpu runs on.  In order to make it easier
for code that wants to send an IPI to know which CPU to target, we
now store that in a new field in struct vcpu_arch, called thread_cpu.

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Tested-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
2015-08-22 11:16:17 +02:00
..
boot Devicetree changes for v4.2 2015-07-01 19:40:18 -07:00
configs Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/scottwood/linux into next 2015-06-19 17:23:48 +10:00
crypto crypto: powerpc/md5 - use md5 IV MD5_HX instead of their raw value 2015-05-18 12:20:20 +08:00
include KVM: PPC: Book3S HV: Make use of unused threads when running guests 2015-08-22 11:16:17 +02:00
kernel KVM: PPC: Book3S HV: Make use of unused threads when running guests 2015-08-22 11:16:17 +02:00
kvm KVM: PPC: Book3S HV: Make use of unused threads when running guests 2015-08-22 11:16:17 +02:00
lib powerpc updates for 4.2 2015-06-24 08:46:32 -07:00
math-emu powerpc: Correct emulated mtfsf instruction 2014-04-07 10:33:11 +10:00
mm powerpc: Add plain English description for alignment exception oopses 2015-07-06 20:24:35 +10:00
net ppc: bpf: Add SKF_AD_CPU for ppc32 2015-02-20 15:19:43 -05:00
oprofile powerpc/oprofile: reduce mmap_sem hold for exe_file 2015-04-17 09:04:11 -04:00
perf powerpc/perf/24x7: Fix lockdep warning 2015-07-08 15:18:04 +10:00
platforms powerpc/powernv: Fix opal-elog interrupt handler 2015-07-06 20:24:36 +10:00
sysdev powerpc/ppc4xx_hsta_msi: Include ppc-pci.h to fix reference to hose_list 2015-07-06 20:24:36 +10:00
xmon powerpc updates for 3.20 2015-02-11 18:15:38 -08:00
Kconfig EDAC: Cleanup atomic_scrub mess 2015-05-28 15:31:53 +02:00
Kconfig.debug powerpc: Make STRICT_MM_TYPECHECKS a config option 2015-05-11 19:53:59 +10:00
Makefile powerpc: Don't use gcc specific options on clang 2015-06-11 17:33:05 +10:00
relocs_check.sh powerpc: Convert relocs_check to a shell script using grep 2015-03-23 14:47:39 +11:00