linux/Documentation
Paul Mackerras 699a0ea082 KVM: PPC: Book3S: Controls for in-kernel sPAPR hypercall handling
This provides a way for userspace controls which sPAPR hcalls get
handled in the kernel.  Each hcall can be individually enabled or
disabled for in-kernel handling, except for H_RTAS.  The exception
for H_RTAS is because userspace can already control whether
individual RTAS functions are handled in-kernel or not via the
KVM_PPC_RTAS_DEFINE_TOKEN ioctl, and because the numeric value for
H_RTAS is out of the normal sequence of hcall numbers.

Hcalls are enabled or disabled using the KVM_ENABLE_CAP ioctl for the
KVM_CAP_PPC_ENABLE_HCALL capability on the file descriptor for the VM.
The args field of the struct kvm_enable_cap specifies the hcall number
in args[0] and the enable/disable flag in args[1]; 0 means disable
in-kernel handling (so that the hcall will always cause an exit to
userspace) and 1 means enable.  Enabling or disabling in-kernel
handling of an hcall is effective across the whole VM.

The ability for KVM_ENABLE_CAP to be used on a VM file descriptor
on PowerPC is new, added by this commit.  The KVM_CAP_ENABLE_CAP_VM
capability advertises that this ability exists.

When a VM is created, an initial set of hcalls are enabled for
in-kernel handling.  The set that is enabled is the set that have
an in-kernel implementation at this point.  Any new hcall
implementations from this point onwards should not be added to the
default set without a good reason.

No distinction is made between real-mode and virtual-mode hcall
implementations; the one setting controls them both.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
2014-07-28 15:22:17 +02:00
..
2014-04-07 16:36:02 -07:00
2014-03-11 06:55:49 -03:00
2014-05-05 15:32:05 +02:00
2014-02-28 15:12:08 -08:00
2014-02-10 16:01:40 -08:00
2013-11-27 11:03:38 -08:00
2014-06-11 08:35:34 -07:00
2014-05-05 15:32:05 +02:00
2013-10-16 13:35:02 -07:00
2014-04-18 16:59:52 -07:00
2014-04-18 14:20:48 +02:00
2014-05-12 17:08:33 -07:00
2014-05-05 15:32:05 +02:00
2013-11-14 11:04:40 -08:00
2014-03-21 13:16:58 +01:00
2013-12-02 14:48:28 +01:00
2014-03-21 13:16:58 +01:00
2013-12-02 14:45:19 +01:00
2014-05-05 15:32:05 +02:00
2014-05-05 15:32:05 +02:00
2014-05-05 15:32:05 +02:00
2013-09-05 16:36:21 -06:00