qemu-e2k/target-ppc
David Gibson ed120055c7 Implement PAPR VPA functions for pSeries shared processor partitions
Shared-processor partitions are those where a CPU is time-sliced between
partitions, rather than being permanently dedicated to a single
partition.  qemu emulated partitions, since they are just scheduled with
the qemu user process, behave mostly like shared processor partitions.

In order to better support shared processor partitions (splpar), PAPR
defines the "VPA" (Virtual Processor Area), a shared memory communication
channel between the hypervisor and partitions.  There are also two
additional shared memory communication areas for specialized purposes
associated with the VPA.

A VPA is not essential for operating an splpar, though it can be necessary
for obtaining accurate performance measurements in the presence of
runtime partition switching.

Most importantly, however, the VPA is a prerequisite for PAPR's H_CEDE,
hypercall, which allows a partition OS to give up it's shared processor
timeslices to other partitions when idle.

This patch implements the VPA and H_CEDE hypercalls in qemu.  We don't
implement any of the more advanced statistics which can be communicated
through the VPA.  However, this is enough to make normal pSeries kernels
do an effective power-save idle on an emulated pSeries, significantly
reducing the host load of a qemu emulated pSeries running an idle guest OS.

Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
2011-04-01 18:34:57 +02:00
..
STATUS Update PowerPC emulation status file. 2007-10-25 21:38:16 +00:00
cpu.h Implement PAPR VPA functions for pSeries shared processor partitions 2011-04-01 18:34:57 +02:00
exec.h inline cpu_halted into sole caller 2011-03-13 14:44:21 +00:00
helper.c Virtual hash page table handling on pSeries machine 2011-04-01 18:34:55 +02:00
helper.h Correct ppc popcntb logic, implement popcntw and popcntd 2011-04-01 18:34:54 +02:00
helper_regs.h Replace always_inline with inline 2009-08-16 09:06:54 +00:00
kvm.c Parse SDR1 on mtspr instead of at translate time 2011-04-01 18:34:55 +02:00
kvm_ppc.c change all other clock references to use nanosecond resolution accessors 2011-03-21 09:23:23 +01:00
kvm_ppc.h Implement PAPR CRQ hypercalls 2011-04-01 18:34:56 +02:00
machine.c Parse SDR1 on mtspr instead of at translate time 2011-04-01 18:34:55 +02:00
mfrom_table.c find -type f | xargs sed -i 's/[\t ]$//g' # on most files 2007-09-16 21:08:06 +00:00
mfrom_table_gen.c find -type f | xargs sed -i 's/[\t ]*$//g' # Yes, again. Note the star in the regex. 2007-09-17 08:09:54 +00:00
op_helper.c Correct ppc popcntb logic, implement popcntw and popcntd 2011-04-01 18:34:54 +02:00
translate.c Parse SDR1 on mtspr instead of at translate time 2011-04-01 18:34:55 +02:00
translate_init.c Add POWER7 support for ppc 2011-04-01 18:34:55 +02:00