]> git.proxmox.com Git - mirror_qemu.git/commit - include/hw/ppc/spapr.h
spapr: Add "memop" hypercall
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 18 Jun 2012 20:21:37 +0000 (20:21 +0000)
committerAlexander Graf <agraf@suse.de>
Sat, 23 Jun 2012 23:04:45 +0000 (01:04 +0200)
commitc73e3771ea79ab3898da3ba51ff6fc5b05948d85
treed72d67e012b6a59c2eaa6b26f3741550e25e6d5c
parenta4d8e8daee324e230b0155915f562743f4fff5d8
spapr: Add "memop" hypercall

This adds a qemu-specific hypervisor call to the pseries machine
which allows to do what amounts to memmove, memcpy and xor over
regions of physical memory such as the framebuffer.

This is the simplest way to get usable framebuffer speed from
SLOF since the framebuffer isn't mapped in the VRMA and so would
otherwise require an hcall per 8 bytes access.

The performance is still not great but usable, and can be improved
with a more complex implementation of the hcall itself if needed.

This also adds some documentation for the qemu-specific hypercalls
that we add to PAPR along with a new qemu,hypertas-functions property
that mirrors ibm,hypertas-functions and provides some discoverability
for the new calls.

Note: I chose note to advertise H_RTAS to the guest via that mechanism.
This is done on purpose, the guest uses the normal RTAS interfaces
provided by qemu (including SLOF) which internally calls H_RTAS.

We might in the future implement part (or even all) of RTAS inside the
guest like IBM's firmware does and replace H_RTAS with some finer grained
set of private hypercalls.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
docs/specs/ppc-spapr-hcalls.txt [new file with mode: 0644]
hw/spapr.c
hw/spapr.h
hw/spapr_hcall.c